• ベストアンサー

アドバイスください

現在、じゃんけんゲームを作っています。 whileとifを組み合わせて基本的なゲームはできたのですが次のような機能を つけたいのですがどのようにしたらいいのでしょうか?? 例えば10回勝負で8回目で勝ったらゲームを続行するかどうか尋ねて ゲームを続行するのなら次は12回勝負でゲームを続行するという機能です。 continueを使ってみたところ残り2回勝負からゲームを続けることになりました。 わかりにくい説明ですみません。 アドバイスよろしくお願いします。

  • yuu789
  • お礼率8% (153/1886)

質問者が選んだベストアンサー

  • ベストアンサー
noname#50176
noname#50176
回答No.2

こういう感じでいいのでしょうか・・・? #include <stdio.h> #include <conio.h> void main() { int max=10,count=1,win=0; while (max+1-count) { count回目のジャンケン処理; if (勝ったら) win=-1;else win=0; printf("\r\n"); if (!(max-count-2)&win) { printf("続行しますか? 1-YES / 2-NO "); rep: switch (_getch()) { case '1': max+=2;printf("\r\n"); break; case '2': count=max+1;printf("\r\n");continue; default: goto rep; } } count++; } printf("ゲーム終了\r\n"); }

その他の回答 (1)

  • dsuekichi
  • ベストアンサー率64% (171/265)
回答No.1

どういうループ(コード)か分かりませんが、 ・最大回数までループ(カウントアップ)しているなら、最大回数を+2、 ・残り回数が0までループ(カウントダウン)しているなら、残り回数を+2、 すれば、よさそうですけど・・・

関連するQ&A

  • バレンタイン前…困った(>_<;)

    またまた前に相談した男子についてです! 最近バレンタインあげる約束したり、 部活の定休日に、じゃんけんで勝ったら一緒に帰る約束してます♪(ちなみにバレンタインも) んでも、この間初めて1回勝負したら負けて本当に帰ってくれなかったんです。 次は3回勝負にしてくれるみたいなんですが… この調子でバレンタインも負けたら帰れないと思いますか??!泣 あとじゃんけん、「こうすると勝てるっ!!!」とかもあったら教えてくださいm(_ _)m

  • 高1数学の問題

    高1の問題です。 お願いしますm(__)m A、Bがジャンケンをして、どちらかが3回先に勝ったところで止めるゲームを考える。引き分けはないものとすると、勝負の分か方は何通りあるか。

  • 「100円総取りじゃんけんゲーム」は賭博になるのですか?

    「100円総取りじゃんけんゲーム」は賭博になるのですか? 宴会ゲームの定番で「100円総取りじゃんけんゲーム」というのがありますよね。 あれは「ギャンブル」になるのですか? (みなさん知っていると思いますが、一応ルールを説明します。1人あたり100円を用意し、 二人ペアを組んでじゃんけんをします。負けたほうが勝った人に100円を渡し、負けた人は 座ります。勝った人は今度は勝った人と組んでじゃんけんをし・・・というのを繰返す シンプルなゲーム。最後に勝ち残った人は、参加者が50人なら4900円手に入れることが できます。) 今日知人と話していたら「勝負事にお金を絡めたら全て賭博行為だよ」と言われました。 そうなんでしょうか?

  • C言語の基礎の基本的な問題と解答が載っているサイトを教えてください。

    C言語の基礎の基本的な問題と解答が載っているサイトを教えてください。 具体的には、最初から、printf、scanf、if、for、while、do-while、break、continue、switch-case、配列、それらを使った計算問題などです。 よろしくお願いします。

  • ’じゃんけん’をするプログラムをつくるには?

    JAVAで'じゃんけん'を3回勝負して勝ち負けを決めるゲームアプレットを作成したいのですが、 JAVA初心者の私に少し分かりづらいので、 作成経験がある方、サンプルなどのデータ提供お願いします。 結構困ってます。

    • ベストアンサー
    • Java
  • PHPのif文でその処理を途中で抜けるにはどうすればよいでしょうか?

    PHPのif文でその処理を途中で抜けるにはどうすればよいでしょうか? for文やwhile文ではbreakやcontinueなどが使えるようですが、if文にはないのでしょうか? 条件分岐がいくつかあって、その一つを途中で抜けて次の条件分岐へと移行したいのですが、 exitを使ってしまうと、次へ行かずに処理が中止されてしまいますし、 どのようにすればよいのか分からず困っています。何かよい方法はないでしょうか?

    • ベストアンサー
    • PHP
  • じゃんけんと確率(数学A)

    a、b、cの3人でじゃんけんをします。 一回じゃんけんに負けたら、その時点でその人は退場です。 最後の一人になるまでじゃんけんを繰り返し、残った人が勝者とします。 あいこの場合もじゃんけんを一回行ったものと見なします。 2回目のじゃんけんで勝者が決まる確率を求めたいのですが、いまいちわからない点があります。 勝者の決め方は2パターンあります。 (1)1試合目で3人が残って次の試合で1人が勝つ場合。 (2)1試合目で2人が残って次の試合で1人が勝つ場合。 まず(1)について考えます。 1回のじゃんけんで3人が残る確率は、9/27=1/3 1回のじゃんけんで勝者が決まる確率も上と同じです。 これらを掛け合わせて求まります。 次は(2)です。 初戦で2人が勝つ確率は、9/27=1/3 2試合目で2人が違う手を出す確率は、6/9=2/3 これらを掛け合わせて求まります。 最後に、(1)と(2)は背反なので足して答えがでます。1/3です。 私は確率を求めるときは、全事象(分母)はいくつか、求める事象(分子)はいくつか?ということを気にしてしまうのですが、どうもこの問題はいまいち理解できません。 以下が質問です。 私の考え方でいくとまず(1)で9/27×9/27という式から、全事象は27×27だなということを考えるのですが、これはおかしいのではないでしょうか? この27×27通りには、初戦で試合が終わったのにも関わらず次の試合を行っている場合の数も含まれていますよね? 確率の分母って全部同様に起こりうる事象で構成されていると思うんですが、ゲームのルール上あり得ないことも含まれていることになりおかしいのではと思いました。 このことについて説明がほしいです。 次に、最後に(1)と(2)を足していますが、なぜ足せるのでしょうか? 27×27と27×9じゃ分母が違いますよね? (1)と(2)で分けて答えを出すべきだと思うんですが・・・。 足すということは通分して分母を揃えるということなので、27×9に3をかけるということです。 でもいきなり全事象の数(分母)が増えるってことはありえませんよね? すでに27×9の時点で全事象は出ているのにどう増えるというのでしょう。 このことについての説明もほしいです。 以上が質問です。 長文で申し訳ありません・・・。 よろしくお願いします_(._.)_

  • if ((式 )のアドバイス

    いつもこの投稿欄でお世話いただいております。 今C言語の勉強中なのですが、Cの知識が乏しい為、 簡単なところで、理解に苦しんでしまいます。 今回質問の下記ソースコードは、あるサンプルプログラムの 抜粋部分になります。 =================================================== count++; | 省略   | while(1) { if(count >=100) { count = 0; data++; if(data > 9) data = 0; output(LED[data]); } } ========================================= 以上while(1)部分の解釈になりますが、 1.もし、countの値が100より小さい場合は if(count>=100)式が成り立たないので それ以降の{}内の処理を実行せず、ループを ぬける。 2.もし、countの値が100になった場合は   if(count>=100)式が成立するので,以降   {}の中の処理、countに0を代入、    data変数を1つインクリメントし、次のコードへ、    if(data>9)もし,dataの値が9より小さい場合は    data = 0 output(LED[data])   は実行しない。 3.とすれば、data++した値が、10にならないと   data =0,とoutput(LED[data])は実行されない。 と解釈しているのですが、実験回路で試験すると サンプルコードからは、countが100になる毎に output(LED[data])が毎回実行されている様に なっています。 もう少し、ソースコードの説明すると、 if(count>=100)が成立するには1秒の時間がかかります。 そして、if(count>=100)式が10回(10秒)成立すれば if(data>9)のdata値も10になり成立するので output(LED[data])が10秒後に1回実行されると考えて、 しまいますが、実際では、1秒毎に[LED]表示が繰返されてます。 もちろん、その結果では正しいのですが、自分の理解とは違っています。 これまでの解釈の何処に問題があるのでしょうか? 単純な質問になりますが、アドバイスどうか宜しくお願いいたします。

  • じゃんけんに弱い・・・ 

    テニススクールに通っています。 練習の最後に試合をします。メンバーは大抵12人くらいですが、じゃんけんで一番のペアと二番のペアが良いほうのコートで試合をし、三番と四番のペアがちょっと劣るコートで試合をし、五番目のペアが良いほうのコートで順番待ち。六番目が劣る方のコートで順番待ちとなります。 私は通常、もう一人の熟年とペアを組むのですが、相方も私もじゃんけんに猛烈に弱くどちらがじゃんけんに参加しても大抵びりです。最初は笑って済ませていましたが、毎回びりではゲーム回数が少なくなります。強くなくてもいいからせいぜい勝ったり負けたりするくらいの普通の強さになりたいです。 じゃんけんに強いかた、勝つ秘訣を教えてください。東京では調子をとるために「最初はグー、じゃんけんぽん」と言って勝負をやります。この次に出すのはなにが良いのでしょう? そのほか秘訣があればご伝授ください。

  • アドバイスお願いします

    ライティングの問題なのですが、あっているかアドバイスしてくれると助かります。 問、次の文の( )にthat/since/before/ifのいずれかを入れよ。また日本訳も答えよ。 I have lived in this town ( ) I was born. 脚注の言葉:ふつう現在完了時制とともに用いられる。 自分で考えて出した答えは、 beforeとifを当てはめると、日本訳がおかしなことになるので除いて、thatかsinceに絞りました。 日本訳的にはsinceの方があってるように感じましたが、どうでしょうか? アドバイスしていただけると助かります。

専門家に質問してみよう