本科毕业设计论文贪吃蛇游戏的实现文档格式.docx

上传人:b****1 文档编号:13610902 上传时间:2022-10-12 格式:DOCX 页数:9 大小:190.25KB
下载 相关 举报
本科毕业设计论文贪吃蛇游戏的实现文档格式.docx_第1页
第1页 / 共9页
本科毕业设计论文贪吃蛇游戏的实现文档格式.docx_第2页
第2页 / 共9页
本科毕业设计论文贪吃蛇游戏的实现文档格式.docx_第3页
第3页 / 共9页
本科毕业设计论文贪吃蛇游戏的实现文档格式.docx_第4页
第4页 / 共9页
本科毕业设计论文贪吃蛇游戏的实现文档格式.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

本科毕业设计论文贪吃蛇游戏的实现文档格式.docx

《本科毕业设计论文贪吃蛇游戏的实现文档格式.docx》由会员分享,可在线阅读,更多相关《本科毕业设计论文贪吃蛇游戏的实现文档格式.docx(9页珍藏版)》请在冰豆网上搜索。

本科毕业设计论文贪吃蛇游戏的实现文档格式.docx

2.1程序流程图1

第三章设计的具体实现2

3.1InitInstance函数2

3.2UpdataGame函数3

3.3main函数3

3.4Csnake函数3

3.5getSymbol函数4

3.6isDead函数4

第四章调试及解决方法4

第五章测试结果5

第六章设计新的体会7

致谢8

参考文献8

附录9

第一章引言

1.1研究背景

贪吃蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着我,它的制作方法对于以前的我而言都是很神秘的[]。

我希望通过自己的所学知识把它剖析开来,真真正正的了解它的本质和精髓。

虽然我的编程能力不是很强,但是我有信心,在这次学习中我将从实践和实际的项目中提高自己的编程能力,因此我选定了这个题目。

1.1.1背景内容

贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束[]。

1.2研究方案

这个程序的关键是表示蛇的图形以及蛇的移动。

用一个小@表示蛇的一节身体,身体每长一节,增加一个@。

移动时必须从蛇头开始,如果不按任何键,蛇自行在当前方向右前移,当游戏者按了有效的方向键后,蛇头朝着指定的方向移动,一步移动一节身体,所以当按了有效的方向键后,先确定蛇头的位置,然后蛇身体随着蛇头移动,图形的实现是从蛇头的新位置开始画出蛇,在界面中央有个静止不动的食物,用户通过键盘来控制蛇的走向,当蛇吃到食物时,分数增加十分,界面开始更新,蛇的身体增加一节,食物的位置变化一次,当蛇碰到界面时,游戏自动结束,显示用户最后的分数。

第二章概述

2.1程序流程图

图1所示:

图1程序流程图

第三章设计的具体实现

3.1InitInstance函数

函数原型:

voidCsnake:

:

InitInstance()。

功能:

初始化游戏界面,初始化蛇身,将方向上下左右分别用4个键表示。

参数:

无。

返回值:

工作方式:

根据命令,调用相应函数,建立内存链表,将蛇身坐标压入队列,并将蛇身作为一个数组。

要求:

完成初始化,界面中给出蛇的相关信息

3.2UpdataGame函数

boolCsnake:

UpdataGame()。

获取用户按键信息,产生食物,并随机产生食物的相关坐标,判断在蛇没有死亡的

状态下是否碰到食物,如果碰到则加10分,蛇身增长一节,返回值定为true,如果蛇在移动过程中,撞到墙壁或身体交叉(蛇头撞到自己的身体),返回值定为false,并且输出用户之前所得的分数。

蛇的横坐标r,蛇的列坐标l,记录用户成绩score,获取用户按键信息chioce。

返回值:

true或者是false。

获取用户输入按键信息,并且根据用户输入按键信息作为关键字,进行判断。

要求:

自动使蛇开始运动,并且及时获取用户的按键信息,随时判断是否在移动过程中碰到墙壁或者身体交叉,给出结束信息。

3.3main函数

intmain()

程序的入口点,总控函数。

没有死亡的信息noDead。

0。

工作要求:

依次调用初始化界面的成员函数,更新游戏界面的成员函数,显示游戏界面的成员函数。

调用程序信息。

3.4Csnake函数

Csnake(intn)功能:

初始化游戏界面大小。

intn。

3.5getSymbol函数

chargetSymbol(constCmp&

c)const。

获取指定坐标点上的字符。

Cmp&

c。

snakeMap[c.lSign][c.rSign]。

3.6isDead函数

boolisDead(constCmp&

cmp)。

功能:

判断是否死亡。

参数:

Cmp&

cmp。

getSymbol(cmp)=='

@'

||cmp.rSign==row-1||cmp.rSign==0||cmp.lSign==line-1||cmp.lSign==0。

判断条件,从而决定返回值。

第四章调试及解决方法

此程序的在调试过程中曾先后出现蛇不吃仔等问题,比如:

问题1:

速度太快。

解决方法:

循环delay。

for(d=0;

d<

4;

d++)

delay(GAME_SPEED);

问题2:

食物可能出现在蛇身上。

解决方法:

依次判断,若重叠则重新生成食物。

voidcreateFood()

{inti;

Label;

food.position.x=left+10*((int)rand()%11);

food.position.y=top+10*((int)rand()%11);

for(i=0;

i<

=snake.length-1;

i++)

{

if(snake.nodes[i].x==food.position.x&

&

snake.nodes[i].y==food.position.y)gotolabel;

}}

第五章测试结果

图2

程序开始,初始化界面,调用函数自动生成蛇和食物之后,蛇自动向右走

图3

图4

图5

通过方向键来控制蛇的走向

图6

游戏结束输出最终成绩

第六章设计新的体会

在设计这个程序中我主要学会了如何运用以下有关C语言和C++的知识。

1)函数定义是要做到顾名思义是很重要的,它对读程序的人正确认识程序十分重要,在修改这个程序的过程中也能很快找到程序各模块的作用,大大增加了程序的可读性。

2)分析函数先从main()函数入手。

Main()函数是C++源程序编译时的开始,

从main()函数开始读函数可将其他函数的功能理解得更透彻。

3)在做程序的时候先列框架,将这个程序所要达到的目的(功能)分析出来,选择正确的数据结构然后在将程序模块化,按照模块编写函数更加简单合理。

4)我还了解了很多的库函数的作用,如字符串函数中有很多对字符串进行处理的函数,其功能我都有所了解。

5)学会了有关头文件的使用方法,及系统调配问题的解决方法等。

6)通过这次的C++程序课程设计,熟练地掌握C++语言的知识点,熟悉当前常用的软件开发环境(VisualC++),解决实际问题的能力的强化训练,正确理解掌握C++面向对象程序设计的基本特性:

类、对象、继承与派生、多态、虚函数、模板、流类库等。

但因为时间关系,只能把这次作为基点,有待改进,以后编程的话就不会产生恐惧心理,平时编程太少了。

尤其是更熟悉文件的操作了,对C++语言也更熟悉了,也能够自己改程序中的错误,真的让我体会到编程是痛并快乐着。

致谢

感谢张老师一学期的教导,让我在C++面向对象程序设计这门课程中学到很多东西,为我以后的专业课打下很好的基础,希望今后的学习中继续激励我进步,在此谨向张老师致以诚挚的谢意和崇高的敬意。

参考文献

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

当前位置:首页 > 考试认证 > IT认证

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

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