用oop的方法写一个控制板对战小游戏
时间: 2023-10-08 22:11:37 浏览: 56
好的,我来简单地介绍一下如何用面向对象的方法来设计一个控制板对战小游戏。
首先,我们需要确定游戏的玩家和游戏规则。假设我们的游戏是一个两人对战的石头剪刀布游戏,玩家可以通过控制板来选择出拳的手势。游戏规则是石头胜剪刀、剪刀胜布、布胜石头。每局游戏结束后,系统会统计并展示两位玩家的得分,直到有一方得分达到设定的胜利分数时游戏结束。
接下来,我们可以定义两个类来表示游戏中的玩家。每个玩家都有自己的名称、得分和出拳手势。我们可以在玩家类中定义一个方法来进行出拳操作,该方法可以接收控制板输入的手势类型,并将出拳手势保存在对象属性中。玩家类的代码如下所示:
```java
public class Player {
private String name;
private int score;
private Gesture gesture;
public Player(String name) {
this.name = name;
this.score = 0;
}
public void play(Gesture gesture) {
this.gesture = gesture;
}
public String getName() {
return name;
}
public int getScore() {
return score;
}
public void addScore() {
this.score++;
}
public Gesture getGesture() {
return gesture;
}
}
```
接下来,我们需要定义控制板类来接收玩家输入的手势,并根据游戏规则来判断胜负。我们可以在控制板类中定义一个方法来接收玩家输入的手势,并将其传递给游戏规则判断胜负。如果玩家胜利,控制板会调用玩家对象的addScore方法来增加其得分。控制板类的代码如下所示:
```java
public class ControlPanel {
private Player player1;
private Player player2;
private int winScore;
public ControlPanel(Player player1, Player player2, int winScore) {
this.player1 = player1;
this.player2 = player2;
this.winScore = winScore;
}
public void play(Gesture gesture1, Gesture gesture2) {
if (gesture1 == gesture2) {
System.out.println("平局!");
} else if ((gesture1 == Gesture.ROCK && gesture2 == Gesture.SCISSORS)
|| (gesture1 == Gesture.SCISSORS && gesture2 == Gesture.PAPER)
|| (gesture1 == Gesture.PAPER && gesture2 == Gesture.ROCK)) {
System.out.println(player1.getName() + " 获胜!");
player1.addScore();
} else {
System.out.println(player2.getName() + " 获胜!");
player2.addScore();
}
}
public boolean isGameOver() {
return player1.getScore() >= winScore || player2.getScore() >= winScore;
}
public void showScore() {
System.out.println(player1.getName() + " 得分:" + player1.getScore());
System.out.println(player2.getName() + " 得分:" + player2.getScore());
}
}
```
最后,我们可以在main函数中创建两个玩家对象和一个控制板对象,并通过控制板对象来进行游戏。每次游戏结束后,我们需要调用控制板对象的showScore方法展示双方得分情况,并判断是否达到胜利分数。如果游戏结束,我们可以展示胜利方的信息并退出游戏。main函数的代码如下所示:
```java
public static void main(String[] args) {
Player player1 = new Player("玩家1");
Player player2 = new Player("玩家2");
ControlPanel controlPanel = new ControlPanel(player1, player2, 3);
Scanner scanner = new Scanner(System.in);
while (!controlPanel.isGameOver()) {
System.out.print(player1.getName() + " 出拳(1-石头,2-剪刀,3-布):");
int gesture1 = scanner.nextInt();
System.out.print(player2.getName() + " 出拳(1-石头,2-剪刀,3-布):");
int gesture2 = scanner.nextInt();
controlPanel.play(Gesture.valueOf(gesture1), Gesture.valueOf(gesture2));
controlPanel.showScore();
}
if (player1.getScore() >= controlPanel.getWinScore()) {
System.out.println(player1.getName() + " 获得胜利!");
} else {
System.out.println(player2.getName() + " 获得胜利!");
}
}
```
这样,我们就用面向对象的方式设计了一个简单的控制板对战小游戏。