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

上传人:b****1 文档编号:685186 上传时间: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

本科毕业设计论文贪吃蛇游戏的实现

 

《面向对象程序设计》

课程设计

 

设计名称贪吃蛇游戏的实现

姓名蒋欢

指导教师张静

班级15级信息管理与信息系统

 

2016年06月18日

 

目录

第一章引言1

1.1研究背景1

1.1.1背景内容1

1.2研究方案1

第二章概述1

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++面向对象程序设计这门课程中学到很多东西,为我以后的专业课打下很好的基础,希望今后的学习中继续激励我进步,在此谨向张老师致以诚挚的谢意和崇高的敬意。

参考文献

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

当前位置:首页 > 考试认证 > 从业资格考试

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

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