文档库 最新最全的文档下载
当前位置:文档库 › 贪吃蛇报告完整版

贪吃蛇报告完整版

贪吃蛇报告完整版
贪吃蛇报告完整版

贪吃蛇报告完整版

课程设计基础课程设计

贪吃蛇游戏设计

院系:,,,,,,,,,,,

班级:,,,,,,,,,,,

姓名:,,,,,,,,,,,

合作者:,,,,,,,,,,,

指导教师:,,,,,,,,,,,

时间 _____年____月____日

课程设计

课程设计

目录

1(1概

述 ..................................................................... ................................错误~未定义书签。

1.1.1研究的背景与意

义 ..................................................................... ...错误~未定义书签。

1.1.2 设计的任务和需要的知识点...................................................错误~未定义书签。

1. 生成设计主要完成的任

务 ......................................................错误~未定义书签。

2. 需要掌握和应用的知识

点 ......................................................错误~未定义书签。

1.1.3 具体完成的设计内容.................................................................错误~未定义书签。 1.2需求分析...................................................................... ...........................错误~未定义书签。

1.2.1 功能需

求 ..................................................................... .................错误~未定义书签。

1.2.2 操作方

法 ..................................................................... .................错误~未定义书签。

1. 进入游戏...................................................................... ............错误~未定义书签。

2. 游戏界面...................................................................... ............错误~未定义书签。

3. 游戏操作...................................................................... ............错误~未定义书签。

4. 游戏结束...................................................................... ............错误~未定义书签。 1.3 总体设计...................................................................... ..........................错误~未定义书签。

1.3.1 模块划

分 ..................................................................... .................错误~未定义书签。

1.3.2 总体数据结构设

计 ....................................................................错误~未定义书签。

1. 食物与蛇的数据结

构 ............................................................错误~未定义书签。

2. 排行榜中优胜者的数据结构................................................错误~未定义书签。

4. 符号常量的宏定

义 .................................................................错误~未定义书签。 1.4 详细设计...................................................................... ..........................错误~未定义书签。

1.4.1主控模块main函数.......................................................................错误~未定义书签。

1.4.2绘制游戏开始界面DrawK函

数 .................................................错误~未定义书签。

1.4.3游戏具体过程GamePlay函数....................................................错误~未定义书签。Score>per[4].score ..................................................... ....................................错误~未定义书签。

1.4.5显示排行榜信息模块pain_board函

数 .......................................错误~未定义书签。 1.5程序的调试与测

试 ..................................................................... .............错误~未定义书签。

1.5.1动画与音乐的同步播

放 .................................................................错误~未定义书签。

1.5.2蛇的运

行 ..................................................................... ..................错误~未定义书签。

1.5.3 终止程

序 ..................................................................... .................错误~未定义书签。

1.6 结

论 ..................................................................... ...........................错误~未定义书签。 1.7 结束

语 .....................................................................

..............................错误~未定义书签。 1.8程

序 ..................................................................... ...................................错误~未定义书签。

课程设计

课程设计

1

课程设计

1(1概述

本课程设计一软件方法为指导,采用了结构化、模块化、的程序设计方法,以C语言技术为基础,使用Turbo C++ 3.0为主要的开发工具,对贪吃蛇的游戏进行了需求分析、总体设计、详细设计、最终完成系统的实现与测试。 1.1.1研究的背景与意义

通过开发贪吃蛇的游戏系统,可使读者初步了解使用软件工程方法、技术和工具开发的过程,进一步掌握结构化、模块化的程序设计方法和步骤,进一步掌握数据结构设计、模块划分的方法,掌握局部变量、全部变量、机构体、共用体、数组、指针、文件等的数据的结构使用方法,掌握图形、声音、随机数等多种库函数的使用方法,学习动画、音乐、窗口、菜单、键盘等多项编程技术,进一步学会软件测试、调试、组装等软件测试方法,为以后的学习和将来的实际软件开发打下坚实的基础。

1.1.2 设计的任务和需要的知识点

1. 生成设计主要完成的任务

1) 通过编写“贪吃蛇游戏”程序,掌握结构化、模块化程序设计的细想,培养解决实际问题的能力。

2) 设计好数组元素与蛇、食物的对应的关系。

3) 随即产生食物。

4) 有分数统计、排行榜、分数存储等的功能。

5) 有同步播放的音乐、声音效果。

2. 需要掌握和应用的知识点

1) 数组的应用

2) 全局变量的使用

3) 按键处理

4) 机构体的应用

5) 图形、声音和动画的有关知识

6) 随机函数的使用

2

课程设计

7) 文件的基本操作

8) 结构化、模块化的设计方法

1.1.3 具体完成的设计内容

主要完成的任务:包含命令、全局变量的定义和宏定义、函数声明等,主要模块,动画、音乐播放模块,画出游戏开始界面模块,具体游戏过程模块,游戏结束处理模块。

3

课程设计

1.2需求分析

这类型的小游戏的市场价市相当大的,它的玩法简单,又有趣味性,市人们休闲的好游戏。这样的游戏操作简单,迎合了人们的需求。

1.2.1 功能需求

程序运行后显示动画、音乐,按键推出欢迎的界面,进入游戏的界面

后,左边有一个矩形区,为游戏区域,在矩形区中有食物和贪吃蛇,上方有统计分数和关数的显示区。

蛇在封闭的墙里用用矩形表示,围墙里随机的出现一个食物,通过按键盘的四

个光标键控制蛇向上、下、左、右四个方向移动,蛇头撞到食物,食物就被吃掉,蛇本身长一节,接着又出现了食物,等待蛇来吃。食物用另一种颜色的矩形表示,并且每次食物的位置是随机出现的。游戏中要使蛇的长度尽可能的长,但是不能使蛇撞到四周的墙壁,且蛇的身体不能撞到一起,否则游戏结束。

游戏中每吃掉一个食物就会有积分,随着分数的增加可以进入下一关,及速度

会加快。

游戏结束的时候,还能进行排名,输入自己的名字即可。

1.2.2 操作方法

1. 进入游戏

进入游戏后,首先出现的是游戏的片头,在这里,可以看到一个同步播放的

动画音乐和在屏幕不断的变换字体等等,此时,可以按回车键跳出游戏的画面。 2. 游戏界面

游戏界面的左上角为游戏的标题和游戏的创作人,右上变是目前的游戏成绩和

关数,界面中部是围墙,围墙中有一个正在爬行的蛇,还在某处有一个食物。现在就可以开始游戏操作了。

3. 游戏操作

在游戏中,游戏者可以用上、下、左、右控制蛇的行动,按键可以结束

游戏。

4

课程设计

4. 游戏结束

若打出高分可以进入排行榜,此时就会提示输入名字,并将画出的排行榜界面,

显示出前5名的游戏者的姓名和分数。

5

课程设计

1.3 总体设计

却东贪吃蛇游戏体系机构,给出总体的模块结构图,确定程序的主要函数及之间的调用关系,同时设计蛇与游戏者等等的具体的数据结构。 1.3.1 模块划分总体的结构模块结构图如下所示。

主控模板

动图画游结画形主戏束退

音驱界过处出乐动面程理

读成写排取绩入行记排文榜录行件

主控模板

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

动画音乐模块

读模块用来同步播放下雪的动画和简单的音乐,并在屏幕的中间输出颜色不断变化的欢迎词。

画主界面模块

画出一个封闭的墙,当蛇贴这墙走的时候会擦掉部分的围墙,使线变细,图形变得不好看,如果不是这种情况发生,可将线型宽度设置为1像素。

6

课程设计

游戏过程模块

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

游戏结束处理模块

游戏结束的时候,读取出记录、成绩排行、写入文件等模块实现有关的处理功能。

读取记录模块

该模块是由函数实现的,用来读取排行榜的记录,如果是首次读取文件,将用另一个函数,初始化记录文件,设置多名选手,初始姓名为”null”。初始分数为0.

成绩排序模块

将最后的选手的成绩加入成绩排行榜中进行排序。

写入文字模块

该模块是由函数来实现的,,即将新的排行榜信息输入文件中。

排行榜模块

该模块是由函数实现的,主要功能是建立排行榜界面,输出多名最高分的玩家的姓名个成绩。

退出

显示出排行榜后,返回函数,按任意键关闭图形系统,并退出程序。 1.3.2 总体数据结构设计

1. 食物与蛇的数据结构

表示食物与蛇的数据结构设计为10*10个像素单位,用X和Y坐标表示,则矩形块用函数画出来,由于每次出现一个食物,所以设定yes表示是否需要出现食物,yes=1表示没有食物或者食物应经被吃掉,需要画出食物。放置食物后,设置yes=0。蛇的一节身体为一个矩形块,用坐标来表示,由于在游戏的过程中蛇的身体不断的增长,需要用数组来存放每节的坐标,利用1、2、3、4分别表示蛇的右、左、上、下的方向,life表示蛇的生命,life=0,表示蛇活着,life=1,表示蛇已经死了,结束游戏。

#define N 200

struct Food

{

int x; /*食物的横坐标*/

int y; /*食物的纵坐标*/

int yes; /*判断是否要出现食物的变量*/

7

课程设计

}food; /*食物的结构体*/

struct Snake

{

int x[N];

int y[N];

int node; /*蛇的节数*/

int direction; /*蛇移动方向*/

int life; /* 蛇的生命,0活着,1死亡*/

}snake;

2. 排行榜中优胜者的数据结构

排行榜主要记录优胜者的姓名和成绩,为了存放排行榜的信息,可以定义下面的结构体类型,其中字符数组name成员存放优胜者的姓名,整型变量score存放优胜者的成绩。

struct person

{

char name[20];

int score;

};

其他全局变量的定义

struct person per[5];

int score=0;

int gamespeed=400; /*控制蛇的移动速度的变量,初始值为400ms*/ 4. 符号常量的宏定义

#define LEFT 0x4b00 /*左移方向键*/

#define RIGHT 0x4d00 /*右移方向键*/

#define DOWN 0x5000 /*下移方向键*/

#define UP 0x4800 /*上移方向键*/

#define ESC 0x011b /*Esc方向键*/

#include FILENAME “C:\\person.dat” /*保存排行榜的文件全名*/

8

课程设计

1.4 详细设计

画出N-S图和流程图来表示出每一个部分的模块功能。

1.4.1主控模块main函数

主函数是函数的数控模块。首先初始化图形系统,然后然后调用DrawSnow函数播放动画和音乐,接着调用Init函数初始化图形系统,之后调用DrawK函数画出游戏开始画面,再调用GamePlay函数,即开始了游戏的具体过程,游戏结束后调用EndPlay函数进行游戏结束处理:从文件中读取记录信息、排序、显示排行榜信息,最后关闭图形系统,结束程序。主控模块的算法流程图如图所示。其中带有两个竖线的矩形框表示对自定义函数的调用。

开始

初始化图形系统

播放动画音乐

初始化图形系统

画游戏开始界面

游戏具体过程

游戏结束处理

关闭图形系统

结束

9

课程设计

1.4.2绘制游戏开始界面DrawK函数

主界面就是一个封闭的围墙,用两个循环语句分别在水平方向和垂直方向输出连续的宽度和高度均为10个像素单位的矩形小方块,围城封闭图形表示为围墙,为了醒目,设置为淡青色,用函数setlinestyle设置线型宽度为3个像素。设置3个像素的围墙,蛇在贴墙走的时候,会擦掉部分围墙线,使线变细,图形变得不好看,为了避免这种情况出现,可将线型宽度设置为1个像素。最后,在界面的左

上部输出游戏程序的版本信息,在右上部输出游戏成绩(score)和关(level)的表头。

如下图所示:

10

课程设计

开始

设置前景色

设置线形为实线,3像素宽

i=50

i<=600

画上边围墙的一个矩形框

画下边为围墙的一个矩形框

i=i+10

i=40

i<=450

画左边围墙的一个矩形框

画右边围墙的一个矩形框

i=i+10

在(20,5)输出创作人

11

结束

课程设计

1.4.3游戏具体过程GamePlay函数

该函数是游戏的核心部分。游戏具体过程GamePlay函数大致算法流程如图

所示。下面对该算法不够详细的地方作进一步的描述。

12

课程设计

1)初始化。为防止食物总是出现在一个位置上,要设置随机数发生器的种子数,产生真正的随机数。由于还没有画出食物,并设置需要食物,并设置蛇活着。初始时,蛇只有蛇头和1节蛇身,设置这2节坐标。设定蛇开开始的爬行方向向右。

2)随机确定食物位置。由于蛇吃到食物的判断是蛇头的坐标和食物的坐标相等,所以要确保食物随机出现的位置在10的倍数位置上。先用两个带随机函数的表达式产生一个位于围墙内的x,y坐标,然后用两个while循环将两个坐标值调整到10的倍数上,这样就可以让蛇吃到。

3)循环确定蛇身的新位置。这里的难点是表示蛇的新位置并消除前一次的图形。采用的方法是每次移动的时候从最后一节开始到第二节,将前一节的坐标的值赋给最后一节的坐标,移动后只要把最后一节用背景色除去即可。这里用for循环来实现这样的新位置。

4) 吃到食物后的处理。蛇吃到食物后,首先将食物擦除,即使用背景色画出该食物,然后给蛇的节数增加1节,设置需要食物标志,使游戏成绩加10分,如果成绩达到50分的倍数,则给关数增加一关。并加快游戏速度。

5) 由按键判断的方向,这是一个内嵌的条件结构,根据按动上、下、左、右方向键来设定蛇的移动方向。判断时还要考虑了相反方向键无效,比如蛇正在向上爬行,按下移方向键是无效。

1.4.4 游戏结束处理模块处理函数

游戏结束的时候,用该调用函数来进行游戏结束处理。

其算法流程图如下:

13

课程设计

开始

读排行榜记录文件

Score>per[4].score

画出填充矩形界面

输出提示信息

输出空格建立输入框

输入游戏者的姓名输出不够上排行榜的信息

成绩赋值

记录按成绩排序

记录写入排行榜文件

显示排行榜

返回

该模块首先调用读排行榜记录文件函数读取排行榜文件记录,如果文件不存在,在函数中调用另一个函数来建立文件,然后再读出记录。

其次,判断游戏者的成绩是否可以上排行榜。如果可上榜,则画出浅蓝色矩形界面,在界面中输入游戏者姓名,对成绩进行赋值,然后调用CompareScore函数对记录排序,并调用WriteFiles函数将记录写入排行榜文件;如果不能上榜,则直接在游

14

课程设计

戏界面输出不能上榜信息。

最后,调用pain_borad函数显示排行榜信息。 1.4.5显示排行榜信息模块pain_board函数

函数void pain_board完成排行榜的绘制流程,流程图如图所示。运行结果如图

所示。

开始

读排行榜记录文件

画出矩形的标题界面

输出标题

画出排行榜界面

输出表头的信息

i=0

输出有关的信息

i= i+ 1

等待按键

返回

15

课程设计

1.5程序的调试与测试

调试与测试软件的目标就是发现并改正潜伏的错误。一个程序,必须经过认真的调试和测试,才能尽量减少错误、保证程序满足功能、性能需求,达到最初的设计、使用要求,从而保证程序的开发质量。

详细设计完成后,用C语言根据各个模块的算法来设计程序,每个模块都设计成一个自定义函数。几个模块放在一个构成一个源程序文件,或者一个模块构成一

个源程序文件。源程序设计好后,输入到计算机,并储存到磁盘上;然后对每个源程序文件都进行独立编译和调试;并针对不同的模块设计测试用例进行单元测试;最后,将几个分别开发的模块组装到一起,形成一个完整的程序,进行集成测试,从而发现并改正程序中存在的一些潜藏的错误,并使程序的容错能力大大增强。调试与测试过程及结果如下所述。

1.5.1动画与音乐的同步播放

预期结果:(1)片头在显示动画的同时播放音乐;(2)按任意键后进入游戏主界面;(3)进入游戏主界面后动画音乐同时停止。

实际运行结果:满足(1)和(2),进入游戏后仍然播放片头音乐。

错误分析:程序中使用循环播放动画,并在其循环体中插入发声函数以达到音乐和动画的同步。由于在结束动画时没有关闭扬声器,所以进入游戏界面后仍然发声。

修改:在动画播放完后加一条“nosound();”语句将扬声器关闭,问题得到解决。修改后程序运行的实际结果与预期效果一致。动画音乐的界面如图所示。

1.5.2蛇的运行

(1)蛇撞到墙

预期效果:蛇运行时如果撞到墙壁,则游戏结束。

实际运行效果:超出左右墙壁后程序结束,但超出上面墙壁后仍然运行如图所示。错误分析:错误程序段在蛇运行的条件判断语句中,它的判断条件是:

if(snake.x[0]<55||snake.x[0]>595),即少了上、下俩个方向的判断。

16

课程设计

修改如下:

if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||snake.y[0]>455)

修改后的运行效果和预期的效果一致。

(2)蛇头撞到蛇身

预期结果:当蛇的头部和蛇身相撞的时候,游戏应当结束。

实际运行的效果:蛇头撞到蛇身时,程序停止了。如图所示。

修改后的代码为:

for(i=3;i

{ if(snake.x[i]==snake.x[0]&&sanke.[i]==snake.y[0])

{snake.life=1;break;} }

1.5.3 终止程序

经过对各个模块的调试和单元测试并修改了错误以后,将各个模块组装成一个软级系统,并进行集成测试。在集成的过程中发现了一些错误,比如全局变量重复定义、函数重复声明等,分别进行了改正。最后连续运行了5次,以便测试该游戏程序的功能、性能是否达到了预期的目标,并根据所使用的具体机器岁蛇的爬行速度进行适当的调整。测试内容包括蛇的运行、分数、关数、排行榜及排序、文件存储、音乐动画等的功能,情况均正常。最后要求输入游戏者的姓名来进行排名。

17

课程设计

1.6 结论

在我们的共同努力下,我们终于完成了贪吃蛇的游戏程序,该游戏程序实现用了方向键控制蛇在围墙内的爬行、随机产生食物、控制蛇吃掉食物并加分、控制游戏中闯关的数目和蛇的运行速度、实时显示分数和关数、结束时处理和显示排行榜等功能。该游戏程序具有的界面友好、操作方便、控制准确和容错能力强等特点。但是这个贪吃蛇的游戏还有一些缺陷:

1)进入游戏后,到蛇的死亡,只能玩一次就退出游戏,应该加入实现多次游戏的控制弄能。

2)蛇的样子不美观,应将蛇头、蛇尾和蛇身进一步美化,使其更像真实的蛇。

3)当分数达到一定的分数的时候,蛇的速度变得非常的快,一下子就撞到围墙上了,应适当控制蛇的速度和关数,以便使游戏更具有吸引力。

18

课程设计

1.7 结束语

通过贪吃蛇的游戏编程的练习思考数据结构的使用,比如定义食物的坐标来控制它的出现的位置,用函数来画出矩形,用life来表示蛇的生命,用方向键来表示蛇的移动的房间等等,还有用数组来存放蛇身各节的坐标,这些都让我们熟悉了对数组的操作,此外还熟悉了各种函数的调用。

在编程的时候我们遇到了很多的困难,这就需要我们多与别人交流。在编程的过程中,我们也发现了有良好的编程风格是十分重要的,至少在时间效率上就体现了这一点,养成良好的习惯,代码的缩进编排,变量的命名规则要始终保持一致。这些都是提高我们编程能力的要点。

还有在编程中最能体现简单的原则,简单的方法更容易使人被理解,更容易实现,也更容易维护。遇到问题是要优先考虑解决的最简单的方案,只有简单的方案不能满足要求的时候我们在考虑用复杂的方案。

在进行课程设计的过程中我们学到了许多别的东西。首先,我们学会了合作,要以别人的眼光看看问题,也许这样得到的会比各自得到的都要多;其次,我们学会了分工,分工是为了更好的合作,分工才能提高合作的效率;最后,我们学会了奋斗,我们相信,通过四年的学习,我们一定能写出更精彩的程序,将来会描绘出更精彩的人生。

在这里,我们要感谢我们课程设计的指导教师张凤君老师,给了我们悉心的指导,是老师经过一学期为我们上课,让我们了解了编程和怎么样编程,在老师的教我们通过自己和同学的合作,我们真正的掌握了怎么样编程以及处理一些在导下,

编程的过程中出现的一些问题,我们真正的学会了这门课,在老师和同学的共同帮助下,我们完成了这项任务。

19

课程设计

1.8程序

#include #include

#include

#include

#include #include #include

#include

#define N 200

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define DOWN 0x5000

#define UP 0x4800

#define ESC 0x011b

#define FILENAME "c:\\person.dat" struct person

{

char name[20];

int score;

贪吃蛇小游戏实验报告[

软件设计报告 设计题目:贪吃蛇 学院:华北电力大学科技学院 专业班级:软件10K1 学生姓名:张飞 学生学号:101909020122 指导教师:乔玲玲 提交时间: 成绩: - 0 -

目录 一.需求分析 二.概要设计 三.详细设计 四.心得体会 一.需求分析 1.1关于题目 1.1.1题目要求 利用Microsoft Visual C++制作一个贪吃蛇的小游戏,要求: (1)应用MFC单文档制作 (2)能够记录游戏成绩 (3)可根据玩家要求设置游戏速度(级别):初级,中级,高级 (4)可以根据个人喜好更换背景图片,食物图片,障碍物图片,结束图片等 1.1.2选题背景 贪吃蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着我们,它的制作方法对于以前的我们而言都是很神秘的。我们希望通过自己的所学知识把它剖析开来,真真正正的了解它的本质和精髓。虽然我们的编程能力不是很强,但是我们有信心,在这次学习中我们将从实践和实际的项目中提高自己的编程能力。因此我们选定了这个题目。 1.2关于编译软件 本程序采用Microsoft Visual C++6.0的英文版本进行编译。VisualC++6.0是Microsoft公司推出的基于Windows操作系统的可视化C++编程工具,尽管Microsoft公司推出了.NET平台的集成开发环境,但由于其良好的界面和可操作性,加上支持标准C/C++规范,但仍有相当多的编程人员使用VisualC++6.0进行应用系统的开发。 - 1 -

- 2 - 1.3关于兼容性 本程序经过调试,可以在XP 系统下编译运行,也可以在Vista 下运行,界面稍有不同,但不影响运行结果。 二. 概要设计 2.1软件主要功能设计 2.1.1程序结构 根据分析,贪吃蛇这个程序一共要实现如下几个功能,包括游戏方面开始游戏、停止游戏,设置游戏级别(速度),设置图片等。具体的程序结构如下面的图1-1所示。 图2-1 贪吃蛇结构图 2.1.2程序流程 根据分析后的贪吃蛇结构设计出相应的贪吃蛇流程。贪吃蛇的内容主要包括: 游戏开始,随机出现食物。 贪吃蛇 游 戏开始 游戏设置 游戏结束 开始 初级 中级 高级 结束

贪吃蛇游戏课程设计实验报告全解

辽宁科技大学课程设计说明书 设计题目:基于C#的贪吃蛇游戏 学院、系:装备制造学院 专业班级:计算机科学与技术 学生姓名:叶佳佳 指导教师:丁宁 成绩: 2015年12月12日

目录 一、概述 (1) 1、用C#实现该设计的方法 (1) 2、贪吃蛇游戏说明 (1) 二、实验目的及设计要求 (1) 1、实验目的 (1) 2、实验要求 (2) 三、课程设计具体实现 (2) 1、概要设计 (2) 1.1、设计思想 (2) 1.2、主模块实现 (2) 1.3、主函数流程图 (4) 2、详细设计 (5) 2.1、设计思想 (5) 2.2、具体模块实现: (5) 四、调试过程及运行结果 (10) 1、调试过程 (10) 2、实验结果 (11) 五、实验心得 (12) 六、参考资料 (13) 七、附录:源代码 (13)

一、概述 1、用C#实现该设计的方法 首先应该了解设计要求,然后按照功能设计出实际模块,每个模块都要完成特定的功能,要实现模块间的高内聚,低耦合。设计模块是一个相当重要的环节,模块的数量不宜太多,也不宜太少,要是每个模块都能比较简单的转换成流程图。模块设计完成后,就该给每个模块绘制流程图。流程图要尽可能的简单且容易理解,多使用中文,补一些过长的代码,增加理解难度。此外,流程图应容易转换成代码。 根据流程图编写好代码后在WindowsXP操作系统,https://www.wendangku.net/doc/578578653.html,2008开发环境下进行运行测试,检查错误,最终设计出可行的程序。 2、贪吃蛇游戏说明 游戏操作要尽可能的简单,界面要尽可能的美观。 编写程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜欢的游戏:一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被吃掉,这时蛇的身体长一节,同时计10分;接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁、障碍物或身体交叉(蛇头撞到自己的身体),则游戏结束。游戏结束时输出相应得分。 具体要求有以下几点: (1)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理; (2)系统设计要实用,采用模块化程序设计方法,编程简练、可用,功能全面; (3)说明书、流程图要清楚; 二、实验目的及设计要求 1、实验目的 .NET课程设计是教学实践环节中一项重要内容,进行此课程设计旨在掌握基础知识的基础上,进一步加深对VC#.NET技术的理解和掌握; 提高和加强学生的计算机应用及软件开发能力,使学生具备初级程序员的基本素质; 培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应信息管理行业日新 1

五子棋游戏实验报告

五子棋游戏实验报告 课程名称计算机程序设计(VB) 学号______________________ 姓名______________________ 班级______________________ 提交时间 五子棋软件设计 一、实验目的 1?通过五子棋软件设计或者自拟题目设计,巩固本课程所学的各个章节重点知识,自拟题目的同学需尽早向教师提岀自己的想法及设计方案。 2?通过开发一个较大的系统,增强软件开发能力。 3?通过调试系统,增强逻辑思维能力。 二、实验内容 1.基本要求: (1)输入两个对手名字,然后进入游戏界面。 (2)用鼠标点击的方式在棋盘上摆放棋子,黑白交替。(棋盘15*15 ) (3)可以悔棋。 (4)五子连在一起的时候能判断胜利,并且显示出胜利者的名字。 (5)能够将棋局的结果保存,保存该棋局

结束的状态、对手名字、棋局名字(棋局名字在保存时由用户在相应的界面下添入)(此功能要求用数据库和文件两种技术实现)。

因为棋盘上空点居多,大部分点的信息为0,因此只需保存有棋子的点的信息 用文件技术进行棋局保存,思路相同。 (7)五子棋恢复棋局 思路:首先从数据库文件中找到要恢复棋局的数据(即曾经保存的数据),然后把这些数据赋值给内存中相应的数组或者变量中,按照这些数据重新绘制棋盘和棋子,即完成了对棋局的恢复。 窗体启动事件应该完成的事情: 组合框中应该显示曾经保存的棋局名。因为每次保存棋局时,都是将棋局所有棋子的记录添加在表的最 后,因此表中关于棋局名的记录只能是类似于aaabbbbccccc的形式,而不可能是abbcacc的形式,根据 这个特点编程序取出表中不同的棋局名。 具体算法: 用一个字符串变量strfile初始值为空,从表的顶端向下依次移动记录指针,如果当前记录的棋局名字段和strfile不相等,说明进入另一个棋局的记录中,将该棋局记录的棋局名赋值给strfile,并加入到组合 框中,一直到表中最后一个记录 因为要从数据库中取岀相关数据到a数组中,因此要将a数组所有数据清零。 要建立一个data控件,与数据库连接起来,而后识别棋局(即表中的棋局名字段与在列表框中选择的棋 局名比较),将数据库该棋局中所有信息都赋值给a数组及相关变量。 刚才仅仅是数据的恢复,即将数据库中已经保存过的数据恢复到内存中,下一步应该根据内存中的数据重新绘制棋盘以及棋子。 重新绘制棋盘是独立的一块功能,因此考虑用全局子过程来实现,该子过程定义在模块中。思路如下: 清屏一绘制棋盘一根据a数组中的每一项的两个下标来决定绘制棋子的位置,根据每一项的值是1还是 2来决定在该位置绘制何颜色的棋子。 决定该黑白方走的blackwhite变量当时没有保存,可以采用在数据库中保存的方式来解决,本例中解决方法是通过数黑白棋子个数来决定恢复棋局后该谁走的。 因此设置了一个变量做计数器,每走一步棋计数器的值加一。 用文件技术实现棋局恢复,思路相同。 (8)悔棋 悔一步棋:用几个变量来表示关于一步棋的几个信息,每次下子都将该子的信息赋值给那几个变量,悔 一步棋即将那几个变量所表示的点的a数组信息清零。而后调用paint ()过程重画。 以上是教师带着学生完成的软件功能。 遗留问题:保存棋手姓名和棋局名并在恢复棋局的时候显示。(需要同学们自己完成)思路:在数据表中多建立两个字段,分别表示两个棋手姓名,同其它数据的保存类似。 三、设计日期 十二月 四、完成日期 十二月 五、实验体会 其实,一开始学习vb我就对它不抱有一定的热情,可能是因为要用到计算机以及编程问题,当时一想到有代码,就会无比的苦恼,但是为了让这门课顺利通过,我还是怀着一颗必须要学的心情。起初,我对待这门新课程和其他课

《贪吃蛇游戏课程设计》报告资料整理

贪吃蛇游戏程序设计 一、课程设计任务 贪吃蛇小游戏程序设计 二、设计要求 通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。 (1).收集资料,分析课题,分解问题,形成总体设计思路; (2).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍; (3).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行; (4).完成课程设计报告,并进行答辩 三、需求分析 3.1、程序功能 贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。

3.2、设计思想 程序关键在于表示蛇的图形及蛇的移动。用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。食物的出现与消失也是画矩形块和覆盖矩形块。为了便于理解,定义两个结构体:食物与蛇。

3.3、流程图

四、设计的具体实现 (1)函数定义 函数定义是对各个基础函数的定义,并且设置需要运用的信息,便于调用 #define N 200 #define M 200 #include"graphics.h" #include #include #include #include #include #include #include #define LEFT 97//A #define RIGHT 100//D #define DOWN 115//S #define UP 119//W #define Esc 0x011b int i,key; int score=0; int gamespeed=250;//游戏速度可根据实际情况自行调整 struct Food { int x;//食物的横坐标 int y;//食物的纵坐标 int yes;//判断是否要出现食物的变量 }food;//食物的结构体 struct Snake { int x[M]; int y[M]; int node;//蛇的节数 int direction;//蛇的移动方向 int life;//蛇的生命,0表示活着,1表示死亡 }snake; void Init();//图形驱动

贪吃蛇实验报告

创作编号: GB8878185555334563BT9125XW 创作者:凤呜大王* 《计算机程序设计》课程设计报告课题名称贪吃蛇游戏 班级 学号 姓名 指导教师 设计时间至 设计地点 常熟理工学院计算机科学与工程学院

常熟理工学院计算机科学与工程学院 目录 1 需求分析 (1) 2 系统分析和设计 (1) 2.1 数据结构的设计和选择的理由 (1) 2.2 系统模块划分和模块结构 (2) 2.3 流程图 (2) 2.4 数据类型、全局变量和函数说明 (3) 3 程序测试和运行结果 (4) 4 课程报告小结 (5) 4.1分数重叠显示 (5) 4.2速度太快 (5) 4.3食物可能出现在蛇身上 (5) 附录A:程序源代码 (6)

《C程序设计》课程设计 1 需求分析 【阐述课程设计应该完成的功能】 使用键盘的上下左右,来控制蛇的运动方向,ESC键退出,并显示得分。 2 系统分析和设计 2.1 数据结构的设计和选择的理由 本游戏中涉及的主要数据结构是如何表示运动的蛇、食物状态等问题。 2.1.1从游戏参考画面中我们可以看到,贪吃蛇的身体是一节节的,由一个个大小相同的方块组成,那么我们可以用一个(x,y)坐标为左上角的、固定宽度的正方形来表示一节蛇身。为表示连续的多节身体,那么我们可以采用数组(或链表,或线性表)等数据结构来表示。下面以数组方式为例: struct Point { int x, y; } struct Point nodes[MAX_LENGTH]; //蛇身数组,MAX_LENGTH为最大蛇长 贪吃蛇是在不断的运动的,我们研究蛇的运动可以发现这样的特点: 1. 蛇头由键盘控制,键盘不操作时,保持原有方向运动;(用int direction;表示) 2. 运动时,蛇身后面一节移动到前面一节的位置。当我们用nodes[0]表示蛇头的时候,nodes[1]运动到nodes[0]处;nodes[2]运动到nodes[1]处...。 3. 吃到一个食物以后,蛇身会增加一节。即该数组中的有效数据个数加一。(用int length;表示) 根据上面的情况,我们可以设计蛇的数据结构如下: struct Snake { struct Point nodes[MAX_LENGTH]; //蛇身数组,保存每节蛇身的坐标。MAX_LENGTH为最大蛇长 int length; //当前蛇长 int direction; //蛇头运动方向 int live; //蛇活的,还是已经死了? } 2.1.2 关于食物,有两个属性: 1. 坐标位置 2. 状态:存在,或被吃。 故我们用以下结构表示: struct Food { struct Point position; //食物的位置 int exist; //存在?还是被吃? } 1

贪吃蛇游戏程序设计实验报告

Windows编程大作业贪吃蛇设计与实现 学校:武汉轻工大学 院系: 班级: 姓名: 学号:

2015 年12月16日 目录 一、题目介绍 二、设计目的 三、详细设计 3.1贪吃蛇本体设计 3.2贪吃蛇食物设计 3.3游戏界面设计 3.3.1游戏初始化 3.3.2游戏开始 3.3.3游戏暂停 3.3.4游戏退出 3.3.5游戏总界面 3.3.6游戏区域与背景 3.3.7关于SNAKE 3.4玩法规则设计 3.5核心设计 四、功能测试 五、总结 六、参考文献

一、题目介绍: 编写一个基于MFC的小游戏。 基本要求: 1、实现一个小游戏 2、实现基本游戏控制功能 3、具有游戏数据保存功能 4、界面布局合理、美观; 二、设计目的: 通过使用vc++6.0实现一个小游戏的课程设计,进一步掌握MFC的高级使用方法和锻炼自己动手写程序的能力。了解游戏设计的整个过程,通过熟练使用MFC来设计游戏。程序主要包括:游戏界面设计,游戏菜单栏设计,游戏初始化,游戏控制等。培养和锻炼开发游戏的能力。 三、详细设计 3.1贪吃蛇的本体设计 贪吃蛇的头部拥有一个坐标(x,y),蛇体有一个长度len,蛇有一个运动方向direct,故定义一个结构体如下: struct Snake { int x,y; int len; int direct; }Snake[50]; 3.2贪吃蛇食物设计 贪吃蛇的食物有一个坐标(x,y),此食物有一个标志isfood,当isfood为0时,表示食物还没被吃,为1时,表示被吃。 struct Food { int x; int y; int isfood; }Food;

java课程设计贪吃蛇游戏设计

前言 Java最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机、电话、闹钟、烤面包机等家用电器的控制和通讯问题。由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划。就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景。于是改造了Oak,以“Java”的名称正式发布。 Java 编程语言的风格十分接近C、C++语言。Java是一个纯的面向对象的程序设计语言,它继承了 C++ 语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java SE 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的编译执行需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。但在J2SE 1.4.2 发布后,Java 的执行速度有了大幅提升。 与传统程序不同,Sun 公司在推出 Java 之际就将其作为一种开放的技术。全球数以万计的 Java 开发公司被要求所设计的 Java 软件必须相互兼容。“Java 语言靠群体的力量而非公司的力量”是 Sun 公司的口号之一,并获得了广大软件开发商的认同。这与微软公司所倡导的注重精英和封闭式的模式完全不同。 Sun 公司对 Java 编程语言的解释是:Java 编程语言是个简单、面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的语言。

VC实现贪吃蛇的实验报告

题目:利用VC++实现贪吃蛇小游戏

一、题目:利用VC++实现贪吃蛇小游戏 利用VC++实现的贪吃蛇小游戏更加注重可视化。一条蛇在封闭的围墙内,在围墙内会随机出现一个食物,通过键盘上的W S A D四个键控制它向上,下,左,右四个方向移动。当蛇头撞到食物时表示将食物吃掉,这时蛇身增长一节,得分加一。接着随机生成食物,等待被蛇吃掉。如果在移动过程中撞到墙壁或者自己的身体,则游戏结束。游戏过程中,可以在菜单中选择暂停或者结束游戏,对游戏进行暂停或者退出。

二、编程要点(或基本思路、算法分析与说明): 本次游戏设计包含两大模块,一个模块是贪吃蛇游戏本身算法的设计,完成了贪吃蛇的食物产生,获取食物,蛇的移动等功能。另一个模块是利用MFC完成贪吃蛇的可视化显示,产生了一个对话框,在对话框可以控制游戏及游戏的显示。 1.贪吃蛇游戏算法设计包括: <1>果实出现的设计思路: (1)采用随机数生成果实出现坐标 (2)判断当前生成的果实是否在贪吃蛇身体范围内。 (3)如果在,重新生成直到不在为止。如果不在,则把坐标位置返回给调用对象。 <2>贪吃蛇更新的算法设计 (1)接收玩家按下的方向键消息,并保存到方向变量中。 (2)定义一个时间定时器,用来控制蛇运动的速度。 (3)当每次时间间隔到达时,则根据方向变量来更新贪吃蛇curr(即贪吃蛇身体)向量。 (4)判断curr向量的第一个元素中的坐标数据是否碰到边界或者蛇身,如果有,则游戏结束。否则,进行下一步。 (5)判断curr向量的第一个元素中的坐标数据是否与当前果实重合,如果有,表示贪吃蛇已经吃到果实。这时就向贪吃蛇curr向量添加一个元素,并重新生成一个果实。 (6)吃到食物后,得分会同步增加。 2.利用MFC完成贪吃蛇的可视化显示: 首先初始对话框,完成游戏的整体框架的显示。然后游戏玩家在菜单栏里选择开始,暂停,结束等,控制游戏状态。游戏开始后,玩家通过键盘上的消息控制蛇的运动。在函数DrawSnake(CDC *pDC,Snake snake),和DrawFood(CDC *pDC,SnakeFood f)完成对蛇和食物的重绘,从而显示出蛇的运动和对食物的获取。在OnPaint()函数中完成得分和游戏操作提示的显示。 本次游戏设计的主要功能函数如下: OnGameStart()(游戏开始函数), OnGamePauseStart()(游戏暂停函

python实现贪吃蛇

Python版贪吃蛇.py #!/usr/bin/python from Tkinter import * import random class snake(Frame): def __init__(self, master=None): Frame.__init__(self, master) self.body = [(0,0)] self.bodyid = [] self.food = [ -1, -1 ] self.foodid = -1 self.gridcount = 10 self.size = 500 self.di = 3 self.speed = 500 self.top = self.winfo_toplevel() self.top.resizable(False, False) self.grid() self.canvas = Canvas(self) self.canvas.grid() self.canvas.config(width=self.size, height=self.size,relief=RIDGE) self.drawgrid() s = self.size/self.gridcount id = self.canvas.create_rectangle(self.body[0][0]*s,self.body[0][1]*s, (self.body[0][0]+1)*s, (self.body[0][1]+1)*s, fill="yellow") self.bodyid.insert(0, id) self.bind_all("", self.keyrelease) self.drawfood() self.after(self.speed, self.drawsnake) defdrawgrid(self): s = self.size/self.gridcount for i in range(0, self.gridcount+1): self.canvas.create_line(i*s, 0, i*s, self.size) self.canvas.create_line(0, i*s, self.size, i*s) defdrawsnake(self): s = self.size/self.gridcount head = self.body[0] new = [head[0], head[1]] if self.di == 1: new[1] = (head[1]-1) % self.gridcount elifself.di == 2: new[0] = (head[0]+1) % self.gridcount elifself.di == 3: new[1] = (head[1]+1) % self.gridcount

贪吃蛇游戏程序设计

测控技术与仪器专业课程设计题单 班级0982011 学生刘某某 课程名称计算机课程设计 课题贪吃蛇游戏程序设计 设计要求 1.学习游戏设计有关知识。 2.设计贪吃蛇游戏程序。 3.调试并修改程序。 4.完成课程设计论文。 课题发给日期 2011年6月25日 课程设计完成日期 2011年7月09日 指导教师余某某 评语:

贪吃蛇游戏 学生姓名:刘某某班级:0882011 指导老师:余某某 摘要:编写C语言程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜爱的游戏,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过按键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被蛇吃掉,这时蛇的身体长一节,同时计10分,接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁或身体交叉蛇头撞到自己的身体游戏结束。 作为一个完整的程序,必须考虑人机交流与用户体验。游戏的界面不能太丑,更不能连个简单的界面都没有。游戏应该有个比较漂亮的界面,在有必要硬件支持和软件的支持下,游戏开发者必须最大限度的使游戏美观。游戏的美观是一方面,游戏的内在素质是另一方面。一个游戏的优劣,最终由玩家决定。在游戏与玩家见面之前,游戏开发者要设计一种让玩家投入的游戏模式,并且在一定的游戏规则下进行。 关键词:贪吃蛇流程图 c语言源程序

目录 1 前言 (1) 2 课设内容 (3) 2.1课设目的 (3) 2.2设计功能 (3) 2.3结构设计 (7) 3结论 (11) 参考文献 (15) 附录A (16)

1 前言 C语言是一种易学易懂的通用程序设计语言,由于它具有功能性强,运用简洁,灵活兼有高级语言与低级语言的优点,以及“目标程序效率高”可移植性和能在各种系统上普遍实现等特点使它成为当今世界上的主流程序设计语言之一,同时被选作目前全世界广泛应用,同时也是大学生必修的科目。作为一位当代的大学生更要很好的利用它,学好一门设计语言,实现学以至用。 制作C程序报告,可以巩固和加深自己对C语言课程的基本知识的理解和掌握,并且能够掌握C语言编程和程序调试的基本技能。 通过游戏程序的设计训练可以提高自己的基本技能,更好地掌握字符串的表示方法和字符串函数的功能、Tc图形操作的基本知识、键盘上特殊键的获取以及图形方式下光标的显示,提高自己编程兴趣与编程水平,学会如何正确的书写程序设计说明文档,提高运用C语言解决实际问题的能力,巩固C语言语法规则的理解和掌握,学会通过源程序写出流程图,提高自学以及查阅资料的能力。 C语言课程应注重边学边练,但由于课堂教学和实验的深度和广度有限,练习的深度也受到一定限制。为了弥补这一点,学校开设了本课程设计。它比教学实验复杂一些,涉及的深度广些并更加接近实用。目的是通过课程设计的综合训练,培养我们实际分析问题、编程和动手能力,最终目标是想通过这种形式,帮助我们系统地掌握程序设计的主要内容,更好地完成学业。 这次课程设计的主要特点如下: 1.函数定义是要做到顾名思义是很重要的,它对读程序的人正确认识程序 十分重要,在修改这个程序的过程中也能很快找到程序各模块的作用,大大增

操作系统实验报告(贪吃蛇游戏)

南通大学计算机科学与技术学院 操作系统试验 报告书 试验题目贪吃蛇游戏 专业班级XXXXXX 学生姓名XXXXX 指导教师XXXX 日期2017年6月 主要内容 (一)设计内容:在Windows 9x/2000/XP/ME操作系统下,使用VC、VB、Java或C等编程语言,采用多道程序设计技术编写一个游戏软件或解决一个简单的实际问题,要求设计一个两道以上的程序,可以是固定的2道程序、也可以是灵活的多道模式。设计的内容可以是下面任选其一: (1)用多道程序技术实现一个游戏程序。如大炮打飞机、赛车比赛等。 (2)用多道程序技术模拟客观世界中一个多任务实际问题的解决。 (二)设计要求: (1)本程序可运行在Windows 9x/2000/XP/ME操作系统下,可安装到任意路径下。 (2)采用多进程或多线程方式运行,尽量体现进程间的同步和互斥关系。 (3)经调试后程序能够正常运行,并体现多道程序的特点。

(三)实验目的: 1.掌握进程和线程的概念。 2.掌握进程控制原语或进程控制系统调用的使用 3.掌握多道程序设计的基本理论、方法和技术。 4.掌握相关语言进程控制的API函数的使用。 5.培养学生多道程序设计的能力。 6.培养学生团队合作的能力。 (四)实验的选择:用多道程序技术实现一个游戏程序。游戏:《贪吃蛇》 实验思想: 1.首先制作游戏的窗体布局。其中包括窗体的大小,位置,添加按钮组件,在窗体 上面划定游戏区域等。 2.为按钮添加监听器,为开始按钮,结束按钮,键盘,还有游戏结束的时候的确定 按钮. 3.单击开始按钮,看到的效果是在游戏区域里面看到一个随机产生的食物,和蛇体。 产生随见事物使用Random类,随机定位一个游戏区域里面的方块,然后使用Graphrics可以定位到这个方块的坐标图上颜色,这样就产生了肉眼可见的食物。关于蛇体,我们将蛇体的每个方块添加到集合里面,使用的是List,为什么不用数组,原因是数组的长度总是有限的,你不知道蛇体里面最终存放多少方格,而且数组比较繁琐。我们将蛇体的每个方块另外创建一个类(蛇体的每个方格)snakeAct,包含成员变量方格的坐标,每个snakeAct对象实例就是一个方块,将这个对象添加到列表List中就好了,然后再用Graphics,循环画出列表中的每个对象,就成功的画出了蛇体。设置蛇体的初始长度只有蛇头,并设置蛇头的初始位置为居中。 4.通过方向键设置蛇头的移动,定义move()方法,蛇头每移动一次位置就会变化 到另外一个方块,对应的坐标x,y都是有相应的变化,例如按下UP键,坐标的变化就是,x不变,y减1。 5.蛇头可以运动只有面临的问题就是要吃食物,而吃食物的过程是在移动过程中, 所以在move()方法中添加eat()方法,吃到食物的条件是蛇头的坐标和食物的坐标对应相等,蛇头吃到食物的过程就是将列表中没有吃到食物前的最后一个方格重新画一遍,这样列表的长度就加一,而列表中的对象就多了一个。 6.将食物添加到列表中之后,仍然只是蛇头可以移动,让蛇体跟着蛇头移动定义

基于labview的贪吃蛇游戏程序设计

成绩评定表

课程设计任务书

目录 1 目的及基本要求 0 本程序是基于常看到的一款小游戏贪吃蛇而设计的,即有一条小 蛇不停地在屏幕上游走,吃各个方向上出现的苹果(姑且称它为 “苹果”),越吃越长,只要蛇头碰到屏幕四壁或者碰到自己的 身子,游戏就立刻结束。本程序基于传统贪吃蛇游戏的特点利用LabVIEW制作的一款完整的迷你贪吃蛇游戏。 0 4.1 运行结果 (8)

1 目的及基本要求 本程序是基于常看到的一款小游戏贪吃蛇而设计的,即有一条小蛇不停地在屏幕上游走,吃各个方向上出现的苹果(姑且称它为“苹果”),越吃越长,只要蛇头碰到屏幕四壁或者碰到自己的身子,游戏就立刻结束。本程序基于传统贪吃蛇游戏的特点利用LabVIEW制作的一款完整的迷你贪吃蛇游戏。 熟悉LabVIEW开发环境,掌握基于LabVIEW的虚拟仪器原理、设计方法和实现技巧,运用专业课程中的基本理论和实践知识,采用LabVIEW开发工具,实现贪吃蛇游戏的设计和仿真。要求通过本课程设计使学生熟悉LabVIEW开发环境,掌握基于LabVIEW的虚拟仪器设计原理、设计方法和实现技巧,使学生掌握通信系统设计和仿真工具,为毕业设计做准备,为将来的学习及今后从事科学研究、工程技术工作打下较坚实的基础。 2 贪吃蛇游戏设计原理 贪吃蛇游戏大体上可分为以下几个部分: 1) 控制部分就是通过输入输出来控制蛇的运动 2) 逻辑部分进行判断蛇吃了没有是否撞墙同时把蛇的长度增加一节还要实现分数的计算 3) 图象显示部分就是将游戏显示出来 本程序的主要实现如下功能:1.小蛇在屏幕上不停的游走;2.用键盘方向键可控制小蛇的移动方向;3.吃过一个苹果后小蛇长度增加并随机产生另一个蛋; 4.小蛇碰到四壁或者碰到自己的身体时游戏结束并给出得分和提示是否继续; 5.游戏可以有多种难度选择等 3 贪吃蛇游戏设计与仿真 3.1 前面板设计 采用LabVIEW中提供的“Express XY图”作为游戏界面,显示蛇和苹果,这样就可以通过方向键来移动小蛇到想要去的地方。对XY图的属性做如下修改:

贪吃蛇游戏软件可行性分析报告

软件设计与体系架构实验报告 学院:计算机科学与技术学院 学号:0121210680330 姓名:郭烨华 班级:sy1201 课题名:贪吃蛇游戏开发

贪吃蛇开发并进行动态分析 指导老师:陈明俊 组员:李安福 郭烨华 分工明细 成员分工: 职责姓名任务 项目分析经理、程序员李安福可行性分析,系统功能分析,编程 系统设计师、程序员郭烨华概要设计,开发设计、编程 目录 一、引言 (1)

1.1编写目的 (1) 1.2 编写主题 (1) 1.3 游戏运行环境 (1) 二、可行性研究的前提 (1) 2.1游戏基本功能 (1) 2.2 要求 (3) 2.3目标 (3) 2.4 进行可行性研究的方法 (3) 2.5 评价尺度 (4) 三、对现有系统的分析 (4) 3.1 处理流程和数据流程: (4) 3.2 工作负荷 (4) 3.3 人员.................................................................................................. 错误!未定义书签。 3.4 设备 (4) 3.5局限性 (4) 3.6 改进要求 (5) 四、所建议的系统 (5) 4.1 对所建议系统的说明 (5) 4.2处理流程和数据流程 (5) 4.3改进之处 (6) 4.4 影响 (6) 4.4.1对设备的影响: (6) 4.4.3 对用户单位机构的影响 (6) 4.4.4 对系统运行过程的影响 (7) 4.4.5对地点和设施的影响 (7) 4.5 技术条件方面的可行性 (7) 五、可选择的其他系统方案 (7) 六、投资及效益分析 (8) 6.1支出 (8) 6.1.1 基本建设投资 (8) 6.1.2 其他一次性支出 (8) 6.1.3 非一次性支出 (8) 6.2 收益 (8) 6.2.1 一次性收益 (8) 6.2.2 非一次性收益 (8) 6.2.3 不可定量的收益 (8) 6.3 投资回收周期 (9) 6.4 敏感性分析 (9) 七、社会因素方面的可行性 (9) 7.1 法律方面的可行性 (9) 7.2 使用方面的可行性 (9) 八、结论 (9)

单片机贪吃蛇课程设计报告

电气与信息工程学院 单片机课程设计报告 一、设计任务及要求 基本功能: 制作一个8*8点阵的贪吃蛇游戏,系统以单片机的C语言的软件设计,系统通过LED点阵屏为载体显示数据,并用五个输入端表示五个控制键(上下左右及加速)。系统硬件部分由STC89C52RC单片机,8*8点阵屏,5个按键,软件部分在keil环境下用C51语言编写,包括游戏初始化蛇的节数,以及障碍墙壁,游戏结束时自动复位。 具体要求: 1、用四个按钮控制贪吃蛇的行径,一个按钮控制贪吃蛇的加速,蛇的初始长度为2点,设置墙壁。 2、蛇吃到长度为1点的食物时,自身长度增加1点。 2、速度按钮带有一次加速,按两下速度按钮蛇的行进速度回到初始值。 3、当蛇碰到墙壁或自己的身体时游戏结束。 4、用proteus设计,仿真基于STC89C52RC单片机的8x8点阵贪吃蛇的硬件电

路。 5、游戏结束,系统自动复位。 二、硬件电路设计 本系统以STC89C52RC为核心,设置12MHz的晶振,使得单片机有合理的运行速度。LED点阵屏通过LED(发光二极管)组成,以灯珠亮灭来显示程序的运行情况,是模块化的显示组件,本设计采用8*8共阳红色点阵显示屏,用来显示贪吃蛇的游戏画面。五个独立按键控制蛇的游走方向(上下左右)和加速减速的功能。贪吃蛇是一款经典的小游戏,玩家通过按键操控贪吃蛇不断地吃食物,蛇身逐渐伸长,当蛇碰到蛇身和墙壁时游戏结束。 需要注意的是实际元件中,点阵的封装不尽相同,因此需要测试出每个引脚的功能,以便正确连线。注意,每个像素点的额定电压在3v左右,电压过大将会彻底损坏。 三、系统软件设计 软件方面采用了C51编写代码,代码编写模块如下图: 核心代码主要为游戏处理、信息处理和按键处理。编写游戏的功能代码,先定义游戏的数据结构和常量。其中食物的数据结构采用结构体定义,两个unsigned char变量分别定义为食物的横纵坐标;蛇的身体定义为长度最大值为20的数组,游戏中贪吃蛇长度达到39,游戏通关结束。 游戏处理模块为贪吃蛇在游玩过程中遇到的需要被处理的情况,主要实现的功能包括以下四个方面,即移动、食物、死亡和加速。 1、移动

游戏基础课程设计

枣庄学院 信息科学与工程学院课程设计任务书题目:贪吃蛇游戏的设计与开发 专业:计算机多媒体技术专业 课程:游戏基础 姓名: 姓名: 姓名: 指导教师:孙晓飞职称:助教 完成时间:2013年12 月----2014年1 月 枣庄学院信息科学与工程学院制 2013年12月29日

课程设计任务书及成绩评定

目录 引言 (5) 1.工作计划 (5) 1.1 主要任务阶段划分 (5) 1.2 工作任务分工 (5) 2.需求分析 (6) 2.1 概述 (6) 2.2 用户分析 (6) 2.3 约束条件 (6) 2.4 功能需求 (6) 2.5 用户界面需求 (7) 3.设计与实现 (7) 3.1 概述 (7) 3.2 详细设计 (7) 3.2.1类的抽象与设计 (7) 3.3 主要程序文件 (8) 3.4开发环境以及部署环境要求 (10) 3.5主要源码 (10) 4.测试 (14) 4.1 概述 (14) 4.2 测试环境 (14) 4.3 测试计划 (14) 4.4测试项目及结果 (14) 5.工作总结 (15) 5.1 工作成果 (15) 5.2 过程分析 (15) 5.3 经验教训及其分析 (15)

引言 由于传统的贪吃蛇只是在一个宽阔的用户区进行游戏。对于蛇只是在区域四周有障碍墙壁,这样也许在一开始不会有太大的难度和成就感。 又由于人们曾经也钟爱一种迷宫游戏,它主要是考察玩家的观察力,看能否在最短的时间里走出迷宫。 基于以上两个游戏,我们准备利用本学期学到的windows界面程序设计方法将两个游戏有机结合起来,使用户既能体验贪吃蛇中看着蛇身不断加长而绕出各种折线的成就感,又能感受到在迷宫中找寻出路的紧张心情,而且迷宫的出现使蛇遇到的障碍遍布游戏区,这样用户就更能展示一下自己操作的高水平。 1 工作计划 1.1主要工作阶段划分 1.2工作任务分工

MFC贪吃蛇实验报告

贪吃蛇实验报告201221143049 信计1212 许圣

1.概述 此次课程设计我利用MFC制作了一个贪吃蛇游戏,用户可以通过上下左右控制蛇的移动方向,游戏会根据贪吃蛇身体的长度自动增加难度。在游戏过程中,会记录运行时间和所得分数,我还添加了bmp格式的图片作为游戏背景。 2.功能描述 2.1设计思路 本软件主要由三个模块构成,它们分别是蛇运行模块,初始化处理模块和显示模块。它们的作用分别是,初始化处理:初始化蛇头位置与第一个点位置;蛇运行模块:控制蛇的上下左右运行,并对蛇的运行状态进行判断,根据(吃点、未吃点、死亡等)状态进行不同的子程序模块处理以及游戏者是否能晋级的判断;显示模块:根据对蛇和点子的当前状态进行动画显示。主要有以下步骤: 1.定义蛇类和食物类,初始化贪吃蛇各项成员变量,包括图像的出现在屏幕的 初始位置,长度,以及蛇的行走方向。食物类的定义包括出现的初始位置,以及食物是否被吃掉的判断。 2.用数组初始化长度为4的贪吃蛇,并且默认出现一个食物。 3.在CView类上运用MFC提供的Windows消息中WM_TIMER消息,运用OnTimer() 函数让系统提供一个时钟节拍,更新游戏 4.具体游戏实现,包括蛇撞到自己和围墙都将使游戏结束,判断吃豆等,其中 还包括根据蛇的长度来进行游戏难度的改变。 5.具体键盘游戏操作运用到Windows消息响应中的WM_KEYDOWN,用OnKeyDown() 来响应玩家的实际操作。 6.添加了bmp格式的图片作为游戏背景。 整体流程图如下图1。

图1:系统流程图

2.2功能介绍 ⑴运行程序,出现围墙界面,一条蛇在密闭的围墙内,在围墙内随机出现一个食 物,出现bmp格式图片的背景。 ⑵点击“游戏->游戏开始”,游戏开始。还可暂停游戏继续 ⑶游戏开始后,界面右下角会同步游戏得分。 ⑷通过四个方向键控制蛇的运动方向,吃掉随机出现的豆子,若不小心碰到墙 壁或者与自身相交,则该轮游戏结束。 ⑸游戏会根据蛇身的长度自动调节难易程度。 3.详细设计 3.1主要函数 ●void CSnakeView::OnDraw(CDC* pDC)//显示背景图片 ●void CSnakeView::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)//按照用户的按键来控制蛇的移动 ●void CSnakeView::OnTimer(UINT nIDEvent)//根据蛇的长度来进行 SetTimer()函数的定义,可以根据长度来进行游戏难度的设定。//撞 界判断//蛇身相撞判断//抹掉蛇行走的痕迹//判断吃豆的条件,撞到就 吃//如果食物被吃了就生成 ●void CSnakeView::oninit()//进行贪吃蛇外观的初始化 ●void CSnakeView:: OnGameStart ()//开始游戏 ●void CSnakeView:: IniAim ()//初始化目标的位置 ●void CSnakeView::IniGame()//初始化游戏 ●void CSnakeView::ReDisplay(CPoint pPoint) ●bool CSnakeView::ReadBmp(char *bmpName)

贪吃蛇游戏设计报告

贪吃蛇游戏设计 班级:13级7班 学号: 姓名: 一、实验目的 1.熟练掌握C6713 的中断结构和对中断的处理过程。 2.熟练掌握C6713 定时器的控制和使用方法。 3.熟练掌握键盘的使用原理及编程方法。 4.熟练掌握使用C6713DSP的扩展空间控制外围设备信息的方法;掌握蜂鸣器发声原理和音乐发生方法;掌握液晶显示器的显示控制原理及编程方法。 5.掌握C6713的系统自启动设计方法。 6.熟练掌握C语言开发DSP程序的流程及调试方法。 二、实验设备 计算机,ICETEK-C6713-EDU 实验箱,示波器。 三、实验内容(*号为选做内容) 1、在液晶屏上显示游戏背景、初始蛇身及运动、随机产生食物。 2、可以用键盘控制蛇身运动、暂停游戏。 3、游戏烧写到FLASH内,可以上电自启动运行。 四、设计原理 贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个按键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体叉蛇头撞倒自

己身体游戏结束。 要想实现贪吃蛇功能,需要应用到键盘,按键中断,和液晶显示。想要正常使用按键,就要调用包含于有文件"ICETEK-C6713-A.h"中的init_emif();和InitCTR();程序用来初始化emif和ICETEK-CTR。 中断原理:dsp有三种类型的中断cpu的TMS320C6000:重置、可屏蔽的、不可屏敝的复位中断优先级最高,对应于复位信号。不可屏蔽中断优先级最高,对应于第二敝中断信号。最低优先级中断中断4?15对应INT4?INT15信号。重置,敝中断,一些INT4?INT15信号映射到C6000设备上的别针。一些INT4?INT15中断信号是内部使用的外设和一些可能不可用或在软件的控制下可以使用。 外中断区别于计时器等片内设备中断,它来源于DSP 片外,属于硬件中断。外中断信号通过DSP 器件封装上的专用管脚输入DSP,属于可屏蔽中断。TMS3206713DSP 有三个外中断:EXT_INT4~EXT_INT7,如果CPU 允许,这四个信号线上的低脉冲信号会中断CPU。 中断是为使CPU 具有对外界异步事件的处理能力而设置的。通常DSP 工作在包含多个外界异步事件环境中,当这些事件发生时,DSP 应及时执行这些事件所要求的任务。中断就是要求CPU 暂停当前的工作,转而去处理这些事件,处理完成后,再回到原来被中断的地方继续原来的工作。显然,服务一个中断包括保存当前处理现场,完成中断服务,恢复各寄存器和现场,然后返回继续执行被暂时中断的程序。请求CPU 中断的请求源称为中断源。这些中断源可以是片内的,如定时器等,也可以是片外的,如A/D 转换及其他片外装置。片外中断请求连接到芯片的中断管脚,并且在这些管脚处的电平上升沿产生。如果这个中断被使能,则CPU开始处理这个中断,将当前程序流程转向中断服务程序。当几个中断源同时向CPU 请求中断时,CPU 会根据中断源的优先级别,优先响应级别最高的中断请求。TMS320C6000 有11 个寄存器管理中断服务: *控制状态寄存器CSR 控制全局使能或禁止中断 *中断使能寄存器IER 使能或禁止中断处理 *中断标志寄存器IFR 指示有中断请求但未被响应的中断发生 *中断设置寄存器ISR 手动设置IFR 中的标志位 *中断清除寄存器ICR 手动清除IFR 中的标志位 *中断服务表指针ISTP 指向中断服务表的起始地址 *不可屏蔽中断返回指针NRP 包含从不可屏蔽中断返回的地址,该中断返回通过B NRP指令完成

相关文档