6-1-5 使用继承,实现“剪刀石头布的游戏
时间: 2024-10-29 19:20:57 浏览: 72
在Java中,我们可以使用继承和多态来实现一个简单的"剪刀、石头、布"游戏。首先,我们创建一个基础的游戏元素`GameItem`类,它包含三种状态:
```java
public abstract class GameItem {
private String name;
public GameItem(String name) {
this.name = name;
}
public String getName() {
return name;
}
// 公共方法供子类重写
public abstract int calculateResult(GameItem other);
}
```
然后,分别定义三个具体的元素类:`Scissors`, `Paper`, 和 `Rock`,它们都继承自`GameItem`:
```java
public class Scissors extends GameItem {
public Scissors() {
super("剪刀");
}
@Override
public int calculateResult(GameItem other) {
if (other instanceof Rock) {
return -1; // 剪刀输给石头
} else if (other instanceof Paper) {
return 1; // 剪刀赢过布
} else {
return 0; // 平局
}
}
}
public class Paper extends GameItem {
public Paper() {
super("纸");
}
@Override
public int calculateResult(GameItem other) {
if (other instanceof Scissors) {
return 1; // 纸赢剪刀
} else if (other instanceof Rock) {
return -1; // 纸输给石头
} else {
return 0; // 平局
}
}
}
public class Rock extends GameItem {
public Rock() {
super("石头");
}
@Override
public int calculateResult(GameItem other) {
if (other instanceof Scissors) {
return 1; // 石头赢剪刀
} else if (other instanceof Paper) {
return -1; // 石头输纸
} else {
return 0; // 平局
}
}
}
```
玩家可以选择一个`GameItem`实例并计算结果,通过多态性确保无论选择哪种元素,都可以正确地与其他元素进行比较。
```java
public class Game {
public static void main(String[] args) {
GameItem playerChoice = new Scissors();
GameItem computerChoice = getComputerChoice(); // 假设有一个函数获取随机的选择
int result = playerChoice.calculateResult(computerChoice);
if (result == 0) {
System.out.println("平局!");
} else if (result > 0) {
System.out.println("你赢了!你出的是 " + playerChoice.getName());
} else {
System.out.println("电脑赢了!电脑出了 " + computerChoice.getName());
}
}
}
private static GameItem getComputerChoice() {
// 实现随机选取一个元素
}
```
这就是使用继承实现"剪刀石头布"游戏的基本框架。
阅读全文