じゃんけんシミュレータ作ってみた
こんにちは。駆け出しエンジニアの太鼓眼鏡です。
まだまだ研修中の身ですが、書いたものや学んだことをシェアしていきます。
今日は研修の課題で作成した「じゃんけんシミュレータ」について紹介します。
仕様言語はJava、一応オブジェクト指向を意識したつもりです。
ファイルはこちらから御覧ください。
github.com
コメント等も残しているので、詳細はそちらから。 一応記事下にも添付してありますが、長いです。
前提条件
- 5人でじゃんけんを行う
- 1〜5位まで全員に順位がつくまでに、何回じゃんけんをするかを算出する
- 1000回シミュレーションを行い、その平均値を出力する
- 複数グループに分かれてじゃんけんを行うときは、同時にじゃんけんを行う
フローチャート
各ファイルの説明
Main.java
ゲームの全体の流れ
Player.java
じゃんけんに参加するプレイヤークラス
*フィールド、メソッドはそれぞれ1つずつ。
- フィールド:
- - rsp = じゃんけんの手。0: rock, 1: scissors, 2: paperとする
- メソッド:
- - setRsp()=引数無しで、0~2の乱数をrspに代入する
Referee.java
じゃんけんの結果を判定する審判クラス
- フィールド:
- - num = シミュレーション回数。コンストラクタで設定
- - total = じゃんけんを行う総人数。コンストラクタで設定
- - group = 各グループの人数。詳しくは後述
- - win, lose = それぞれ各ゲームの勝敗人数
- - total = じゃんけん1回が終了するまでの回数。詳しくは後述
- - total_count = じゃんけん終了までの総回数
- - r, s, p = それぞれグー、チョキ、パーの人数
- メソッド:
- - 各セッター、ゲッター:基本は通常通りなため割愛
- - setGroup = groupを初期化
- - setTotal_count = count[0]とcount[1]を比較して、大きいほうをtotal_countに代入
- - setCount = countを1増やす
- - 初期化用メソッド
- - clearRsp = じゃんけんの手を初期化
- - clearCount = countを初期化
- - じゃんけん用メソッド
- - countRsp = r,s,pがそれぞれ何人いるか数える
- - judge = 勝敗判定、あいこならループ続行指示
- - add = 勝敗人数をgroupに追加
- - remove = じゃんけんを行ったgroupを削除
- - シミュレーション用メソッド
- - calcAvg = 総回数の平均値を算出する
結果
今回課題では5人という指定がありましたが、n人でも利用出来るシミュレータを作成することを意識しました。
最終的に、プログラムとしては可能ですが、PCのスペック的に処理が追いつかないものになりました。20人ほどで結果がでなくなります。
またその仕様を実現するために、ArrayListを用いています。
今後に向けて
- もう少し細かく説明する記事をあげたい
- いざ文章にしてみるとフローチャートの流れが自然じゃない箇所が散見されるので修正加えたい
- ArrayListについてもう少し詳しく勉強しときたい
- 今回人数増えると結果が出なくなるので、もっと効率的なフローで回したい 以上!精進あるのみ。