“坦克大战”游戏设计课程设计报告.doc
文本预览下载声明
软件课程设计报告
机房名称????
时 间?8月26日 至??9月6日
学 院
专业班级??? ????
姓??名?? ??
学??号? ??
指导教师???
成 绩???????
2013年 9 月
软件课程设计报告 “坦克大战”游戏设计报告
通过对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 fTimeDelta=dGetTimeDelta();
maxscore=load(filename);
if(g_bStart)
{
if(iLoad)
{
LoadMap();
iLoad=false;
}
g_fGameTime-=fTimeDelta;
if(g_fGameTime 0.f)
{
dSetTextValue(hight,maxscore);
显示全部