c++飞机大战

C++飞机大战

长春理工大学大一下学期面向对象课程设计
本程序于2018年7月完成
这个飞机大战运用了easyX库,这个库可以帮助新手快速上手图形界面编程

声明

本人为长春理工大学2018级学生,程序为本人制作,本程序未经允许请勿做商用
资源包包含一个课程设计论文,详细设计见论文,代码就不打出来了,自己去下载

功能需求

  1. 地图选择
  2. 难度选择
  3. 分数模块
  4. 激光模块

概述

飞机大战游戏是基于Windows的桌面设计游戏,需要实现的功能为:难度选择(根据敌机的不同移动速度来区分简单和困难)、文字提示功能和界面背景、遵循一定的规则进行游戏。
游戏术语:精灵机(又称为英雄机,是玩家操控的飞机),敌机(分为小敌机和Boss飞机),子弹(包括Boss发射的子弹和精灵机发射的子弹), 镭射激光(精灵机专属)。
游戏规则:玩家进入游戏,进行难度选择,到地图界面进行地图选择,之后进入游戏主体,Boss在界面上方,无法移动,但是也无法摧毁。Boss会在两个机翼不定时发射导弹,弹道为直线,精灵机被击中则游戏失败。小敌机随机刷新,小敌机一共有四种,随机在地图上方刷新。小敌机没有发射子弹功能,但是会向下移动。若精灵机和小敌机相撞,则精灵机被撞毁,游戏失败。玩家操控精灵机按住space键可以发射子弹,子弹可以击中小敌机和Boss发射的导弹,击中则摧毁敌机和导弹,并积1分。玩家操控精灵机按住shift键可以发射镭射激光,激光可以击中小敌机和Boss发射的导弹,击中则摧毁敌机和导弹,并积2分。玩家还可以操按下↑↓←→键控制精灵机上下左右移动躲避飞弹和小敌机。游戏结束显示玩家积分。

游戏图片,简单的使用说明

c++飞机大战_第1张图片

c++飞机大战_第2张图片
c++飞机大战_第3张图片

困难总结

1.1 精灵机的移动靠main.cpp的 Key_scan()实现。
1.2 png格式原生图片在窗口加载出来是有黑色边框的,解决方法是在原生图片加载之前先 加载一张掩码图,这样在窗口上就会只有图片里面需要的飞机和子弹的主体。详见 Object.cpp 中的draw()函数。
1.3 子弹和小敌机等有可以同时存在很多的特点,所以每一个子弹和敌机对象都是用双向链 表储存的。考虑到开发的便捷性,这里使用了STL容器中的list。
1.4 读取键盘数据用了_getch()函数,防止回文符的出现。
1.5 通过函数返回传值到相应函数实现了难度选择和地图选择。
1.6 设置了一个全局变量来记录得分。
1.7 方向和速度用一个double类型二维数组以正负以及绝对值大小来体现,需要时可以直接 加载。
1.8 在程序初始化时加载了音乐。
1.9 开发过程中发现构造函数并不能加载图片,所以设置相应函数在窗口初始化之前先调用以加载图片
1.10 Boss只能发射一枚火炮,所以设置了两个Boss重叠在一起,这样看起来就是Boss能发射两枚火炮。

下载链接

链接:https://pan.baidu.com/s/1oPGppVg17vau9vKI1wkc-A
提取码:0nyr

你可能感兴趣的:(c++)