多态实现棋子的走法
来源:互联网 发布:足球大师小贝捏脸数据 编辑:程序博客网 时间: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;
}
// 成员函数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;
}
- 多态实现棋子的走法
- 象棋棋子类包括棋子属性及走法
- 中国象棋程序的设计与实现(九)–棋子点,棋子的小窝
- 走阶梯的走法
- 【atcoder 10】【博弈论+树形dp】【对一棵树每次从棋子所在节点移走一个石头,将棋子移到与当前节点相邻的节点】
- 取棋子实现
- 一个N*M的棋盘,右下方有一个棋子,两人轮流走,可以走到上下左右相邻的未走过的格子,不能走则输,谁胜?
- 上帝的棋子
- 上帝的棋子
- 黑白棋子的移动
- 黑白棋子的移动
- 黑白棋子的移动
- 黑白棋子的移动
- 黑白棋子的移动
- 不开心的棋子
- 深度优先搜索实现迷宫的走法
- Python实现N阶台阶的走法问题
- 棋子类实现文件C++
- ARM11 (S3C6410) CP15寄存器
- SVN在Wndows环境下的Web搭建
- Linux常见文件结构体全面解释
- 编程规则 - 1 概述 -- 帮助你成长为优秀的程序员 杰出的软件工程师、设计师、分析师和架构师
- [整理]python 小技巧
- 多态实现棋子的走法
- gcc编译项目
- 判断是手机登录还是电脑登录的几种方式
- 优秀只是一种习惯
- isdn简介
- maple学习(一)
- 读取Lrc-Java
- 2010年的外挂小作品 - QQ对对碰单机版外挂
- HDU 3788 ZOJ问题