- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
北科大软件课程设计报告
北京科技大学
软件课程设计报告
机房名称????
时 间?8月26日 至??9月6日
学 院
专业班级??? ????
姓??名?? ??
学??号? ??
指导教师???
成 绩???????
2013年 9 月
PAGE 7
软件课程设计报告
“坦克大战”游戏设计报告
通过对C语言的学习我们已经初步掌握了C语言程序的设计。对C语言程序的编写也有一定的经验。不过并没有在实际应用中使用C语言编写程序,而且是相对复杂的游戏程序编程。相信通过此次对小游戏的编写会让我们对C语言的理解更加深刻,同时也提高对C语言的应用能力。
本次课程设计总结如下:
一、 问题的提出
本次我们选择的题目是坦克大战。主要是因为坦克大战是从小就陪伴我们度过童年的一种小游戏,对它的各种功能都比较熟悉。因此,对于能编写这样一个小游戏我们都是比较感兴趣的。同时,游戏编写中会用到结构体、链表、枚举等在C语言学习中比较不熟悉的知识有助于我们在实践中加深对这些知识点的理解与应用。
二、 游戏框架
(1)整体框架
坦克大战
坦克大战
游戏中功能游戏结束后的界面功能初始界面功能
游戏中功能
游戏结束后的界面功能
初始界面功能
显示初始游戏界 面显示得分、最高分
显示初始游戏界 面
显示得分、最高分
恢复界面等待下一轮游戏
按空格键开始游戏,敌方坦克开始生成,游戏倒计时开始。
(2)游戏中的功能细化
游戏中功能
游戏中功能
实时动态显示玩家得分,游戏剩余时间游戏时间到或者被敌方坦克击中游戏结束玩家坦克与地方坦克碰撞同归于尽,游戏结束敌方不断生成坦克与玩家展开战斗,坦克被子弹击中消失
实时动态显示玩家得分,游戏剩余时间
游戏时间到或者被敌方坦克击中游戏结束
玩家坦克与地方坦克碰撞同归于尽,游戏结束
敌方不断生成坦克与玩家展开战斗,坦克被子弹击中消失
三、详细设计
1、主函数模块main()函数模块
主要功能为完成游戏的计时,并在游戏进程中实时显示得分和剩余时间等不断更新的数据;调用其它函数来完成点击鼠标、按下键盘、精灵与世界边界碰撞时的效果;实现说明文字的显示和隐藏。
步骤详细介绍:
第一步、按空格键,游戏开始,“空格开始”字样消失,设置初始时间为30。
第二步、按WASD键,控制坦克上下左右运动。
第三步、游戏开始后,右上角实时显示剩余时间。
第四步、当超过30秒,游戏结束,重新显示“空格开始“字样,游戏时间设为0,坦克回到初始位置。
详细代码:
int PASCAL WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// 初始化游戏引擎
if(!dInitGameEngine( hInstance, lpCmdLine ))
return 0;
// 游戏初始化代码
dSetWindowTitle(坦克大战); // 设置游戏窗口标题
//
g_pMyTank=(weapon*)malloc(sizeof(weapon));
strcpy(g_pMyTank-szName,player);
g_pMyTank-iHp=1;
dSetSpriteWorldLimit(g_pMyTank-szName,WORLD_LIMIT_NULL,
WORLD_LEFT,WORLD_TOP,WORLD_RIGHT,WORLD_BOTTOM);
dSetSpriteCollisionSend(g_pMyTank-szName, true);
float fPosX0,fPosY0;
fPosX0=dGetSpritePositionX(g_pMyTank-szName);
fPosY0=dGetSpritePositionY(g_pMyTank-szName);
bool iLoad=true; // 是否载入地图
// 游戏主循环
while(dEngineMainLoop()) // 运行游戏引擎,刷新游戏屏幕。当引擎关闭时,返回false
{
// 游戏主循环代码
// 获取游戏屏幕刷新一次的时间间距
float fTimeDelt
文档评论(0)