6-6 使用继承,实现“剪刀石头布的游戏”
时间: 2024-05-05 10:18:53 浏览: 193
好的,这是一个关于编程的问题,我可以为您解答。使用继承,可以定义一个父类表示出拳,然后定义三个子类分别表示剪刀、石头和布,最后在程序中调用子类来进行比赛。您可以参考以下代码:
```
//父类手势
class Gesture {
public:
virtual int fight(Gesture *enemy) {
return 0;
}
};
//子类剪刀
class Scissor : public Gesture {
public:
int fight(Gesture *enemy) {
if (dynamic_cast<Scissor*>(enemy)) {
return 0;
} else if (dynamic_cast<Stone*>(enemy)) {
return -1;
} else if (dynamic_cast<Paper*>(enemy)) {
return 1;
}
}
};
//子类石头
class Stone : public Gesture {
public:
int fight(Gesture *enemy) {
if (dynamic_cast<Scissor*>(enemy)) {
return 1;
} else if (dynamic_cast<Stone*>(enemy)) {
return 0;
} else if (dynamic_cast<Paper*>(enemy)) {
return -1;
}
}
};
//子类布
class Paper : public Gesture {
public:
int fight(Gesture *enemy) {
if (dynamic_cast<Scissor*>(enemy)) {
return -1;
} else if (dynamic_cast<Stone*>(enemy)) {
return 1;
} else if (dynamic_cast<Paper*>(enemy)) {
return 0;
}
}
};
//测试代码
int main() {
Gesture *s = new Scissor();
Gesture *p = new Paper();
std::cout<< s->fight(p) <<std::endl; //输出1
std::cout<< p->fight(s) <<std::endl; //输出-1
std::cout<< s->fight(s) <<std::endl; //输出0
delete s;
delete p;
return 0;
}
```
希望能为您解决问题。
阅读全文