Der Mond Das Meer



↓の続き

#include<iostream>
#include<cmath>
#include<cstdlib>
#include<fstream> //後々別ファイルからスコアを読み取ったりするかもしれないので。
#include<string>   //同様

using namespace std;

int main()
{
int bet,coin=50;
int recent,next,result,rate; //コインが一定枚数を超えるとレートをいじるか?
int hl,y_n; //hl=high or low / y_n=yes or no
int flag=0; //bool型でもよさそ

cout<<"今表示されている数字と次の数字の大きさを比較するゲームを行います。"<<endl
<<"持ちコインは50枚からのスタートとなり、BETの枚数に制限はありません。"<<endl
<<"ドローはそのまま引き分けとなります。"<<endl
<<"それでは頑張って下さい。よく考えれば(ほぼ)必勝法があります。"<<endl;


do{
//////////////bet部分/////////////////
while(1)
{
cout<<"何枚賭けますか?"<<endl
<<"(現在のコイン枚数:"<<coin<<"枚)"<<endl;
cin>>bet;


if(bet>coin || bet<=0)
cout<<"数値異常です。再入力して下さい。"<<endl;
if(bet<=coin && bet>0)
break;
}
///////////////ここまで/////////////////

///////////////予想&next代入部分////////////
srand((unsigned)time(NULL)); //実行の度に乱数が変化

if(flag==0) //最初の実行時はrecentに何も入っていない為。
recent=rand()%10+1;
if(flag==1) //2回目以降は、前回のnextが表示される。
recent=next;

cout<<"今の数字は「"< cout<<"次の数字が大きい場合は1、小さい場合は2を入力して下さい。"<<endl<<endl;
///////////////ここまで////////////////////

//////////別関数で構築可能?判定部//////////////
while(1)
{
cin>>hl;
if(hl!=1 && hl!=2)
cout<<"数値異常です。再入力して下さい。"<<endl;
if(hl==1 || hl==2)
break;
}

next=rand()%10+1;
cout<<"次の数字は「"<<next<<"」です。"<<endl;

if(next>recent) result=1; //大
if(next<recent) result=2; //小
if(next==recent) result=3; //ドロー
///////////////ここまで////////////////

/////////////コイン枚数変更部///////////

if(hl==result && result!=3)
{
cout<<"おめでとうございます。"<<endl;
coin+=bet;
}

if(hl!=result && result!=3)
{
cout<<"残念でした。"<<endl;
coin-=bet;
}
if(result==3)
{
cout<<"ドローです。"<<endl;
}
/////////////ここまで/////////////////////

/////////////続行か止めるか////////////////
if(coin<=0)
{
cout<<"コインが無くなったのでゲームオーバーです。"<<endl;
break;
}

while(1)
{
cout<<"続けますか?"<<endl<<"続ける場合は1を、止める場合は2を入力して下さい。"<<endl;
cin>>y_n;
if(y_n==1 || y_n==2) break;
if(y_n!=1 && y_n!=2)
cout<<"数値異常です。再入力して下さい。"<<endl;
}
if(y_n==2)
{
cout<<"終了します。"<<endl;
break;
}
//////////////ここまで//////////////


flag=1; //1回目と同じ処理をしないようにフラグを立てておく。

}while(1);
////////////結果表示部分////////////
cout<<"最終獲得枚数は"<<coin<<"枚です。"< <<"お疲れさまでした。"<<endl;

return EXIT_SUCCESS;
/////////////ここまで//////////////

}


フローチャート

 1.宣言やら。

 2.ゲームの趣旨説明

 3.ベット(持ちコインより多かったり、0枚以下を賭けると数値異常が出る)

 4.現在の数字(recent)の表示と、変数nextに実行の度に変化する乱数を代入
   (一度目の実行時(flag==0の時)にはrecentに何も入っていないので、nextの代わりにrecentに乱数を代入。
    二度目の実行以降は、前回のnextがrecentに代入される)

 5.予想と判定

 6.コイン枚数変化(coin+=bet,coin-=bet)

 7.継続確認

 8-1.継続(y_n == 1)ならflagに1を代入して3へ。

 8-2.終了なら9へ。

 9.結果を表示して終了。


依然としてcinの時に整数値以外を入れた場合はwhile文が暴走してしまいますが
整数値を入れた場合はスムーズに動くようになりました。

main関数以外の関数も使わないといけないんですが
main関数に全部書く事しか出来ないんで、これから調べないと・・・。

問題点としては

別ファイルから歴代最高記録を呼び出したり、終了時に更新出来る様に出来ないか?
(授業の進み具合次第?)

歴代1位~5位の表示等も可能?

整数値以外を入力した場合のエラーの原因は何なのか?(cinを無視している?)

main関数以外での処理は出来るか?


こんなもんですかねー・・・
どっか改良出来そうなトコがあれば指摘お願いします。

必勝法に気づいた人はいるかな?w
[PR]
by SKAD_LTA | 2006-06-29 12:10 | Diary
<< 最近流行り ぬおー >>


あぶないよ!
S M T W T F S
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
カテゴリ
以前の記事
お気に入りブログ
LINKS
最新のトラックバック
メガてりやき
from みんなが注目してるコトとは?
ベホマの矛盾点(ドラクエ..
from 2ちゃんねる@ニュー速VIP..
ライアーゲーム
from ライアーゲーム
ライアーゲーム
from ライアーゲーム
YouTube動画そのま..
from YouTube動画芸能界の000
10/07(土) ツイン..
from リーマンスロッターの憂鬱
歴史問題、永遠に言い続け..
from 湘南のJOHN LENNON..
自動車税を徹底解説!車の..
from 自動車税を徹底解説!車の税金..
漫画づけ
from KA.ZA.MI流 弱くても..
やべーハイセンス
from 空もよう
検索
その他のジャンル
ファン
記事ランキング
ブログジャンル
画像一覧