じゃんけんをプログラミングする 2日目
昨日に引き続きじゃんけんのプログラムに取り組んだわけですが見事に玉砕しました。あちらを立てればこちらが立たずという具合に動いたと思ったら他の箇所でトラブル発生といった流れが数時間も続いて気力が底をつきました。このまま続けても先に進みません。もしかしたら、上手く動いてくれないのは根本的な考え方が間違っているという可能性もあるので現状を書き出すことにしました。
まず現状のブログラムはこうです。
まだキーボードからの入力が1の場合しか作っていませんが実行するとバグが2つ確認できました。
- CPUが最初にグーの手以外を出した場合は何度も手を出してくること
Hantei.java
にある「あいこです」「あなたの勝ちです」「あなたの負けです」というメッセージが表示されない場合がある
この2つと1時間以上にらめっこした挙句に負けました。
じゃんけんのプログラムの考え方
頭を整理するために、じゃんけんプログラムに対してどう考えているのかを書き出します。
CpuHand
クラスでRandom
メソッドを使いCPUの手を1~3の数値で決定するswitch
文で1~3の数値に応じたCPUの手を表示するreturn
でCPUの手を返す- キーボード入力された1~3の数値に応じた手を
Hantei
クラスで利用する Hantei
クラスでキーボード入力の数値を引数として受け取りswitch
文で数値に応じた手を表示するHantei
クラスでif文を使い勝敗を判定する。その際CPUの手であるreturn
の戻り値の中を見て勝敗の材料とする- キーボード入力された数値が1の場合CPUのランダム数値を比較して同じならあいこ、2ならユーザーの勝ち、3ならユーザーの負けとし、キーボード入力された数値を2の場合、3の場合もそれぞれ
if
文で判定する
文章化するとなにか間違っているような気がしないでもないです。いまだ解決策は見えていませんが明日もチャレンジしてみるつもりです。
あとがき
関係ないのですがGistに書いた前日のプログラムを編集したところ当然のようにブログに表示されたGistにも反映されてしまいました。それはそうですよね。というわけで過程は残しておくことにして新しいGistファイルを作りました。Markdown記法も含めて、わからないことだらけで脳みそがパンクしそうです。でも楽しい!