猜拳游戏c++代码面向对象
时间: 2024-03-31 11:30:44 浏览: 171
JavaScript基于面向对象实现的猜拳游戏
当然,我可以为您介绍一下猜拳游戏的C++代码实现。在面向对象的设计中,我们可以将猜拳游戏的参与者抽象为一个Player类,其中包含了玩家的姓名和出拳的方法。另外,我们还可以创建一个Game类来管理游戏的进行,包括判断胜负、输出结果等功能。
下面是一个简单的猜拳游戏的C++代码示例:
```cpp
#include <iostream>
#include <ctime>
using namespace std;
// 定义手势的枚举类型
enum Gesture {
ROCK,
PAPER,
SCISSORS
};
// 玩家类
class Player {
private:
string name;
Gesture gesture;
public:
Player(string n) : name(n) {}
void setGesture(Gesture g) {
gesture = g;
}
Gesture getGesture() {
return gesture;
}
};
// 游戏类
class Game {
private:
Player* player1;
Player* player2;
public:
Game(Player* p1, Player* p2) : player1(p1), player2(p2) {}
void play() {
Gesture g1 = player1->getGesture();
Gesture g2 = player2->getGesture();
if (g1 == g2) {
cout << "平局!" << endl;
} else if ((g1 == ROCK && g2 == SCISSORS) ||
(g1 == PAPER && g2 == ROCK) ||
(g1 == SCISSORS && g2 == PAPER)) {
cout << player1->getName() << " 获胜!" << endl;
} else {
cout << player2->getName() << " 获胜!" << endl;
}
}
};
int main() {
// 创建两个玩家对象
Player* p1 = new Player("玩家1");
Player* p2 = new Player("玩家2");
// 随机生成玩家的手势
srand(time(0));
Gesture g1 = static_cast<Gesture>(rand() % 3);
Gesture g2 = static_cast<Gesture>(rand() % 3);
p1->setGesture(g1);
p2->setGesture(g2);
// 创建游戏对象并进行游戏
Game game(p1, p2);
game.play();
// 释放内存
delete p1;
delete p2;
return 0;
}
```
这段代码中,我们定义了一个Gesture枚举类型来表示石头、剪刀和布三种手势。Player类表示玩家,包含了玩家的姓名和出拳的方法。Game类表示游戏,包含了两个玩家对象,并实现了游戏的进行和判断胜负的功能。
相关问题:
1. 什么是枚举类型?
2. 如何在C++中生成随机数?
3. 如何动态创建和释放内存?
阅读全文