能否提供一份Java编写的简单猜拳游戏源代码示例?
时间: 2024-10-24 17:13:32 浏览: 23
当然可以,这是一个简单的Java猜拳游戏(石头、剪刀、布)的示例代码:
```java
import java.util.Random;
import java.util.Scanner;
public class RockPaperScissorsGame {
enum Move { ROCK, PAPER, SCISSORS }
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
System.out.println("欢迎来到石头、剪刀、布游戏!");
while (true) {
// 用户选择
System.out.println("\n请输入你的选择(1.石头,2.剪刀,3.布): ");
int userChoice = scanner.nextInt();
// 验证用户输入是否有效
if (userChoice < 1 || userChoice > 3) {
System.out.println("无效的选择,请重新输入!");
continue;
}
// 计算电脑随机选择
Move computerChoice = Move.values()[random.nextInt(3)];
// 打印结果
System.out.printf("你的选择: %s, 电脑选择: %s\n", Move.values()[userChoice - 1].name(), computerChoice.name());
// 判断胜负
switch (compare(userChoice, computerChoice)) {
case USER_WINS:
System.out.println("恭喜你,你赢了!");
break;
case COMPUTER_WINS:
System.out.println("哎呀,电脑赢了!");
break;
case TIE:
System.out.println("平局!");
break;
}
// 是否继续游戏
System.out.print("\n你想再玩一局吗? (y/n): ");
String playAgain = scanner.next().toLowerCase();
if (!playAgain.equals("y")) {
break;
}
}
scanner.close();
}
private static Move compare(int userChoice, Move computerChoice) {
switch (Math.abs(userChoice - computerChoice.value())) {
case 0:
return Move.TIE;
case 1:
return computerChoice == Move.ROCK ? Move.PAPER : Move.ROCK; // 用户胜过石头
case 2:
return computerChoice == Move.PAPER ? Move.SCISSORS : Move.PAPER; // 用户胜过剪刀
default:
throw new IllegalArgumentException("Invalid move comparison");
}
}
}
```
在这个游戏中,用户和电脑各自选择一个手势(石头、剪刀、布),然后通过比较规则判断胜负。玩家可以选择是否继续游戏。
阅读全文