多态实现棋子的走法

来源:互联网 发布:足球大师小贝捏脸数据 编辑:程序博客网 时间:2024/05/24 06:36
//定义抽象基类——棋子类
// 成员函数move表示一个棋子的移动方式;
// 利用多态实现:
// 用户输入一个具体的棋子(1表示马、2表示象、3表示车、4表示炮、5表示仕、6表示小卒),程序输出该棋子的移动方式
// 马走日、象走田、车走一溜烟、炮打隔山涧、仕走对角线、小卒一去不回还


//未写全读者可以根据这个程序依次写(很简单笔者不再写了)



#include <iostream>
using namespace std;
class Piece{
public:
virtual void move(){cout<<"hahah"<<endl;};
};
class ma:public Piece{
public:
void move(){cout<<"马走日\n";};
};
class xiang:public Piece{
public:
void move(){cout<<"象飞田\n";};
};
int main(){
cout<<"请输入数字1到6中的一个(1表示马、2表示象、3表示车、4表示炮、5表示仕、6表示小卒)\n";
Piece *p;//定义基类指针
int n;
cin>>n;
ma m;
xiang x;
switch (n)
{
case 1:p=&m;p->move();break;//通过基类指针指向派生类对象,来引用派生类中重载的函数(这要求在基类中定义虚函数)
case 2:p=&x;p->move();break;
default:cout<<"您输入不正确请重新输入\n";
}
return 0;
}
原创粉丝点击