1 课程设计的内容和目标

使用 C++语言和微软的 MFC 类库,设计并实现一个带有 GUI 界面的飞机游戏。游戏包含玩家飞机、敌机、子弹等元素,游戏者可以操纵玩家飞机移动,通过发射子弹击毁敌机。

1.1 游戏设计

玩家可以使用方向键(或 ADWS 键)控制飞机移动,按空格键发射子弹。玩家通过发射子弹击中敌机来获得分数。每隔一段时间,会有一架新的敌机出现。敌机一共有三种类型,每种类型的敌机的血量不同:第一种敌机(普通敌机)只需一枚子弹即可击毁,第二种(中级敌机)需要两枚,而第三种(Boss 敌机)需要 10 枚子弹才可击毁。每类敌机出现的频率不同,第一类出现的频率最高,第二类其次,而血量最大的第三类敌机出现的频率最低。玩家在游戏时需要躲避敌机,当任意一架敌机与玩家飞机发生碰撞后,则游戏结束。

1.2 课程设计目标

综合运用本学期高级程序课程中学到知识:

面向对象程序设计,数据抽象和封装(类/对象),继承(基类与派生类、子类型)以及消息的多态和动态绑定(虚函数)

泛型(类属)程序设计,基于 STL(标准模板库)容器、迭代器和算法的编程等

事件(消息)驱动程序设计,包括:消息、消息循环以及消息处理过程等

基于“文档-视”结构的应用框架的程序设计,包括:文档-视应用框架,MFC 类库,windows 应用程序设计等

设计良好的类层次结构,尽量使代码易读,易维护

2 开发环境

编程语言:C++(C++11)

IDE: Visual Studio 2015

框架:MFC

OS: Windows

3 类层次关系和实现

类层次结构设计是面向对象程序设计的最重要部分。本程序的类层次关系如下图所示:

参考文档和完整的文档和源码下载地址:

https://www.write-bug.com/article/1386.html

基于MFC的打飞机游戏相关推荐

  1. [计算机毕设]基于java的打飞机游戏系统设计与实现(项目报告+源代码)

    基于java的打飞机游戏系统项目说明报告 1.1 手机软件现状 在信息社会中,手机及其他无线设备越来越多的走进普通百姓的工作和生活,随着信息网络化的不断进展,手机及其他无线设备上网络势在必行.但是传统 ...

  2. 基于SnapDragonBoard410c的打飞机游戏之一绘制网格地图

    近期入手一块SnapDragonBoard410c的开发板,基于该开发板开发一个打飞机游戏系列,希望广大爱好者可以多多交流. 第一,创建一个自定义View,命名为MapView.其功能为绘制一个棋盘格 ...

  3. 基于MFC实现的赛车游戏

    一.问题描述 游戏背景为一环形车道图,选择菜单选项"开始游戏"则可开始游戏.游戏的任务是使用键盘上的方向键操纵赛道上的蓝色赛车追赶红色赛车,红色赛车沿车道顺时针行驶,出发点和终点均 ...

  4. 基于MFC的贪吃蛇游戏

    一.软件说明 贪吃蛇游戏是一款有趣的益智游戏,可以锻炼大脑的反映能力,在游戏中娱乐和放松自己.该贪吃蛇采用传统的游戏规则,实现蛇的移动.进食.增长以及死亡过程,并统计所得分数.最初蛇只有3节,每吃一个 ...

  5. 基于Python/Tkinter的飞机大战单机小游戏

    这是很早之前课余时间写的基于Python/Tkinter单机小游戏,用来练手,今天将代码贴出来,方便大家一起学习,通过Py/Tk对于学习GUI作为一个入口,其实是个不错入口,在这里推荐一下Tcl/Tk ...

  6. 基于pygame实现的飞机大战游戏

    目录 1.引言 1.1 背景 1.2 意义 1.3 功能 2.系统结构 2.1 整体框架 2.2 精灵与精灵组 2.3 功能介绍 2.3.1 玩家飞机 2.3.2 敌机类型和关卡设定 2.3.3 敌机 ...

  7. java毕业设计——基于java+J2ME+sqlserver的打飞机游戏设计与实现(毕业论文+程序源码)——打飞机游戏

    基于java+J2ME+sqlserver的打飞机游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+J2ME+sqlserver的打飞机游戏设计与实现,文章末尾附有本毕业设计的 ...

  8. android 飞机源码,基于安卓Android平台的飞机游戏设计与实现毕业论文+项目源码...

    摘   要 本课题是基于Android平台开发的飞机游戏,本游戏主要是针对现实生活中比较忙碌并且没有自己业余生活的人开发的,随着社会的发展,人们的生活也越来越快,压力也在不断的加大,反而没有了自己的休 ...

  9. 【课程记录·本】WUT数据结构与算法综合实验 | 基于C++MFC的欢乐连连看游戏的设计与实现(附下载链接)

    本文基于文章" https://blog.csdn.net/cxh_1231/article/details/89577820 "二次修改发布,原文已失效,不再维护 我的微信公众号 ...

最新文章

  1. [译文] C# 8 已成旧闻, 向前, 抵达 C# 9!
  2. 一些基于Java的AI框架:Encog,JavaML,Weka
  3. python arima模型_Python时间序列处理之ARIMA模型的使用讲解
  4. [修复] Firemonkey 使用 DrawPath 断线问题(Android iOS 平台)
  5. matlab | 与 || 的区别
  6. Protocol Buffers数据编码
  7. 在Chrome离线安装插件时显示程序包无效: CRX_HEADER_INVALID
  8. 阿里算法工程师模拟题2018/5/7
  9. opengl 加载贴图Unknown DIB file format问题
  10. kafka 查看待消费数据_通过Kafka Connect进行数据迁移
  11. 华为的数字化转型之道
  12. 实现离线地图行政区域划分
  13. 【翻唱】学习日语歌 (青鸟)火影忍者 OP
  14. 区块链对人工智能的变革:去中心化将带来数据新范式
  15. AD中生成交互式BOM,方便手工焊接及贴片
  16. 最新苹果CMS海螺模版V4.0修复版+自适应带后台
  17. Spring Cloud Alibaba入门实践(五)-远程调用Feign
  18. 【String字符串分割以及字符串截取】
  19. 织梦仿微信公众号文章页面html,织梦DEDECMS微信内容页插件
  20. Linux 查看某个端口的连接数

热门文章

  1. SOA的实施加速电信业务流程更新
  2. Android点击悬浮窗回到应用,android悬浮窗应用
  3. 百度地图获取经纬度和当前精确位置名称
  4. 为IDEA设置背景图片
  5. 综合练习:英文词频统计
  6. ecshop 商城二次开发 系统简介
  7. ORA-08104: 该索引对象68100正在被联机建立或重建
  8. CSS引入方式与文本属性
  9. Failed to get local InetAddress for VMID. This is unlikely to matter.
  10. golang实现自动申请lets encrypt证书