用Java编写的石头剪刀布游戏应用
这是我第一次投稿。
我制作了一个经过大量撰写的石头剪子布应用程序。
制作时间:2天
语言:Java
环境:MacOS、终端
文本编辑器:Atom
这是一个通过命令操作的游戏。
游戏规则如下所示。
-
- 3回勝負
-
- じゃんけんの手は配列で管理
-
- CPUはランダムな数値を作成して手を決める
-
- プレイヤーは入力された文字を数値に変えて手を決める
-
- 数値で勝敗を判定する
- 最後に勝負の結果を表示する
实际的屏幕看起来是这个样子的。
石头剪刀布课程 bù
这是一个对战类的课程。
package jankenapp;
public class Janken {
static String[] handList = {"グー","チョキ","パー"};
static void startMessage() {
System.out.println("--------------------");
System.out.println("じゃんけんをしましょう!3回勝負です!");
}
static void endMessage() {
System.out.println("ありがとうございました!また遊びましょうね!");
System.out.println("--------------------");
}
public static void main(String[] args) {
Player player = new Player();
CPU cpu = new CPU();
Judge judge = new Judge();
// 開始の挨拶
startMessage();
for (int i = 1; i <= 3; i++) {
System.out.println("【" + i + "回戦目】");
// CPUが手をランダムに作成
cpu.setHand();
// Playerが手を入力
player.setHand();
// Player,CPUの手を表示
System.out.println("・あなたの手:" + handList[player.getHand()]);
System.out.println("・わたしの手:" + handList[cpu.getHand()]);
// 判定
judge.judgement(cpu.getHand(), player.getHand());
} // 繰り返し終わり
// 結果を表示
judge.result();
// 終了の挨拶
endMessage();
}
}
玩家类
我正在使用Scanner来获取手部输入的字符串,并通过switch语句将其转换为数字。
package jankenapp;
import java.util.*;
public class Player {
int hand;
public void setHand() {
System.out.print("「グー」「チョキ」「パー」のどれかを入力してください。>");
Scanner sc = new Scanner(System.in);
String inputHand = sc.nextLine();
switch(inputHand) {
case "グー":
hand = 0;
break;
case "チョキ":
hand = 1;
break;
case "パー":
hand = 2;
break;
default:
System.out.println("間違えたので終了します…。");
}
}
public int getHand() {
return hand;
}
}
CPU类
我們正在使用隨機方法隨機選擇手勢。
package jankenapp;
import java.util.*;
public class CPU {
int hand;
public void setHand() {
double rand = Math.random() * 3;
hand = (int)rand;
}
public int getHand() {
return this.hand;
}
}
法官类
这是一个用于判断胜负并显示比赛结果的类。判断方法是将每个人的手势转化为数字,通过(CPU的手势-玩家的手势+3)%3 来计算。我们通过计数玩家赢的次数、输的次数和平局的次数,并通过if语句显示结果。
Package jankenapp;
public class Judge {
int judge;
int win;
int lose;
int even;
public void judgement(int cpuHand, int playerHand) {
judge = (cpuHand - playerHand + 3 ) % 3;
switch(judge) {
case 0:
System.out.println("あいこです!");
even++;
break;
case 1:
System.out.println("あなたの勝ちです!");
win++;
break;
case 2:
System.out.println("あなたの負けです!");
lose++;
break;
default:
}
System.out.println("--------------------");
}
public void result() {
System.out.println("【勝敗の結果】");
System.out.println("勝ち:" + win + "回");
System.out.println("負け:" + lose + "回");
System.out.println("あいこ:" + even + "回");
System.out.println("");
if (win > lose) {
System.out.println("この勝負はあなたの勝ちです!おめでとう!");
} else if (win < lose) {
System.out.println("この勝負はあなたの負けです!どんまい!");
} else {
System.out.println("この勝負は引き分けです!");
}
}
}
如果有令人不悦之处 ,很抱歉因为是自学的。
如果能给予指导意见等,我会很高兴。
感谢您一直阅读到最后。
【参考】借鉴一下石头剪刀布算法
(参考了判定式的思路。)
(8/23) 我意识到即使输入错误,默认值仍然会显示“剪刀”。我将采取措施来解决这个问题。