1.趣旨
祝・成人の日。ご成人おめでとうございます。
みなさんがこれから活躍できるよう応援し、ご多幸を願っています。
さて、今日からゲーム作りに挑戦してみます。プログラミング上達のコツは、理屈から入らず、自分で作ってみることです。作ったプログラムを動かしてみて、思った通りに動かなかったら原因を調べて・・・の繰り返しでスキルは磨かれていきます。本を読むだけでは、プログラミング言語を「使いこなす」ことはできませんので、今回のような挑戦がみなさんのプログラミングのきっかけになっていただけると嬉しいです。
まずはどんなゲームを作るか決めます。ソフトウェアの機能や仕様をまとめたものを要件定義といい、ゲームに限らず情報システムやソフトウェアの開発で最初に行う作業です。これまでに紹介したJavaの開発技法であれば、CUIのゲームを作れると思ったので、下記に要件をまとめました。
また、今回は日本の利用者向けのゲームを作りますので、日本語のみでブログを書いていきます。
2.要件定義
① 1 〜 13の中でランダムな数字が表示される。その数字を除いた1 〜 13の中で、次に出てくる数字がそれよりも大きいか小さいかを予想するゲーム。
大きいと予想する場合は「b」を入力し、小さいと予想する場合は「s」を入力。他の文字を入力した場合は、メッセージで警告された後に再入力する。
② 10 Goldを所持した状態でゲームスタート。0 Goldからbetできる。
betするGoldが所持Goldよりも多い場合は、メッセージで警告された後に再入力する。0未満や数字以外を入力された場合も、警告された後に再入力する。
③ 予想が当たれば、betしたGoldが2倍になって返ってくる。予想が連続して当たれば、2倍、4倍、8倍、16倍、32倍・・・のように倍率が上がる。当たりの連続が途絶えた場合、再度2倍から倍率が上がる。
③ 最大7回挑戦でき、7回の挑戦を終えるか、もしくは所持Goldが0になったらゲーム終了。最高で2,684,354,560 Goldを獲得できる。
④ ゲームに挑戦して獲得したGoldのTop 5を記録し、ゲーム開始前とランキング入りした時に表示する。表示する内容は、順位、プレイヤーの名前、Gold。
⑤ ゲーム終了時に所持GoldがTop 5に入っていれば、プレイヤーの名前を入力してもらう。入力文字の11文字目以降は切り捨てる。
⑥ ゲーム終了後、再挑戦するかどうかをYes or Noで選択させる
(yかnを入力)。再挑戦し続ける間は、Top 5の記録を保持するが、Noが選択された場合はプログラムを終了してTop 5の記録は消去する。
⑦ このゲームはWindowsのPCで利用する。プログラムはJavaで開発する。
プログラム中のコメント欄は日本語も可。
⑧ DBやファイルは利用しない。
個人端末で遊ぶゲームであり、外部へのネットワーク通信は行わない。
⑨ ブラウザは利用しない。Windowsのコマンドプロンプト上で稼働し、CUIの入出力で遊ぶゲームである。
上記のような要件を満たすゲームをこれから作っていきます。
続いて、ユーザーインタフェースの設計工程である外部設計を行います。
3.外部設計
(1)ゲーム起動時
①ゲームのタイトルを表示する。
②ランキング(Top 5)を表示する。
③所持Goldが10であることを表示する。
④ゲーム開始のメッセージと、何回目の挑戦であるかを表示する。
続いて、1〜13の中からランダムな数字を表示する。
⑤betするGoldの入力を求めるメッセージを表示する。
⑥Goldの入力完了後、次の数字がBigかSmallかのメッセージを表示する。
(2)予想が当たった時
①ランダムな数字を表示後、プレイヤーが勝ったことをメッセージ表示する。
②betしたGoldに倍率を掛け、所持Goldに加算して表示する。
③挑戦が最後でなければ、何回目の挑戦であるかを(1)と同じように表示してゲームを進める。
(3)予想が外れた時
①ランダムな数字を表示後、プレイヤーが負けたことをメッセージ表示する。
②所持GoldからbetしたGoldを減算して表示する。
③挑戦が最後でなければ、何回目の挑戦であるかを(1)と同じように表示してゲームを進める。
(4)7回の挑戦を終えた時
①所持Goldを表示した後、ゲーム終了のメッセージを表示する。
②所持GoldがTop 5に入った場合、そのことをメッセージ表示する。
③プレイヤーの名前を入力してもらうように、メッセージ表示する。
④プレイヤーの名前が入力された後、Top 5のランキングを表示する。
1位から昇順に、順位、プレイヤー名、Goldを表示する。
⑤再挑戦するかどうかを、メッセージで表示する。
(5)再挑戦した時
①yが入力された後、所持Goldが10であることを表示して、(1)の④以降と同様に表示する。
(6)所持Goldが0になった時
①Goldが0になり、ゲーム終了であることをメッセージ表示する。
②再挑戦するかどうかをメッセージ表示する。
以上が外部設計です。プレイヤーの操作に対してゲームがどのように振る舞うのかが分かるようになってきました。
次回は内部設計の工程に移ります。