用java写一个A和B猜拳的游戏的程序,要体现面对对象的特点
时间: 2024-05-05 08:14:57 浏览: 114
很好,我可以为您提供一份使用Java编写的猜拳游戏示例代码,它体现了面向对象的特点。下面是代码示例:
```
import java.util.Scanner;
public class RockPaperScissorsGame {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Player playerA = new Player("A");
Player playerB = new Player("B");
System.out.println("欢迎来到猜拳游戏!");
while (true) {
System.out.println("--请A出拳--");
playerA.showFist();
System.out.println("--请B出拳--");
playerB.showFist();
String result = playerA.fist.compete(playerB.fist);
if (result.equals("win")) {
playerA.score++;
System.out.println("A赢了,得分:" + playerA.score);
} else if (result.equals("lose")) {
playerB.score++;
System.out.println("B赢了,得分:" + playerB.score);
} else {
System.out.println("平局,得分不变");
}
System.out.println("是否继续游戏?(Y/N)");
String continueGame = scanner.nextLine();
if (continueGame.equalsIgnoreCase("N")) {
System.out.println("游戏结束,最终得分:A-" + playerA.score + " B-" + playerB.score);
break;
}
}
}
}
class Player {
String name;
Fist fist;
int score;
public Player(String name) {
this.name = name;
this.score = 0;
}
public void showFist() {
this.fist = Fist.values()[(int)(Math.random()*3)];
System.out.println("玩家" + this.name + "出了" + this.fist);
}
}
enum Fist {
ROCK, PAPER, SCISSORS;
public String compete(Fist other) {
if (this == other) {
return "draw";
} else if ((this == ROCK && other == SCISSORS)
|| (this == PAPER && other == ROCK)
|| (this == SCISSORS && other == PAPER)) {
return "win";
} else {
return "lose";
}
}
}
```
在这个示例代码中,我们通过定义Player类、Fist类以及使用枚举类型变量等方式来体现面向对象的特点。具体来说:
1. Player类表示一个玩家,包含玩家名称、手势、得分等属性,还有一个showFist()方法,用于随机生成一个手势,以及记录结果;
2. Fist类表示三种手势,包含一个compete()方法,用于比较两个手势之间的胜负关系;
3. 使用枚举类型变量,可以将三个手势定义为一个类型,方便进行比较和使用。
在主程序中,我们创建两个Player对象,使用Scanner对象获取玩家的输入,进行比较,实现猜拳游戏的逻辑。如此一来,就满足了面向对象编程的基本要求。
阅读全文