面向对象程序设计c++猜拳游戏
时间: 2024-04-27 19:16:12 浏览: 141
面向对象程序设计是一种编程范式,其中的程序由对象组成,每个对象都包含数据和操作数据的函数。C++是一种支持面向对象编程的编程语言,可以使用它来实现猜拳游戏。
在C++中,可以使用类来表示游戏中的不同角色和操作。以下是一个简单的猜拳游戏的示例:
```cpp
#include <iostream>
#include <cstdlib>
#include <ctime>
// 定义手势的枚举类型
enum Gesture {
ROCK,
PAPER,
SCISSORS
};
class Player {
public:
// 构造函数
Player(std::string name) : name(name) {}
// 选择手势
Gesture chooseGesture() {
int choice = std::rand() % 3;
return static_cast<Gesture>(choice);
}
// 获取玩家名称
std::string getName() {
return name;
}
private:
std::string name;
};
class Game {
public:
// 构造函数
Game(Player* player1, Player* player2) : player1(player1), player2(player2) {}
// 进行游戏
void play() {
Gesture gesture1 = player1->chooseGesture();
Gesture gesture2 = player2->chooseGesture();
std::cout << player1->getName() << "选择了" << gestureToString(gesture1) << std::endl;
std::cout << player2->getName() << "选择了" << gestureToString(gesture2) << std::endl;
if (gesture1 == gesture2) {
std::cout << "平局!" << std::endl;
} else if ((gesture1 == ROCK && gesture2 == SCISSORS) ||
(gesture1 == PAPER && gesture2 == ROCK) ||
(gesture1 == SCISSORS && gesture2 == PAPER)) {
std::cout << player1->getName() << "获胜!" << std::endl;
} else {
std::cout << player2->getName() << "获胜!" << std::endl;
}
}
private:
Player* player1;
Player* player2;
// 将手势转换为字符串
std::string gestureToString(Gesture gesture) {
switch (gesture) {
case ROCK:
return "石头";
case PAPER:
return "剪刀";
case SCISSORS:
return "布";
default:
return "";
}
}
};
int main() {
// 初始化随机数生成器
std::srand(std::time(nullptr));
// 创建两个玩家对象
Player player1("玩家1");
Player player2("玩家2");
// 创建游戏对象
Game game(&player1, &player2);
// 开始游戏
game.play();
return 0;
}
```
这个示例中,我们定义了一个`Player`类来表示玩家,其中包含了选择手势的函数和获取玩家名称的函数。然后,我们定义了一个`Game`类来表示游戏,其中包含了进行游戏的函数。在`main`函数中,我们创建了两个玩家对象和一个游戏对象,并调用`play`函数开始游戏。