跳转到主要内容 跳转到页脚

计算机科学236 C + +编程

编程项目# 3多态性和虚函数(10分)

项目# 3我们将实现一个继承层次结构多态性和虚函数。基于一个简单的控制台接口所需要的。建立你的类,每个在自己的. h和. cpp文件中,然后测试他们的主要方法。观看以下视频准备这个项目:

OO设计# 1
OO设计# 2
OO设计# 3
OO设计# 4

阶段1:

这是你将实现以下组类及其继承关系:

类的层次结构图

老师会为你提供你指定的类型。不构成新类型或选择你自己的。

1型 2型 3型
斗牛犬 飞机 士兵
美洲狮 直升机 机器人
狮子 无人驾驶飞机 抢走了
老虎 软式小型飞船 恐怖分子
轰炸机 BadCop

敌人

通用基类敌人将作为三个子类的父类。
将私有的变量:x_position y_position,宽度、高度和地位
这些方法将保护:“得到”和“设置”为每个变量上面列出
这些方法将纯虚拟和公众:move_position, fire_weapon update_status

主要

main()函数应该在它自己的. cpp文件;它将创建敌人对象并将它们存储在一个数组中。一个对象的方法定义什么对象,它将执行的操作。main()循环,让敌人对象执行操作,如move_position fire_weapon update_status。基本布局将:

# include“stdafx。h”/ /不需要一些IDE
# include < conio.h >
# include < iostream >
使用名称空间性病;
int主要(int命令行参数个数,char * argv [])
{const int max_enemy = 20;
敌人* enemy_ptr [max_enemy];
int num_enemy;

/ /创建对象的敌人,在数组中
/ /设置num_enemy的价值
而(真){
/ /每一个敌人对象应该move_position fire_weapon / /选择一个随机的敌人
/ /选择一个随机的敌人update_statusgetch ();
cout < < endl;
}
返回0;
}

你可以谷歌“C +随机数”帮助生成一个随机数,然后使用取模运算符‘%’:兰德()% num_enemy这将数组中选择敌人应该执行一个动作。

保持main()简单!物体将做这项工作,和打印消息报告他们所做的一切。唯一的敌人对象方法你可以叫move_position, fire_weapon update_status。

类型1 - 2型- 3型类

首先,简单的开始,创建你的指定的类和每一个打印每个操作需要一个简单的信息:

斗牛犬移动位置飞机移动位置士兵移动位置
喷射火武器:导弹
斗牛犬更新状态:我受到的冲击(树皮)

这些应该是简单的类,一个变量来跟踪对象的名称和简单cout报表报告每个操作。确保move_position不输出一行结束,如果有10个对象我们不希望它打印10行输出。做的自定义消息匹配的敌人,一个斗牛犬咬,一名士兵用步枪射击时动火。一个士兵会说哎呀,飞机将萍的声音当更新状态记录。

确保你可以简单的版本的程序工作。测试不同数量和不同combinitions敌人的对象。每次通过主循环应该像上面的示例输出消息。不要移动到简单的版本是工作!

更好的敌人类!

当你有简单的工作,改善你的孩子的类。让他们像他们会在视频游戏。任何改变父类主要()或敌人应该非常小(如果有的话),重点是儿童类。让他们移动,和火武器和记录点击当更新状态被称为:

move_position

每个对象存在于一个二维空间,其X位置的范围可以从0到800,y位置0到600。位置0,0是左上角,800600底部是正确的。地面是500一个人或动物将于500年在y位置。低飞行物在y位置300,一个100年高空飞行。对象在X轴上移动,每次运行对象移动3行走,6移动位置。飞行物体移动15到30每个调用取决于他们的速度。不让他们都在相同的位置,不让他们以相同的速度,不要让他们都朝着同一个方向。当一个对象的状态是零,它死了,它应该不再移动。

fire_weapon

确保每个对象触发适当的武器。一般来说1型对象咬或削减。2型物体有导弹或炸弹。类型3枪。跟踪的弹药,如果飞机有4个导弹,有火武器弹药5日电话报告。还要检查状态,当死,应该说没有武器发射武器。因为动物不会使用弹药,让他们改变攻击,如咬腿,削减的胸口,咬脖子。

update_status

更新状态意味着敌人的打击对象。失去地位如果状态达到零分,死的。1型对象应该只有1或2支安打在他们死之前,4到5支安打和2型3型对象应该7到8支安打。像往常一样,让它匹配的敌人,一个机器人将比一辆车杰可到达之前死亡。时总是报告现状,死亡发生时输出一个特别声明。一个士兵可能会说哎呀非致命打击,但ARRRGH致命。简单的方法就是开始每个对象与地位相匹配的数量达到杀死它,每次减去1。

一旦你有你的改进的子类,输出应该更新每通过一次循环,下面的例子显示了程序有3个循环:

斗牛犬710500飞机移动到320100士兵搬到518500
喷射火武器:导弹(左2)
斗牛犬更新状态:中弹了,状态点0(死)
斗牛犬710500飞机移动到360100士兵搬到514500
斗牛犬火武器:死了! ! ! ! !
士兵更新状态:中弹了,状态点3(哎呦)
斗牛犬710500飞机移动到400100士兵搬到510500
士兵火武器:步枪(12发子弹了)
飞机更新状态:中弹了,状态点7(平)
Baidu