使用Java实现猜拳小游戏
概述
在本篇攻略中,我们将使用Java编写一个猜拳小游戏,让玩家与计算机进行猜拳对抗。猜拳规则如下:
- 剪刀(scissors)败给石头(rock),胜过布(paper)
- 石头(rock)胜过剪刀(scissors),败给布(paper)
- 布(paper)胜过石头(rock),败给剪刀(scissors)
游戏结束后,将统计双方获胜的次数,并输出游戏结果。
步骤
-
创建一个Java项目,并新建一个名为Game的类
-
在Game类中定义常量rock、paper、scissors,分别代表石头、布和剪刀。代码如下:
public class Game {
private final int ROCK = 0;
private final int PAPER = 1;
private final int SCISSORS = 2;
}
- 在Game类中添加一个play方法,该方法将用于处理猜拳过程。既然是与计算机进行对抗,那么我们必须随机产生计算机的出拳,该如何实现呢?我们可以使用Java中的Random类,使用其nextInt方法随机生成0、1、2三个数字,依次代表石头、布和剪刀。代码如下:
import java.util.Random;
public class Game {
private final int ROCK = 0;
private final int PAPER = 1;
private final int SCISSORS = 2;
private int computerAnswer;
public void play(int userAnswer) {
// 电脑随机出拳
Random random = new Random(System.currentTimeMillis());
computerAnswer = random.nextInt(3);
}
}
- 接下来,我们需要比较双方出拳的胜负。为了简化代码,我们可以将出拳的胜负关系抽象为一个2维数组,如下所示:
private final int[][] results = {
{0, -1, 1},
{1, 0, -1},
{-1, 1, 0}};
其中,results[0]代表玩家出石头是的胜负情况,results[1]代表玩家出布是的胜负情况,results[2]代表玩家出剪刀是的胜负情况,对应的值分别为0、-1、1, 分别代表平局、输、赢。比如,如果玩家出石头,电脑出剪刀,就需要查找results[0][2],结果为1,代表玩家获胜。代码如下:
public void play(int userAnswer) {
Random random = new Random(System.currentTimeMillis());
computerAnswer = random.nextInt(3);
int result = results[userAnswer][computerAnswer];
switch (result) {
case 0 -> System.out.println("平局");
case 1 -> System.out.println("电脑获胜");
case -1 -> System.out.println("玩家获胜");
}
}
- 现在我们已经完成了猜拳的实现,但是游戏还没有结束。我们需要让玩家可以反复进行游戏。为了达到这个目的,我们可以使用循环结构。代码如下:
import java.util.Scanner;
public class Game {
private final int[][] results = {
{0, -1, 1},
{1, 0, -1},
{-1, 1, 0}};
private final int ROCK = 0;
private final int PAPER = 1;
private final int SCISSORS = 2;
private int computerAnswer;
public void play(int userAnswer) {
Random random = new Random(System.currentTimeMillis());
computerAnswer = random.nextInt(3);
int result = results[userAnswer][computerAnswer];
switch (result) {
case 0 -> System.out.println("平局");
case 1 -> System.out.println("电脑获胜");
case -1 -> System.out.println("玩家获胜");
}
}
public static void main(String[] args) {
Game game = new Game();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请输入你要出的拳:0表示石头,1表示布,2表示剪刀");
int userAnswer = scanner.nextInt();
if (userAnswer < 0 || userAnswer > 2) {
System.out.println("输入错误,请重新输入");
continue;
} else {
game.play(userAnswer);
}
System.out.println("是否再来一局?请输入y或n");
String tryAgain = scanner.next();
if (tryAgain.equalsIgnoreCase("n")) {
break;
}
}
System.out.println("游戏结束");
}
}
上述代码中,我们添加了一个while循环结构,来保证玩家反复进行游戏。同时,我们还通过Scanner类,允许玩家通过输入的方式选择自己的出拳。最后,我们还增加了一个判断,询问玩家是否愿意再玩一次。如果玩家输入的是“n”,就会退出循环,游戏结束。
示例说明
以下是玩家与计算机进行一局猜拳的示例输出:
请输入你要出的拳:0表示石头,1表示布,2表示剪刀
1
电脑获胜
是否再来一局?请输入y或n
y
请输入你要出的拳:0表示石头,1表示布,2表示剪刀
2
平局
是否再来一局?请输入y或n
n
游戏结束
在此示例中,玩家先出布,计算机出石头,所以计算机获胜。随后询问玩家是否继续,由于玩家输入的是"y",所以继续进行游戏。第二次玩家出剪刀,计算机也出剪刀,所以平局。随后询问玩家是否继续,由于玩家输入的是"n",所以退出游戏。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用java实现猜拳小游戏 - Python技术站