当前位置:文档之家› 程序设计基础之飞机大战说明书

程序设计基础之飞机大战说明书

程序设计基础之飞机大战说明书
程序设计基础之飞机大战说明书

X X大学

程序设计基础课内项目说明书

XXXX年XX月XX日

1.设计目的(小标题黑体五号字)

制作一个简单的飞机大战游戏。

2.设计内容

此飞机大战游戏是一款射击游戏,它随着你的分数增加,而不断改变你的等级,同时等级越高难度就会越大,一旦敌机逃离那么你的分数将会减少,与敌机相撞你的生命值将会减少,按鼠标左键可以连续发射子弹,鼠标移动控制我机移动。

3.本设计所采用的数据结构

使用了两个动态链表,分别储存敌机图片的左上角坐标(X,Y)以及子弹图片的左上角坐标(X,Y),删除子弹与敌机以及敌机与我机的碰撞都是基于图片的左上角坐标(X,Y)来判定。

4.功能模块详细设计

4.1 子弹相关模块

4.1.1详细设计思想

当检测到左键按下时,调用添加子弹的函数并进行传参(鼠标的位置坐标)产生新的子弹;当子弹击中敌机(移动子弹的函数来判断是否击中)后调用删除子弹函数来删除子弹并释放内存;移动子弹函数在中还包括子弹是否出界并删除的函数;游戏结束后把所有的子弹都删掉。

4.1.2 核心代码

//子弹

int bulletvx=0;

int bulletvy=-20;

int bulletwidth=6;

int bullethigh=11;

typedef struct Tag_Bullet

{

int x;

int y;

struct Tag_Bullet*Next;

}bullet,*lbullet;

bullet bullethead;

lbullet lbhead=&bullethead,lbtail=&bullethead;

lbullet pushbullet(int bx,int by); //添加子弹-返回添加的子弹指针lbullet removebullet(lbullet it); //删除子弹-返回下一个子弹的指针lbullet freebullet(); //删除全部子弹

lbullet movebullet(); //移动子弹

//添加子弹

lbullet pushbullet(int bx,int by)

{

lbtail=lbtail->Next=(lbullet)malloc(sizeof(bullet));

lbtail->x=bx;

lbtail->y=by;

lbtail->Next=NULL;

return lbtail;

}

//删除子弹

lbullet removebullet(lbullet It)

{

lbullet cbullet;

for (cbullet=lbhead;cbullet->Next!=NULL;cbullet=cbullet->Next) {

if(cbullet->Next==It)

{

if(It==lbtail)//尾节点单独处理

lbtail=cbullet;

cbullet->Next=It->Next;

free(It);

break;

}

}

return cbullet->Next;

}

//清空子弹

lbullet freebullet()

{

for(lbullet cp=lbhead->Next,Nextp;cp!=NULL;)

{

Nextp=cp->Next;

free(cp);

cp=Nextp;

}

lbhead->Next=NULL;

return lbhead;

}

//移动子弹

lbullet movebullet()

{

for(lbullet cbullet=lbhead->Next;cbullet!=NULL;)

{

cbullet->x+=bulletvx;

cbullet->y+=bulletvy;

for(lenemy cenemy=lenemyhead->Next;cenemy!=NULL;cenemy=cenemy->Next)

{

//检测子弹与敌机的碰撞

if(pengzhuang1(cbullet,cenemy))

{

int a,b;

a=cenemy->x;b=cenemy->y;

removebullet(cbullet);

removeenemy(cenemy);

show(a-35,b-60);

pushenemy(rand()%400,0);

//敌机死亡,添加新的敌机

break;

}

}

//判断子弹是否出界

if(cbullet->x<0||cbullet->x>=WIDTH||cbullet->y<=0||cbullet->y>=HEIGHT) cbullet=removebullet(cbullet);

else

cbullet=cbullet->Next;

}

return lbhead;

}

//检测子弹与敌机是否碰撞

int pengzhuang1(lbullet bullet,lenemy enemy)

{

if(!(bullet->x+bulletwidthx||bullet->x>enemy->x+enemywidth||bullet->y+bullethighy||bullet->y>enemy->y+enemyhigh))

score+=3;

return !(bullet->x+bulletwidthx||bullet->x>enemy->x+enemywidth||bul let->y+bullethighy||bullet->y>enemy->y+enemyhigh);

}

4.2 敌机相关模块

4.2.1详细设计思想

一开始就随机产生三个敌机,子弹击中敌机就会删除敌机(子弹相关模块中)并调用产生敌机的函数来再产生一个新的敌机;移动敌机的函数中同样检测敌机是否出界并调用删除敌机函数;在用户数据更新函数中:检测我机是否与敌机碰撞;游戏结束之后将所有飞机删除。

4.2.2 核心代码

//敌机

int enemyvx=0;

int enemyvy=5;

int enemywidth=110;

int enemyhigh=84;

typedef struct Tag_Enemy

{

int x;

int y;

struct Tag_Enemy*Next;

}enemy, *lenemy;

enemy enemyhead;

lenemy lenemyhead=&enemyhead,lenemytail=&enemyhead;

lenemy pushenemy(int ex,int ey); //添加敌机-返回添加的敌机指针lenemy removeenemy(lenemy it); //删除敌机-返回下一个敌机的指针lenemy freeenemy(); //删除全部敌机

lenemy moveenemy(); //移动敌机

//用户数据更新函数

void updateinput()

{

MOUSEMSG m;

while(MouseHit())

{

m=GetMouseMsg();

if(m.uMsg==WM_MOUSEMOVE)

{

plancex=m.x;

plancey=m.y;

for(lenemy

cenemy=lenemyhead->Next;cenemy!=NULL;cenemy=cenemy->Next)

{

//检测敌机与我机是否碰撞

if(pengzhuang2(plancex,plancey,cenemy))

{

int a,b;

a=cenemy->x;b=cenemy->y;

removeenemy(cenemy);

show(a-35,b-60);

pushenemy(rand()%400,0);

//TODO:敌机死亡,添加新的敌机

break;

}

}

}

else if(m.uMsg==WM_LBUTTONDOWN)

{

pushbullet(plancex+13,plancey+40);

}

}

char in;

if(_kbhit())

{

in=getch();

if(in==32)

d=3;

}

}

//添加敌机

lenemy pushenemy(int bx,int by)

{

lenemytail=lenemytail->Next=(lenemy)malloc(sizeof(enemy));

lenemytail->x=bx;

lenemytail->y=by;

lenemytail->Next=NULL;

return lenemytail;

}

//删除敌机

lenemy removeenemy(lenemy It)

{

lenemy cenemy;

for(cenemy=lenemyhead;cenemy->Next!=NULL;cenemy=cenemy->Next) {

if(cenemy->Next==It)

{

if(It==lenemytail)//尾节点单独处理

lenemytail=cenemy;

cenemy->Next=It->Next;

free(It);

break;

}

}

return cenemy->Next;

}

//清空敌机

lenemy freeenemy()

{

for(lenemy cp=lenemyhead->Next,Nextp;cp!=NULL;)

{

Nextp=cp->Next;

free(cp);

cp=Nextp;

}

lenemyhead->Next=NULL;

return lenemyhead;

}

//移动敌机

lenemy moveenemy()

{

for(lenemy cp=lenemyhead->Next;cp!=NULL;)

{

cp->x+=enemyvx;

cp->y+=enemyvy;

if(cp->x<0||cp->x>=WIDTH||cp->y<=0||cp->y>=HEIGHT)

{

cp->y=0;

cp->x=rand()%410;

score-=1;

}

else

{

cp=cp->Next;

}

}

return lenemyhead;

}

//检测敌机与我机是否碰撞

int pengzhuang2(int x,int y,lenemy enemy)

{

if(!(x+100x||x>enemy->x+enemywidth||y+151y||y>enemy->y+enem yhigh))

l--;

return !(x+100x||x>enemy->x+enemywidth||y+151y||y>enemy->y+ enemyhigh);

}

5.心得体会详细

从这次的C语言项目开发,我学到了许多东西,主要有:(1)对全局变量和局部变量有了全新的认识,局部变量更适合于分函数,在一个分函数中更能发挥它的独特优势,而全局变量更能适于整个项目的使用,便于在各个分函数中使用,但有一定的缺陷,我认为局部变量更加好用。(2)传参的使用可以方便函数之间的联系,使得函数的调用能够发挥更加大的作用,建立分函数之间的独特联系,我也用到了去进行传链表的一个节点的指针,使得链表的功能更加的强大,当然这只是传了节点的指针,但我之前从没有尝试这中做法,这次项目给了我这个机会去挑战与尝试。(3)也明白了函数声明的多样化与丰富化,提前对函数进行声明,就不用再去在多次调用函数之前进行多次声明了。声明什么样的函数就已经事先限定了它要去返回什么类型的值。

总之,感谢老师给了我这样一种挑战与尝试的机会,让我从中学到了很多的东西,使得我对大一的第一学年所学的C语言这门语言有了更深的学习与知识的拓宽,对C语言这门语言有了更加系统化和完整化的认识。

附录:参考文献列表

《C语言课程设计与游戏开发实践教程》

《C语言设计》

飞机大战游戏 模块设计报告

戏游机大战飞 模块设计报告 青岛软件园软件人力资源服务有限公司实训服务中心 版本历史 目录 0. 文档介绍 ............................................................... 文档目的 ................................................................. 文档范围 ................................................................. 读者对象 ................................................................. 参考文献 ................................................................. 术语与缩写解释 ........................................................... 1. 模块命名规则............................................................ 2. 模块汇总 ............................................................... 模块汇总表 ............................................................... UML活动图 ................................................................ 类体系 ....................................................................

飞机大战实验报告

飞机大战实验报告 专业:网络工程132班 学号:139074298 姓名:孙仁强 计算机科学与技术学院二零一六年十二月

一、软件运行所需要的软硬件环境 本系统是以Windows系统为操作平台,用Java编程语言来实现本系统所需功能的。本机器的配置如下: 处理器:CORE i7 主频:1.2Hz以上 内存:4G以上 硬盘:HHD 50G 编程语言:Java 开发环境:windows7 开发软件:Eclipse Mars 二、游戏流程 1.用户打开游戏,进入开始菜单。 2.用户点击开始游戏按钮,进入游戏界面; 3.用户通过触屏方式控制玩家飞机上下左右移动,躲避与子弹相撞; 4.游戏失败后,显示本次游戏得分,用的秒数和水平; 5.退出游戏 三、主要代码 1、准备代码设置窗口使用双缓冲使飞机不闪烁 Constant设置窗口大小 package com.ahut.准备代码; publicclass Constant { publicstaticfinalint GAME_WIDTH = 350; publicstaticfinalint GAME_HEIGHT = 600; } package com.ahut.准备代码; import java.awt.Image; import java.awt.image.BufferedImage;

import java.io.IOException; import https://www.doczj.com/doc/0d18086406.html,.URL; public class GameUtil { private GameUtil () {} public static Image getImage(String path) { BufferedImage bi = null; try { URL u = GameUtil.class.getClassLoader().getResource(path); bi = javax.imageio.ImageIO.read(u); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return bi; } } package com.ahut.准备代码; import java.awt.Frame; import java.awt.Graphics; import java.awt.Image; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class MyFrame extends Frame{ public void lauchFrame() { setSize(Constant.GAME_WIDTH, Constant.GAME_HEIGHT); setLocation(100, 100); setVisible(true); new PaintThread().start(); addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(0); } }); }

飞机大战策划案

飞机大战策划案 目录 飞机大战策划案 (1) 一、概述 (2) 二、UI界面 (2) 2.1、开始界面 (2) 2.2、游戏关卡界面 (3) 2.3、游戏正式界面 (3) 2.4、排行界面 (4) 三、游戏正式开始规则 (5) 三、操作规则 (5) 四、飞机属性 (6) 五、敌机属性 (7) 5.1、敌机分类 (7) 5.2、敌机攻击模式 (7) 5.3、敌机出现及移动轨迹 (7) 六、积分获取规则 (8) 七、死亡复活规则 (8) 八、游戏正式开始规则 ..................................................................... 错误!未定义书签。 九、进入、暂停及结算界面 (9) 9.1、飞机进入场景模式: (9) 9.2、游戏暂停模式: (9) 8.2、结算界面 (9) 十、关卡详细设计 (10) 第一关设计: (11)

一、概述 飞机大战为一款竖版战机游戏,本游戏同时可支持多名玩家进行双人协作的飞机游戏,两名玩家结成一组共同开启一个副本场景进行游戏。最多支持100个副本。游戏开始后界面始终向下卷动。 二、UI界面 2.1、开始界面 说明: 1)该界面有一张底图 2)界面上方为游戏宣传图片 3)界面下方有三个按钮,分别为“开始游戏”、“排行榜”和“离开游戏”,注意每个按钮都有“普通”、“高亮”和、“点击”三种状态。 4)点击排行榜后,会出现排行界面。界面中按照分数高度的顺序排列所

有参加游戏的玩家。 5)点击离开游戏则关闭游戏。 6)点击开始游戏后进入游戏关卡界面。 2.2、游戏关卡界面 该界面出现时,关闭“开始界面”,界面由一张底图和11个按钮组成。 1-10个按钮为关卡选择按钮,第11个按钮为返回按钮,点击返回按钮后,返回开始界面。返回按钮有“普通”、“高亮”和、“点击”三种状态。 关卡按钮有“普通”、“高亮”、“点击”和“置灰”四种状态。初始状态为第一关按钮为普通可点击状态、其余关卡置灰不可点击。当第一关通关后,第二关按钮为普通可点击状态,以此类推。 点击“可点击的关卡按钮”后,进入游戏正式界面。 2.3、游戏正式界面 游戏界面大小为:600*800,界面背景不断向下卷动。

飞机大战实训报告.

程序设计综合实践 实习报告 学院名称 专业班级 学生姓名 学号 指导教师 山东科技大学

一、实习题目:飞机大战游戏的设计与实现 二、实习时间:18周~ 19周实习地点: 三、实习任务: 1.基本功能要求:飞机大战游戏必须运用透明贴图、按键处理、定时控制、双缓冲技术等技术实现战机(玩家)和敌机(计算机)对战功能 2.扩展功能:在完成基本功能基础上可以增加双人对战、游戏积分制、声音效果、多种子弹类型、客机类型、游戏关卡设计、多种类型敌机、游戏中间结果存贮等功能 四、小组分工说明:自己完成 五、实习成绩 六、指导教师对实习的评语: 指导教师(签章): 2015年月日

目录 1.概述 (4) 1.1实训项目简介 (4) 1.2实训项目功能说明 (4) 2.相关技术 (5) 2.1透明贴图技术 (5) 2.2 获取矩形区域并判断两个矩形区域是否相撞 (5) 2.3鼠标控制我方战机 (5) 2.4 Windows定时器技术 (6) 2.5 CObList链表 (6) 2.6对话框的应用 (7) 2.7双缓冲技术 (7) 3.需求分析 (7) 3.1功能需求分析 (7) 3.2 数据需求分析 . (7) 3.3 行为需求分析 (7) 3.4 其他需求 (7) 4.总体设计与详细设计 (8) 4.1 系统模块划分 (8) 4.2 主要功能模块 (8) 4.2.1系统主要类图 (8) 4.2.2飞机大战游戏设计执行流程图 (8) 4.3 扩展功能设计思路 (9) 4.4 软件结构设计体会 (9) 5.编码实现 (10) 5.1绘制游戏背景位图的程序 (10) 5.2各个游戏对象的绘制 (10) 5.3我方战机位置的动态控制 (12) 5.4各个游戏对象碰撞的实现 (13) 5.5游戏界面输出当前游戏信息 (15) 6.测试情况说明 (17) 6.1主要模块测试情况 (17) 6.2 主要功能测试情况 (18) 7. 实训中遇到的主要问题及解决方法 (19) 8.实训收获与体会 (19)

飞机大战游戏 模块设计报告

飞机大战游戏 模块设计报告 青岛软件园软件人力资源服务有限公司 实训服务中心

版本历史

目录 0. 文档介绍 ............................................................... 文档目的 ................................................................. 文档范围 ................................................................. 读者对象 ................................................................. 参考文献 ................................................................. 术语与缩写解释 ........................................................... 1. 模块命名规则............................................................ 2. 模块汇总 ............................................................... 模块汇总表 ............................................................... UML活动图................................................................ 类体系.................................................................... 3. 游戏规则子系统.......................................................... 人工智能 ................................................................. 4. 3游戏对象子系统........................................................ 应用程序对象 ............................................................. 游戏对象 ................................................................. 战机对象 ................................................................. 敌机对象 ................................................................. 导弹对象 ................................................................. 炸弹对象 ................................................................. 爆炸对象 ................................................................. 文字对象 .................................................................

飞机大战MFC实验报告

实训报告 飞机大战游戏设计与开发

目录 1. 概述 (4) 2. 相关技术 (4) 2.1 透明贴图技术 (4) 2.2 CObList链表 (4) 2.3获取矩形区域函数 (4) 2.4弹出对话框函数 (5) 2.5字体的个性化输出函数 (5) 2.6设置定时器 (5) 2.7双缓冲技术 (5) 2.8 内存释放技术 (6) 2.9对话框中添加动态按钮 (6) 2.10检测方向键按下 (6) 3. 需求分析(用结构化方法或面向对象方法给出系统的主要需求模型) (6) 3.1功能需求分析 (6) 3.2 数据需求分析 (7) 3.3 行为需求分析 (7) 3.4 其他需求 (8) 4. 总体设计与详细设计 (8) 4.1 系统模块划分 (9) 4.2 主要功能模块 (10) 4.3 扩展功能设计思路 (10) 5. 编码实现 (11) 5.1游戏初始创建 (11) 5.2定时器 (11) 5.3背景及游戏开始、结束界面绘制函数 (11) 5.4键盘控制函数 (12) 5.5游戏对象进行碰撞测试和碰撞销毁 (13) 5.6创建动态按钮(开始游戏、游戏规则) (13) 5.6重新开始游戏代码 (14) 5.7设置游戏难度代码 (14) 5.8游戏结束时释放资源函数 (15) 5.9调整对话框大小函数 (15) 5.10开始界面背景绘制函数 (15) 5.11选择下一关卡以及选择完成后的执行代码 (16) 6.测试情况说明。 (17) 6.1主要模块测试情况(白盒) (17) 6.11各游戏对象碰撞检测爆炸模块测试 (17) 6.12战机导弹的方向速度模块测试 (17) 6.13文字显示,游戏结束和关卡进入模块测试 (18) 6.14设置游戏难度和重新开始模块测试 (18) 6.2 主要功能测试情况(黑盒) (18)

飞机大战游戏设计与实现

程序设计综合实践报告 信息科学与工程学院 2015年12月20日

目录 1. 概述 (1) 1.1 关卡设置 (1) 1.2 敌机设置 (1) 1.3 战机设置 (1) 1.4 游戏设置 (1) 2. 相关技术 (2) 2.1 Windows定时器技术 (2) 2.2 双缓冲技术 (2) 2.3 获取矩形区域 (2) 3. 总体设计与详细设计 (2) 3.1 系统模块划分 (2) 3.2 主要功能模块 (3) 4. 编码实现 (4) 4.1 初始准备 (4) 4.2 战机对象 (6) 4.3 敌机对象 (7) 4.4 道具对象 (9) 4.5 主要内容 (10) 4.6 窗口显示信息 (17) 5. 实训中遇到的主要问题及解决方法 (20) 5.1 产生中断及解决方案 (20)

5.2 图片闪烁问题及解决方案 (20) 6. 实训体会 (20)

1. 概述 项目:飞机大战 主要功能有以下几点: 1.1 关卡设置 本次飞机大战游戏中共设置了四个关卡,第一关的难度设置较低,仅有敌机对其进行攻击;第二关在原有的基础上增加一些补血的小道具,当积分达到一定的时候便会出现该道具,并且敌机出现的频率也比第一关高;第三关在第二关的基础上新出现了小boss,并增加了其他的道具;第四关在第三关的基础上再新出现大boss,当积分达到要求以及大boss被消灭后通关成功。 1.2 敌机设置 小敌机随机出现,炮弹也随机发射,当小敌机与战机相撞或被战机的子弹击中时,小敌机消失。当达到一定积分时,小boss出现并随机发射出与小敌机一样的炮弹,但是炮弹分三个方向发射出。当小boss被战机的子弹击中或与战机相撞时失去5滴血。当到达四关并且积分足够多时出现大boss,同小boss一样,当大boss与战机相撞或被战机子弹击中时失去1滴血。除此之外,小boss和大boss上方都有血条显示,当血条消失时意味着生命消失,大boss和小boss消失。小boss会在屏幕上随机出现和走动出了屏幕后会在屏幕的任意地方再随机出现,直至血量为0消失。大boss则在屏幕中随机走动不出屏幕,直至血量为0消失。 1.3 战机设置 战机初始有五条生命,每条命的血量为50,所获得的积分以及其生命值、血条都在窗口的左上角显示。在第一、二关时,按空格键战机会出现两个向上发射的炮弹,到第三、四关的时候,按空格键战机会发射三个不同方向的炮弹。战机吃到药瓶道具时血量会增加20,但不可以超过50;吃到闪电道具时,便可放大招,放大招的次数为15。当战机被敌方的炮弹击中或与敌方相撞时,血量减少,减少为0时生命值减1,直至生命值为0。 1.4 游戏设置 进入游戏时,会有背景音乐,窗口左上角显示战机所得积分及其生命值。根据积分情况进入不同的关卡。游戏通关时屏幕清空,并显示通关成功,按Y可重新开始游戏。当战机的血量以及生命值为0时,游戏失败,屏幕清空并显示游戏结束,按Y即可重新开始游戏。

飞机大战游戏设计报告

JAVA期中作业 飞 机 大 战

目录 飞机大战游戏设计报告 1、游戏名称 (1) 2、游戏初步框架: (1) 3、游戏规则: (1) 4、需求分析 (2) 4.1功能需求: (2) 4.2数据需求: (3) 4.3用户需求: (3) 4.4行为需求: (3) 5、系统设计 (4) 5.1 系统模块划分 (4) 5.2 主要功能模块 (5) 6、详细设计 (6) 6.1 开发工具 (6) 6.2 游戏界面设计 (6)

飞机大战游戏设计报告 1、游戏名称 《飞机大战》 2、游戏初步框架: 游戏元素:游戏背景、不同种类的飞机、敌机 游戏成分:碰撞之后的血量计算、分数统计、暂停恢复、数据存储 游戏的总体设计:分为三个场景,第一个为游戏的进入场景,第二个为游戏的主界面场景,第三个为游戏结束场景,游戏分别有不同关卡,每一关有自己的剧情设计,玩法各一。 游戏开始场景就是开场背景,资源加载以及初始化处理,比如数据存储等。 游戏主界面场景是游戏核心,主要展示游戏过程,在游戏过程中计算得分,玩家战机血量等。 游戏结束界面是统计当前分数,显示玩家的最高分记录,并给出菜单的进一步设计。 3、游戏规则: (1)玩家战机数量为1。 (2)玩家可自由选择战机。 (3)玩家飞机可通过键盘控制战机上下左右移动。 (4)玩家子弹攻击敌机,敌机血量减少。

(5)敌机有计算机自主控制 (6)敌机从界面上端出现,不能反向运动,不能左右移动。 (7)敌机数量随机,由计算机控制。 (8)敌机可发送子弹,若战机被击中,血量减少,血量减少到一定程度,战机坠毁,游戏结束。 (9)子弹具有一定的速度。 (10)玩家可在一段时间内发送导弹清除屏幕中除Boss外的敌机。 4、需求分析 4.1功能需求: 飞机大战需要实现的主要功能如下: (1)用户进入游戏开始菜单可以选择开始游戏、退出游戏。 (2)战机可根据玩家的操作自由移动,但不可移出窗体外。 (3)玩家飞机以一定速度自下而上飞行,用户可以控制飞机上下左右移动。 (4)玩家飞机可连续发射子弹,子弹位置由战机起始位置决定,用户通过操控飞机位置来扫射飞机。 (5)玩家可选择不同的飞机,不同种类飞机的飞行速度不同。 (6)玩家飞机发射的子弹击中敌机后,敌机生命值减少,当生命值变为零时敌机坠毁,子弹击中敌机后消失。 (7)玩家飞机若被Boss敌机的子弹击中,玩家飞机则坠毁,游戏失败。

飞机大战程序设计报告

程序设计综合实践 实习报告 一、实习题目:飞机大战游戏 二、实习时间:2014.9.20-2014.9.30实习地点:J13-132、232 三、实习任务:通过项目实战,掌握C++面向对象编程的基础技术和Windows 应用程序的编程方法,能够运用MFC技术及其开发环境进行小项目的开发。 四、小组分工说明: 五、实习成绩 六、指导教师对实习的评语:

指导教师(签章): 年月日 飞机大战游戏 1.实习目的 1.1使学生全面了解软件项目实施的过程,理解软件企业对于程序员的基本 素质和技术能力要求。 1.2使学生掌握C++及Window程序设计的基本技术,能够运用MFC技术及其 开发环境进行小型项目的开发。 1.3重点培养学生的独立创新精神和查阅资料能力,提高其口头和书面的沟 通能力。 1.4使学生掌握快速学习新知识、新技术方法,培养良好的分析问题和解决 问题的能力 1.5重点提高学生的编程能力,使学生建立正确的编程理念,养成规范的编 程习惯。 2. 实习计划 1、9.20—9.21先建立CGameObject 类,利用继承机制,根据此类进行依次的派生。 2、9.22—9.25再建立派生类:Bomb,Ball,Enemy,MyPlane,Explosion等, 并实现各自功能。 3、9.26—9.29在xxView.cpp中的OnTimer中实现背景的设置,对敌机, 导弹,敌机子弹,爆炸效果的绘制,以及敌机子弹和战机,导弹和敌机的碰撞检验,并添加爆炸效果 4、9.29—9.30最后释放pDC以及定时器

3.实习过程 3.1 技术准备 透明贴图技术 绘制透明位图的关键就是创建一个“掩码”位图(mask bitmap),这个“掩码”位图是一个单色位图,它是位图中图像的一个单色剪影。 在详细介绍实现过程之前先介绍下所使用的画图函数以及函数参数所代表的功能;整个绘制过程需要使用到BitBlt()函数。整个功能的实现过程如下: (1) 创建一张大小与需要绘制图像相同的位图作为“掩码”位图; (2) 将新创建的“掩码”位图存储至掩码位图的设备描述表中; (3) 把位图设备描述表的背景设置成“透明色”,不需要显示的颜色; (4) 复制粘贴位图到“掩码”位图的设备描述表中,这个时候“掩码”位图 设备描述表中存放的位图与位图设备描述表中的位图一样; (5) 把需要透明绘制的位图与对话框绘图相应区域的背景进行逻辑异或操 作绘制到对话框上; (6) 把“掩码”位图与这个时候对话框相应区域的背景进行逻辑与的操作; (7) 重复步骤5的操作,把需要透明绘制的位图与对话框绘图相应区域的背 景进行逻辑异或操作绘制到对话框上; (8) 最后把系统的画笔还给系统,删除使用过的GDIObject,释放非空的指 针,最后把新建的设备描述表也删除。 BOOL CGameObject::LoadImage(CImageList& imgList,UINT

飞机大战实训报告

目录 1. 概述 (1) 2. 相关技术 (2) 2.1碰撞检测 (2) 2.2 CObList链表 (2) 2.3 设置定时器 (2) 2.4 背景滚动 (2) 2.5内存释放技术 (2) 3. 总体设计与详细设计 (2) 3.1 系统模块划分 (2) 3.2 主要功能模块 (3) 4. 编码实现 (5) 5. 实训中遇到的主要问题及解决方法 (37) 6. 实训体会 (37) 1. 概述 这次实训,目的以VS 为环境,利用MFC,使用C++语言编写一个简单的飞机大战游戏。 实现的主要功能: 1.有开始游戏界面,上下左右键控制飞机自由移动,空格键发射炮弹。 2.设有关卡,每打完一个boss就会过关,每过一关战机炮弹会升级,敌机随机发射 子弹数量增加。

3.战机起始十条命,可以通过过关和吃到道具增加血量。 4.战机子弹打中敌机,敌机就会爆炸,boss血量随关卡升高而增多,打败敌机或者 boss会有分数加成。 5.设有无敌模式和普通模式,无敌模式大招无限,生命无限,战机导弹直接升至最高 等级。 2. 相关技术 2.1碰撞检测 用CRect类的GetRect()函数可以获得当前对象的矩形区域,IntersectRect()并用此函数判断二者是否碰撞。 2.2CObList链表 这个程序使用CObList链表来存储各效果。CobList类似于一个双向链表,POSITION 类型的变量为链表的键。使用POSITION变量,既可以作为链表循环中的循环变量,也可以作为标记某个位置的标签。我们可以通过获得某元素的POSITION来访问它。 本程序中主要用到的函数有: GetHeadPosition():获取链表首元素的POSITION; AddTail():将新的元素添加到链表最后; GetNext( POSITION& rPosition ):使rPosition指向下一个元素。 2.3 设置定时器 SetTimer()函数来设置定时器。 2.4 背景滚动 为了让游戏场景更加逼真,游戏节奏更加合理,可以通过让背景滚动来提高游戏的场景效应,实现这一技术时,可以将一张背景图片复制为2张,从上到下连续的拼接在一起,使其不会出现图片的卡顿和瞬移现象。 2.5内存释放技术 这个程序中有大量的地方需要使用内存,如果不及时删除会出现闪图等情况,容易导致程序崩溃,要及时释放内存资源。 3. 总体设计与详细设计 3.1 系统模块划分

飞机大战实训报告

目录 1. 概述.................................................. 1. 概述 这次实训,目的以VS 为环境,利用MFC,使用C++语言编写一个简单的飞机大战游戏。

实现的主要功能: 1.有开始游戏界面,上下左右键控制飞机自由移动,空格键发射炮弹。 2.设有关卡,每打完一个boss就会过关,每过一关战机炮弹会升级,敌机随机发射子 弹数量增加。 3.战机起始十条命,可以通过过关和吃到道具增加血量。 4.战机子弹打中敌机,敌机就会爆炸,boss血量随关卡升高而增多,打败敌机或者boss 会有分数加成。 5.设有无敌模式和普通模式,无敌模式大招无限,生命无限,战机导弹直接升至最高 等级。 2. 相关技术 碰撞检测 用CRect类的GetRect()函数可以获得当前对象的矩形区域, IntersectRect()并用此函数判断二者是否碰撞。 CObList链表 这个程序使用CObList链表来存储各效果。CobList类似于一个双向链表,POSITION 类型的变量为链表的键。使用POSITION变量,既可以作为链表循环中的循环变量,也可以作为标记某个位置的标签。我们可以通过获得某元素的POSITION来访问它。 本程序中主要用到的函数有:

GetHeadPosition():获取链表首元素的POSITION; AddTail():将新的元素添加到链表最后; GetNext( POSITION& rPosition ):使rPosition指向下一个元素。 设置定时器 SetTimer()函数来设置定时器。 背景滚动 为了让游戏场景更加逼真,游戏节奏更加合理,可以通过让背景滚动来提高游戏的场景效应,实现这一技术时,可以将一张背景图片复制为2张,从上到下连续的拼接在一起,使其不会出现图片的卡顿和瞬移现象。 内存释放技术 这个程序中有大量的地方需要使用内存,如果不及时删除会出现闪图等情况,容易导致程序崩溃,要及时释放内存资源。 3. 总体设计与详细设计 系统模块划分

C++课程设计报告【飞机大战】

C++程序设计A2 课程设计报告 课程名称C++程序设计A2 课题名称飞机大战 专业计算机科学与技术 班级1820544 ___ 学号182054424 _____ 姓名王锐____ _ 指导教师韩燕丽__ 2019年6 月15 日

(一)、课程设计题目: 飞机大战 (二)、目的与要求: 1、目的: (1)要求学生达到熟练掌握C++语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。 2、基本要求: (1)要求利用面向对象的方法以及C++的编程思路来完成系统的设计。 (2)在系统的设计中,要求运用面向对象的机制(继承及多态性),来实现系统功能,并且要建立清晰的类层次结构。 (3)在系统设计中要分析和定义各个类,每个类中要有各自的数据成员和成员数。 (4)主函数中提供菜单选项,并给出足够的选择信息以及提示信息。 (5)程序具有一定的健壮性,不会因为用户的输入错误引起程序运行错误而中断执行。对输入值的类型、大小范围、字符串的长度等,进行正确性检查,对不合法的输入值给出出错信息,指出错误类型,等待重新输入。 3、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。(三)、设计方法和基本原理: 功能要求: 设计一个基于控制台的简洁流畅的飞机大战游戏。 问题的解决方案: 根据系统功能要求,可以将问题解决分为以下步骤: (1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计; (2)分析系统中的各个实体及它们之间的关系包括属性和行为; (3)根据问题描述,设计系统的类层次; (4)完成类层次中各个类的描述(包括属性和方法); (5)完成类中各个成员函数的定义; (6)完成系统的应用模块; (7)功能调试;

飞机大战游戏修改后文档

飞机大战 制作者:王迪锋、陶晶楠、杨可鑫、佟春月 制作时间:2016/3

目录: 1、游戏概况------------------------3 2、游戏安装说明--------------------4 3、游戏玩法的基本介绍--------------5 4、游戏设计的基本框架--------------8 5、游戏设计中关键难点的解决-------11 6、关于学习程序设计的心得---------12

一、游戏概况 1、编写目的 编写此需求说明书的目的,是为了能让组中的成员更好的了解现实市场需求,从而开发出更加符合用户体验的软件。此说明书对Android飞机大战的总体及用户界面及运行环境等做出了详细的说明。它作为对该系统概要设计的依据,帮助开发人员了解本系统的框架思想及实现功能,并验证核实该产品能否满足用户要求的标准,便于技术文档和需求变化的管理。同时也是用户与开发人员双方对软件需求取得共同理解的基础。 软件开发小组的每一位成员都应详细阅读此说明书,明确开发目的,按要求完成软件的开发,经使用方认可的需求说明将作为产品特征评价、仲裁的重要考。 2、项目背景 ★软件名称:飞机大战 ★软件创意:开发出一款娱乐的安卓游戏应用程序 ★面向用户:所有喜欢娱乐的用户 ★项目组成员:王狄峰,佟春月,杨可鑫,陶晶楠 3、目标 为了开发出一款娱乐游戏软件。本款软件的目标定位是所有喜爱娱乐的用户。

4、开发环境 ★硬件环境 CPU:1.2GHz以上 内存:512MB以上 硬盘:40G以上 网络:10M/100M网卡,保证通畅的网络连接 其他:显示器、键盘、鼠标 ★运行平台: 手机/模拟器:android4.03以上 二、游戏安装说明 安装飞机大战.apk 本软件设计完成后经过测试没有发现问题,生成的应用程序名称为plane.apk,将此文件按照手机安装其他软件的步骤安装到是android操作系统的手机上,运行该软件即可

飞机大战游戏设计报告

飞机大战游戏设计报告 The document was finally revised on 2021

JAVA期中作业 飞 机 大 战 目录

飞机大战游戏设计报告 1、游戏名称 《飞机大战》 2、游戏初步框架: 游戏元素:游戏背景、不同种类的飞机、敌机 游戏成分:碰撞之后的血量计算、分数统计、暂停恢复、数据存储 游戏的总体设计:分为三个场景,第一个为游戏的进入场景,第二个为游戏的主界面场景,第三个为游戏结束场景,游戏分别有不同关卡,每一关有自己的剧情设计,玩法各一。 游戏开始场景就是开场背景,资源加载以及初始化处理,比如数据存储等。 游戏主界面场景是游戏核心,主要展示游戏过程,在游戏过程中计算得分,玩家战机血量等。 游戏结束界面是统计当前分数,显示玩家的最高分记录,并给出菜单的进一步设计。 3、游戏规则: (1)玩家战机数量为1。 (2)玩家可自由选择战机。 (3)玩家飞机可通过键盘控制战机上下左右移动。 (4)玩家子弹攻击敌机,敌机血量减少。 (5)敌机有计算机自主控制 (6)敌机从界面上端出现,不能反向运动,不能左右移动。 (7)敌机数量随机,由计算机控制。 (8)敌机可发送子弹,若战机被击中,血量减少,血量减少到一定程度,战机坠毁,游戏结束。 (9)子弹具有一定的速度。 (10)玩家可在一段时间内发送导弹清除屏幕中除Boss外的敌机。 4、需求分析 功能需求: 飞机大战需要实现的主要功能如下: (1)用户进入游戏开始菜单可以选择开始游戏、退出游戏。 (2)战机可根据玩家的操作自由移动,但不可移出窗体外。 (3)玩家飞机以一定速度自下而上飞行,用户可以控制飞机上下左右移动。 (4)玩家飞机可连续发射子弹,子弹位置由战机起始位置决定,用户通过操控飞机位置来扫射飞机。 (5)玩家可选择不同的飞机,不同种类飞机的飞行速度不同。

优质实用文档精选——飞机大战需求分析报告

飞机大战 需求分析报告 开发小组:STARS 组长: 组员: 2016.05.24

目录 一、概述 (2) 1.1 项目内容 (2) 1.2 项目开发 (2) 1.3 项目组员 (2) 1.4 组员分工 (3) 1.5 项目进度计划表 (3) 1.6 验收标准 (3) 1.7 项目关键问题 (3) 二、项目产品 (4) 2.1 产品中的角色: (4) 2.2 产品功能需求: (4) 2.2.1 游戏具体功能需求 (4) 2.2.2 用户功能需求 (4) 2.2.3 美工音效需求 (5) 2.2.4 游戏性能需求 (5) 三、游戏流程 (5) 3.0 游戏操作 (6) 3.1 游戏流程 (5) 3.2 游戏流程图 (6)

一、概述 1.1 项目内容 本项目产品名称为“飞机大战”,以Java语言开发,界面简洁流畅,游戏方式简单,玩家易于上手。 1.2 项目开发 以java语言进行项目的编程实现,项目开发环境如下: 开发工具:Eclipse 开发语言:Java 1.3 项目组员

1.4 组员分工 1.5 项目进度计划表 1.6 验收标准 1)游戏可正常运行; 2)实现项目需求说明书的大部分需求; 3)游戏界面友好,易于交互; 4)项目具有较高的安全性和稳定性; 1.7 项目关键问题 1)角色之间的碰撞探测要比较准确; 2)游戏要拥有一定难度,不可过于简单,但又能够吸引用户,不可过于太难;3)游戏界面设计要有自己的风格,以达到吸引用户的效果; 4)游戏的交互性要足够好,使得玩家易于上手; 5)测试的次数要充足,保证游戏的正常运行和安全性。

基于JAVA的飞机大战游戏的设计与实现计算机毕业设计论文

基于Java的飞机大战游戏的设计与实现 摘要 飞机大战是电脑游戏发展史中早期最为经典的游戏之一,经常能在掌上游戏机、手机以及电脑上见到这个游戏。不过,以往常见的飞机大战游戏是二维平面上的,并且大多以黑白的形式出现,当然在电脑上可以看到多种颜色的飞机大战。 Java自面世后就非常流行,发展迅速,对C++语言形成了有力冲击。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。 本游戏是一个基于java的飞机大战游戏,利用Eclipse平台实现经典的飞机大战游戏。游戏主要涉及了游戏状态控制功能、游戏难度的调整、游戏界面绘画功能、玩家游戏控制功能,最终展示了游戏开发的基本开发过程和设计思路。 关键词:飞机大战;游戏;java;Eclipse平台

Design and implementation of airplane wargame based on Java Abstract Lightning is the history of the development of computer games in the early one of the most classic game, often on a handheld game consoles, mobile phone and computer to see this game. However, the previous common lightning game is two-dimensional plane, and mostly in black and white, in the course of the computer can see lightning in color. Since Java is very popular after the launch, the rapid development of the C + + language to form a strong impact. Java technology has excellent versatility, efficiency, platform portability and security, widely used in personal PC, data center, game consoles, scientific supercomputers, cell phones and the Internet, also has the world's largest developer of professional community . In the world of cloud computing and mobile Internet industry environment, Java and more have a significant advantage and broad prospects. This game is a game based on the realization of Java lightning, lightning classic game based on Eclipse platform. The game is mainly involved in the game state control function, the difficulty of the game, the game interface to adjust the drawing function, game player control function, finally shows the basic development process of game development and design ideas. Keywords: lightning; game; Java; Eclipse platform

c++飞机大战实训报告附带码

目录 1. 概述 (2) 实训项目简介 (2) 实训功能说明 (2) 基本功能 (2) 附加功能 (2) 2. 相关技术 (3) Windows定时器技术 (3) 透明贴图实现技术 (3) CObList链表 (4) 获取矩形区域 (4) 使用AfxMessageBox显示游戏过程中的提示信息 (4) 内存释放 (4) CImageList处理爆炸效果 (4) 对话框的应用 (4) 3. 总体设计与详细设计 (4) 系统模块划分 (4) 主要功能模块 (5) 系统对象类图 (5) 系统主程序活动图 (5) 系统部分流程图 (5) 4. 编码实现 (8) 绘制游戏背景位图程序 (8) 飞机大战游戏对象的绘制程序 (8) 飞机大战游戏对象战机位置的动态控制 (8) 飞机大战游戏对象之间的碰撞实现 (9) 游戏界面输出当前信息 (9) 5. 项目程序测试 (9) 战机移动及子弹发射模块测试 (9) 敌机及炸弹模块测试 (20) 爆炸模块测试 (20) 6. 实训中遇到的主要问题及解决方法 (10) 7. 实训体会 (11)

1. 概述 实训项目简介 本次实训项目是做一个飞机大战的游戏,应用MFC编程,完成一个界面简洁流畅、游戏方式简单,玩起来易于上手的桌面游戏。该飞机大战项目运用的主要技术即是MFC编程中的一些函数、链表思想以及贴图技术。 实训功能说明 基本功能 (1)设置一个战机具有一定的速度,通过键盘,方向键可控制战机的位置,空格键发射子弹。 (2)界面中敌机出现的位置,以及敌机炸弹的发射均为随机的,敌机与敌机炸弹均具有一定的速度,且随着关卡难度的增大,数量和速度均增加。 (3)对于随机产生的敌机和敌机炸弹,若超过矩形区域,则释放该对象。 (4)添加爆炸效果,包括战机子弹打中敌机爆炸、敌机炸弹打中战机爆炸、战机与敌机相撞爆炸以及战机子弹与敌机炸弹相撞爆炸四种爆炸效果。且爆炸发生后敌机、子弹、炸弹均消失,战机生命值减一。 附加功能 (1)为游戏界面添加了背景图片,并在战机发射子弹、战机击中敌机、敌机击中战机、以及战机敌机相撞时均添加了背景音效。 (2)为游戏设置了不同的关卡,每个关卡难度不同,敌机与敌机炸弹的速度随着关卡增大而加快,进入第二关以后敌机从上下方均会随机出现,且随机发射炸弹。 (3)第一关卡敌机从上方飞出,速度一定,战机每打掉一直敌机则增加一分,每积十分,则为战机增加一个生命值,当战机得分超过50分则可进入下一关;进入第二、三关时敌机速度加快,分别从上下两方飞出,此时战机每得分20、30分,才会增加一个生命值,得分超过100、150分则进入下一关、通关。 (4)在游戏界面输出当前游戏进行信息,包括当前得分、当前关卡以及击中敌机数量。 (5)增加了鼠标控制战机位置这一效果,战绩的位置随着鼠标的移动而移动,并且点击鼠标左键可使得战机发射子弹。 (6)实现了暂停游戏的功能,玩家可通过键盘上的‘Z’键,对游戏进行暂停。 (7)通过对话框的弹出可提示玩家是否查看游戏说明、是否进入下一关、是否重新开始等消息,使得玩家可自己选择。

相关主题
文本预览
相关文档 最新文档