游戏程序设计实验设计报告文档格式.docx

上传人:b****5 文档编号:19529351 上传时间:2023-01-07 格式:DOCX 页数:11 大小:108.77KB
下载 相关 举报
游戏程序设计实验设计报告文档格式.docx_第1页
第1页 / 共11页
游戏程序设计实验设计报告文档格式.docx_第2页
第2页 / 共11页
游戏程序设计实验设计报告文档格式.docx_第3页
第3页 / 共11页
游戏程序设计实验设计报告文档格式.docx_第4页
第4页 / 共11页
游戏程序设计实验设计报告文档格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

游戏程序设计实验设计报告文档格式.docx

《游戏程序设计实验设计报告文档格式.docx》由会员分享,可在线阅读,更多相关《游戏程序设计实验设计报告文档格式.docx(11页珍藏版)》请在冰豆网上搜索。

游戏程序设计实验设计报告文档格式.docx

通过游戏程序设计,提高编程兴趣与编程思路,巩固C++语言中所学的知识,合理的运用资料,实现理论与实际相结合。

黑白棋,又叫反棋、奥赛罗棋、苹果棋或翻转棋。

黑白棋在西方和日本很流行。

游戏通过相互翻转对方的棋子,最后以棋盘上谁的棋子多来判断胜负。

它的游戏规则简单,因此上手很容易,但是它的变化又非常复杂。

有一种说法是:

只需要几分钟学会它,却需要一生的时间去精通它。

(1).收集资料,分析课题,分解问题,形成总体设计思路;

(2).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍;

(3).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行;

(4).完成课程设计报告,并进行答辩

(5).黑白棋的棋盘是一个有8*8方格的棋盘。

下棋时将棋下在空格中间,而不是像围棋一样下在交叉点上。

开始时在棋盘正中有两白两黑四个棋子交叉放置。

游戏结束时输出得分。

画出模块枝干图与每个模块的程序流程图。

修改某些代码,改变其外观及功能。

(6).游戏操作应尽量简单。

界面美观,让人看了觉得舒服。

二、游戏设计方案

2.1、算法设计:

玩游戏过程采用递归算法,控制循环过程,可使游戏重复玩,判断迷宫游戏结束的算法是通过判断人有没有到达终点。

使坐标向前移动采用算法,通过递归算法将人物的每一节依次向前移动。

横坐标与纵坐标依次向前赋值,从而达到使人物前移的目的。

2.2、数据结构

下棋步法信息分别用两个结构体存储与表示。

将人物的横坐标x、纵坐标y和判断是否要出现下棋的位置分别作为人物的结构体的成员。

坐标的横坐标数组,纵坐标数组,坐标的节数n,坐标的移动方向direction、坐标的生命分别作为坐标的结构体的成员。

结构体内每个成员的存储类型均为整型。

简要说明:

图形驱动即完成初始化图形系统功能;

开始画面模块的主要作用是根据设置绘制出窗口;

玩游戏的过程是游戏此游戏程序的核心,又可细分为好多小的功能模块;

其中,显示人物模块仅完成显示人物功能;

坐标前移模块即通过递归算法实现坐标的向某方向移动;

判坐标死模块的功能是通过判断是否无棋可下,迟到棋盘来判断步法有没有死亡。

三、游戏开发平台构建

3.1、平台构建

模块应具有高内聚性,低耦合性。

这样,程序运行才更稳定,效率更高。

据功能将贪吃坐标游戏划分成四个大模块,九个小模块。

每个模块均具有自己的功能,而且,比较容易画出各个模块的流程图。

3.2、构建结构图

四、项目设计

贪吃坐标游戏体系机构,给出总体的模块结构图,确定程序的主要函数及之间的调用关系,同时设计坐标与游戏者等等的具体的数据结构。

4.1模块划分

Ø

主控模板

◆主控模块是由main函数实现,主要用来依次调用各个下层的模块,从而控制完成整个程序的功能。

画面主界面模块

◆画出一个封闭的墙。

游戏过程模块

◆该模块是整个程序的核心,它完成整个游戏过程,用函数来实现,每次坐标移动的时候,从最后一节开始到第二节,将前一节的坐标赋给后一节的坐标,移动后把最后的一节用背景色覆盖,然后坐标头按方向键更改位置,要确保人物出现在10的倍数位置上,判断坐标是否迟到人物的是坐标头坐标和人物坐标是否相同。

游戏结束处理模块

◆游戏结束的时候,读取出记录。

4.2棋盘与坐标的数据结构

表示人物与坐标的数据结构设计,用坐标函数

XstructSPoint

{

intx;

inty;

};

表示,则矩形块用函数画出来,在开始前,开始时在棋盘正中有两白两黑四个棋子交叉放置,黑棋总是先下子。

放置棋子后,设置坐标的一节身体为一个矩形块,用坐标来表示,由于在游戏的过程中坐标的身体不断的增长,需要用数组来存放每节的坐标,利用derection()分别表示坐标的右、左、上、下的方向。

//节点图像显示运动状态(方向)

enumBitmapState{M_NONE,M_UP_UP,M_DOWN_DOWN,M_LEFT_LEFT,M_RIGHT_RIGHT,

M_UP_LEFT,M_UP_RIGHT,M_LEFT_UP,M_LEFT_DOWN,

M_RIGHT_UP,M_RIGHT_DOWN,M_DOWN_RIGHT,M_DOWN_LEFT};

//节点运动状态(方向)

enumMoveState{S_NONE,S_UP,S_DOWN,S_LEFT,S_RIGHT};

//坐标位置结构

structSPoint

classCSnake

structSnake_Struct//定义坐标体状态

{

MoveStatehead;

MoveState*body;

MoveStatetail;

};

private:

intm_length;

//坐标的长度

Snake_Structm_newSnake;

//坐标的新态的所有节点运动状态

Snake_Structm_oldSnake;

//坐标的原态的所有节点运动状态

BitmapState*m_pStateArray;

//坐标的所有节点显示位图的状态

SPoint*m_pPos;

//坐标体坐标

BitmapStateGetRightState(MoveStateoldDirect,MoveStatenewDirect);

public:

voidMove(void);

voidChangeDirect(MoveStated);

voidAddBody(intn=1);

voidSetHeadPos(intx,inty);

BitmapState*GetStateArray(void);

SPoint*GetPos(void);

boolIsHeadTouchBody(intx,inty);

intGetLength(void);

voidInitial(void);

CSnake(intx_pos=0,inty_pos=0,intlen=1);

~CSnake();

#endif//_GREED_SNAKE_

4.3main函数实现

1.4main函数

主函数是函数的数控模块。

首先初始化图形系统,然后创建一个ctable桌子,接着调用函数初始化图形系统,之后调用函数画出游戏开始画面,再调用函数,即开始了游戏的具体过程,游戏结束后调用End函数进行游戏结束处理:

从文件中读取记录信息、排序、显示排行榜信息,最后关闭图形系统,结束程序。

主控模块的算法流程图如图所示。

其中带有两个竖线的矩形框表示对自定义函数的调用。

结束

五、游戏创新描述

本游戏和传统的游戏不一样,主要由以下几点:

设计了西方和日本等国流行的游戏。

游戏中增添了难度级别。

画面简洁,好玩。

六、调试运行与分析

试与测试软件的目标就是发现并改正潜伏的错误。

一个程序,必须经过认真的调试和测试,才能尽量减少错误、保证程序满足功能、性能需求,达到最初的设计、使用要求,从而保证程序的开发质量。

详细设计完成后,用C语言根据各个模块的算法来设计程序,每个模块都设计成一个自定义函数。

几个模块放在一个构成一个源程序文件,或者一个模块构成一个源程序文件。

源程序设计好后,输入到计算机,并储存到磁盘上;

然后对每个源程序文件都进行独立编译和调试;

并针对不同的模块设计测试用例进行单元测试;

最后,将几个分别开发的模块组装到一起,形成一个完整的程序,进行集成测试,从而发现并改正程序中存在的一些潜藏的错误,并使程序的容错能力大大增强。

调试与测试过程及结果如下所述:

七、程序清单

MainFrm.cpp:

#include"

stdafx.h"

bw.h"

MainFrm.h"

#ifdef_DEBUG

#definenewDEBUG_NEW

#undefTHIS_FILE

staticcharTHIS_FILE[]=__FILE__;

#endif

IMPLEMENT_DYNCREATE(CMainFrame,CFrameWnd)

BEGIN_MESSAGE_MAP(CMainFrame,CFrameWnd)

ON_WM_CREATE()

END_MESSAGE_MAP()

staticUINTindicators[]=

ID_SEPARATOR,

ID_INDICATOR_CAPS,

ID_INDICATOR_NUM,

ID_INDICATOR_SCRL,

CMainFrame:

:

CMainFrame()

}

~CMainFrame()

intCMainFrame:

OnCreate(LPCREATESTRUCTlpCreateStruct)

if(CFrameWnd:

OnCreate(lpCreateStruct)==-1)

return-1;

if(!

m_wndToolBar.CreateEx(this,TBSTYLE_FLAT,WS_CHILD|WS_VISIBLE|CBRS_TOP

|CBRS_GRIPPER|CBRS_TOOLTIPS|CBRS_FLYBY|CBRS_SIZE_DYNAMIC)||

!

m_wndToolBar.LoadToolBar(IDR_MAINFRAME))

{

TRACE0("

Failedtocreatetoolbar\n"

);

}

m_wndStatusBar.Create(this)||

m_wndStatusBar.SetIndicators(indicators,

sizeof(indicators)/sizeof(UINT)))

Failedtocreatestatusbar\n"

m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);

EnableDocking(CBRS_ALIGN_ANY);

DockControlBar(&

m_wndToolBar);

return0;

BOOLCMainFrame:

PreCreateWindow(CREATESTRUCT&

cs)

if(!

CFrameWnd:

PreCreateWindow(cs))

returnFALSE;

cs.style=cs.style&

(~FWS_ADDTOTITLE);

cs.cx=580;

cs.cy=400;

returnTRUE;

voidCMainFrame:

AssertValid()const

CFrameWnd:

AssertValid();

Dump(CDumpContext&

dc)const

Dump(dc);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 中医中药

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1