プログラミングいちねんせい

プログラミング初心者が優雅にもがく軌跡です

じゃんけんをプログラミングする 2日目

昨日に引き続きじゃんけんのプログラムに取り組んだわけですが見事に玉砕しました。あちらを立てればこちらが立たずという具合に動いたと思ったら他の箇所でトラブル発生といった流れが数時間も続いて気力が底をつきました。このまま続けても先に進みません。もしかしたら、上手く動いてくれないのは根本的な考え方が間違っているという可能性もあるので現状を書き出すことにしました。

まず現状のブログラムはこうです。

まだキーボードからの入力が1の場合しか作っていませんが実行するとバグが2つ確認できました。

  1. CPUが最初にグーの手以外を出した場合は何度も手を出してくること
  2. 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記法も含めて、わからないことだらけで脳みそがパンクしそうです。でも楽しい!