アプリ版:「スタンプのみでお礼する」機能のリリースについて

教えてください。gradualというプログラムをfortran90で作ろうとしています。どういうのかといいますと、
二人のplayerがいて、CかDを選ぶゲームです。このゲームを繰り返し行います。(10回、100回などなど)そこで、私は最初にCを選びます。そして、相手が前回の対戦でCを選ぶかぎり、私もCを選び続けますが、いったん相手がDを選んだら、私は、Dを一回、Cを2回つつけてえらびます。そして、相手が、Dを2回目として選んだときには、私は、Dを二回Cを2回。相手がDをn回選んだときには、私は、DをnかいCを2回選びます。

例 私: C C D C C C C D D C C C C D D D C C C
相手: C D C C C C D C C C C C D C C C C C C

 私: C C D C D D C C D D D C C D D D D C C
 相手: C D C D C C D C C C D C C C C C C C C

どうか、このプログラムの作り方を教えてください。

A 回答 (1件)

変数を3つ使います。


1つめの変数には、相手が'D'を出した回数を記録します。
2つめの変数には、自分が'D'xn+'CC'を出した回数を記録します。
3つめの変数には、自分が'D'xn+'CC'を出す一連の動作がどこまで進んでいるかを記録します。

つまり、相手が'D'を出すごとに変数1は1づつ増加します。
変数1が変数2と異なる場合には、'D'xn+'CC'を出す動作を開始、または継続しなければなりません
変数3では、'D'を出すべき回数からカウントし始めて、'D'をn回出した時に変数3が0になります。変数3が0以下の場合は、'C'を出し、変数3が-2(Cを2回出した)になった時に、変数3の役目は終了します。(変数2に1加わります)


次の様な感じになります。
(※このままプログラムに書き直せば出来上がってしまうので、出来れば上の文章だけで解いて見て下さい。)


変数1・2を0(初期値)にする。
変数3を-2にする。
変数XとYを初期値にする。

:ROOPここから。
 相手の入力をXとする。
 もしXが'D'の時、変数1を1増加させる。
 もし変数1と2が異なる場合、'D'xn+'CC'を出す一連の処理に向かう。
 そうではない場合は、'C'を出す。
:ROOPに戻る。

'D'xn+'CC'を出す一連の処理:
 もし変数3が-2の場合、'D'を出し始める。同時に、変数3を'D'を出す回数n-1にする。(1回目の'D'は既にこの時点で出す)
 もし変数3が0より大きい場合、'D'を出して、変数3を1回引く。
 もし変数3が0の場合、'C'を出す1回目の処理に入る。変数3を1引く。
 もし変数3が-1の場合、'C'を出す2回目の処理に入る。変数3を1引いて、一連の処理が終了した印に変数2に1加える。
元の処理に戻る。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!