前提・実現したいこと
今私は研修でJavaを使って「じゃんけんゲーム(先に3勝したら勝ち)」という内容のプログラミングをしております。
上記の内容の動作は完了しており、付け加える形として「2連続で勝利した場合、その方に-1pt」という処理を加えたいと考えております。
下記はメインのメソッドだけを貼り付けさせて頂きました。
//勝ち負け判定のどこかに「2連続で勝利した場合、同時にその方に-1pt」の処理を打ち込むであろう。というところまでは考察できるのですが、
ifを使うのか、switchを使うのかといった部分や条件式の中身はどのように打ち込めばいいのか分かりません。
■■■追加詳細■■■
「2連続で勝利した場合、同時にその方に-1pt」
例えば、
1回戦目 playerが勝ち:CPUが負け スコア【1pt:0pt】
2回戦目playerが勝ち:CPUが負け スコア【2pt:0pt】
しかしここでplayerが2連勝なので、-1pt スコア【1pt:0pt】
3回戦目
・
・
・
というような流れの処理となるようにと作りたいです。
2連勝して-1ptの処理が発生した後は、連勝のカウントをリセットし、続きを始めます。
2連勝後にまた勝っても何もなくその後2連勝するとまた-1ptされ、その場合は一旦スコアが「player 3pt: CPU 0pt」となりますが、表示されるスコアは「player 2pt: CPU 0pt」となるようにしたいと考えております。
根本的に間違ったコードを書かいているのか、ベースはあっているのか、要素が足りないなどを教えて頂ければと存じます。
■■■■■■■■■■■■■■
なにぶん、初心者なもので質問の仕方に不備があったり、もっと詳しくといったことでも出来ればコメント頂ければと思います。
どなたかよろしければ、回答をお願い致します。
該当のソースコード
int lastWinner = 0; //もし、playerが「勝ち」ならlastWinner=1のフラグが立つ/* if(result == S結果.勝ち) { lastWinner = 1; } //もし、1のフラグかつ勝負の結果が勝ちならplayerは-1pt、そしてフラグをリセット/* if(lastWinner == 1 && S結果.勝ち) { playerPt--; lastWinner = 0; } //もし、playerが「負け」ならlastWinner=2のフラグが立つ/* if(result == S結果.負け) { lastWinner = 2; } //もし、2のフラグで、かつ勝負の結果が負けならCPUは-1pt、そしてフラグをリセット/* if(lastWinner == 2 && S結果.負け) { cpuPt--; lastWinner = 0; } //S結果のメソッド/* package janken; import janken.Enums.S手; import janken.Enums.S結果; public class Janken { /** Playerの手 */ private S手 playerHand; /** CPUの手 */ private S手 cpuHand; /** * コンストラクタ * * Playerの手と、CPUの手をセット * @param playerHand Playerの手 */ Janken(S手 value) { this.playerHand = value; this.cpuHand = this.getRandomHand(); } /** * 勝ち負け判定 * * @return 結果 */ public S結果 judge() { //勝ち if((this.playerHand == S手.グー && this.cpuHand == S手.チョキ) || (this.playerHand == S手.チョキ && this.cpuHand == S手.パー) || (this.playerHand == S手.パー && this.cpuHand == S手.グー)) { return S結果.勝ち; } //あいこ if(this.playerHand == this.cpuHand) { return S結果.あいこ; } //上記以外は負け return S結果.負け; } /** * PlayerとCPUの手を返却(表示用) * * @return PlayerとCPUの手を返却 */ public String getInputHand(){ return "Playerの手:" + this.playerHand + "、CPUの手:" + this.cpuHand; } /** * ランダムの手を返却 * * @return コンピューターの手 */ private S手 getRandomHand() { // ランダムでグー、チョキ、パーを決定し返却 int hand = (int)(Math.random() * 3) + 1; return S手.getEnum(hand); } }
補足情報(FW/ツールのバージョンなど)
エディタはVSCodeを使用しています。
回答2件
あなたの回答
tips
プレビュー