c++使用面向对象的方式实现人机猜拳
时间: 2023-05-01 12:07:43 浏览: 55
可以使用面向对象的编程思想,定义一个人类和猫类的对象,这两个类之间有一个属性——猫会被人拥抱。在人类中定义一个拥抱方法,参数为猫类的对象,实现人拥抱猫的动作。在猫类中定义一个被拥抱方法,参数为人类的对象,实现猫被拥抱的动作。通过调用这两个方法,实现人机猫的互动。
相关问题
c++猜拳游戏代码面向对象
当然,我可以为您介绍一下C++猜拳游戏的面向对象代码。以下是一个简单的示例:
```cpp
#include <iostream>
#include <cstdlib>
#include <ctime>
// 定义手势的枚举类型
enum Gesture {
ROCK,
PAPER,
SCISSORS
};
// 定义玩家类
class Player {
public:
Gesture chooseGesture() {
int choice;
std::cout << "请选择手势:(0-石头, 1-剪刀, 2-布): ";
std::cin >> choice;
return static_cast<Gesture>(choice);
}
};
// 定义电脑类
class Computer {
public:
Gesture chooseGesture() {
srand(time(0));
int choice = rand() % 3;
return static_cast<Gesture>(choice);
}
};
// 定义游戏类
class Game {
private:
Player player;
Computer computer;
public:
void play() {
Gesture playerGesture = player.chooseGesture();
Gesture computerGesture = computer.chooseGesture();
std::cout << "玩家选择了:";
printGesture(playerGesture);
std::cout << "电脑选择了:";
printGesture(computerGesture);
if (playerGesture == computerGesture) {
std::cout << "平局!" << std::endl;
} else if ((playerGesture == ROCK && computerGesture == SCISSORS) ||
(playerGesture == PAPER && computerGesture == ROCK) ||
(playerGesture == SCISSORS && computerGesture == PAPER)) {
std::cout << "玩家获胜!" << std::endl;
} else {
std::cout << "电脑获胜!" << std::endl;
}
}
void printGesture(Gesture gesture) {
switch (gesture) {
case ROCK:
std::cout << "石头";
break;
case PAPER:
std::cout << "剪刀";
break;
case SCISSORS:
std::cout << "布";
break;
}
std::cout << std::endl;
}
};
int main() {
Game game;
game.play();
return 0;
}
```
这个示例代码中,我们定义了三个类:`Player`、`Computer`和`Game`。`Player`类表示玩家,`Computer`类表示电脑,`Game`类表示游戏。玩家和电脑都有一个选择手势的方法`chooseGesture()`,游戏类有一个`play()`方法来进行游戏的逻辑处理。
在`play()`方法中,玩家和电脑分别选择手势,然后比较手势的结果来判断胜负。最后输出结果。
希望这个示例能够帮助您理解C++猜拳游戏的面向对象代码。
c++通讯录 用面向对象实现
好的,让我们来实现一个简单的通讯录,用面向对象的方式实现。
首先,我们需要一个联系人类,它应该有姓名、电话号码等基本信息。我们可以这样定义一个联系人类:
```cpp
class Contact {
public:
Contact(const string& name, const string& phone) : name_(name), phone_(phone) {}
string name() const { return name_; }
string phone() const { return phone_; }
private:
string name_;
string phone_;
};
```
接下来,我们需要一个通讯录类,它应该能添加、删除、查找联系人等操作。我们可以这样定义一个通讯录类:
```cpp
class AddressBook {
public:
void AddContact(const Contact& contact) { contacts_.push_back(contact); }
void RemoveContact(const string& name) {
for (auto it = contacts_.begin(); it != contacts_.end(); ++it) {
if (it->name() == name) {
contacts_.erase(it);
return;
}
}
}
Contact FindContact(const string& name) const {
for (const auto& contact : contacts_) {
if (contact.name() == name) {
return contact;
}
}
return Contact("", "");
}
private:
vector<Contact> contacts_;
};
```
现在,我们可以在主函数中使用这些类来实现一个简单的通讯录程序:
```cpp
int main() {
AddressBook address_book;
address_book.AddContact(Contact("Tom", "123456789"));
address_book.AddContact(Contact("Jerry", "987654321"));
address_book.RemoveContact("Tom");
Contact jerry = address_book.FindContact("Jerry");
cout << jerry.name() << " " << jerry.phone() << endl;
return 0;
}
```
这样,我们就用面向对象的方式实现了一个简单的通讯录程序。