贪吃蛇课程设计总结报告书

2024-05-08

贪吃蛇课程设计总结报告书(共8篇)

篇1:贪吃蛇课程设计总结报告书

贪吃蛇课程设计总结报告书

110200第7组

组员:李轶萌 刘浩 赵鹏

一.需求分析

(1)功能与数据需求:题目要求的功能(基本功能)与 扩展功能 基本功能:贪吃蛇的蛇的移动(上下左右)

随机出现食物

蛇吃过后变长 记分功能

撞到自己或边界就失败等基础的功能

扩展功能:难易度的选择 背景音乐 空格暂停功能

容错功能(是否重新开始/结束游戏)

(2)开发环境

Vc6.0

二.概要设计(1)主要数据结构(2)程序总体结构(3)各模块函数说明 三 详细设计(1)主函数部分(2)游戏部分

(3)判断分数,是否继续部分 四.测试

五.应用程序功能的详细说明 规则:贪吃蛇在不首尾相碰且不碰边界的情况下,尽可能多的吃掉随机出现的食物,多吃多得分而益智的小游戏。

操作:上w下s左a右d 暂停 空格 退出或重新游戏肯定y 否定 n 六.总结提高(1)课程设计总结

(2)开发中遇到的问题和解决方法

开发之初,大家对这个程序都不是很了解,所以刚开始只追求把文件做出来,可以运行就可以了。但是后来发现自己做出来的东西连自己都提不起兴趣,单纯只有基本功能功能,没有记分功能,也没有暂停等等,画片也很糟糕,大小比例也有些失调,被老师戏称为“贪吃蚂蚁”。后来经过调试和自主创新,我们发现我们其实还是可以加入一些人性化的东西的。

(3)对自己完成课设完成情况的评价 附录:程序源代码

篇2:贪吃蛇课程设计总结报告书

贪吃蛇游戏设计

姓名: 张力

学号: 1002032

3完成日期: 月 日1

贪吃蛇游戏程序设计报告

一、设计目的

贪吃蛇游戏程序功能的实现主要是建立在二维数组和图形界面的应用上,通过编写游戏程序能够熟悉掌握相关数组和图形函数的运用,提高编程水平,增加编程的兴趣

二、总体设计

主函数

图形驱动Init 画界面DrawK 游戏具体过程GamePlay 图形结束Close

游戏结束GameOver 输出成绩PrScore

三、详细设计(项目成员及分工、模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)

①主函数main():

定义使用的常数,全局变量及函数原型说明,并调用Init()函数初始化图形系统;然后调用DrawK()函数画界面,调用GamePlay()函数实现游戏的具体过程,游戏结束后调用Close()函数关闭图形系统结束程序。

②画界面函数DrawK():

主界面是一个密封的围墙,用两个循环语句分别在水平方向和垂直方向输出连续的宽度和高度均为10个单位的矩形小方块,设置成淡青色,背景颜色为黑色。

③游戏具体过程函数GamePlay():

算法过程:

a.设置初始值。为防止食物出现在一个位置上,要设置随机数发生器,真正产生随机数。初始时,蛇只有蛇头,设定一个开始方向;

b.循环执行,直到按Esc键退出; c.没有按键的情况下,循环执行。

如果没有食物,随机出现食物;食物的随机出现要确保它的位置在10的倍数位置上,因为蛇的坐标都是以10为模的;如果有食物,则显示食物,蛇

贪吃蛇游戏程序设计报告

移动身体,根据蛇的方向改变坐标值,并判断蛇是否撞到了墙或自己吃到了自己,如果出现这两种情况之一,则蛇死;调用游戏结束函数GamePlay(),结束本次游戏;

判断蛇吃到食物的方法是蛇头的坐标和食物的坐标都相等;如果蛇吃到了食物,蛇身体长一节,数组元素增加一个,身体节数、分数都进行相应的改变。

在新位置画出蛇。采用的方法是每次移动的时候从最后一节开始到倒数第二节,将前一节的坐标赋值给后一节的坐标,移动后只要把最后一节用背景色去除即可。

D.如果有按键,则识别按键值。如果按键为Esc键则结束游戏,程序运行结束;如果所按键为方向键,则根据该键改变蛇方向的变量direction的值,相反方向键无效。

④游戏结束函数GameOver():

游戏结束,清除屏幕,调用输出分数函数PrScore(),并显示游戏结束。

⑤输出分数函数PrScore():

在指定位置利用sprintf()将整数转换为字符串,用outtextxy()输出,、bar()函数的应用是为了覆盖原来的值。

⑥图形结束函数Close():

在显示游戏结束信息的画面时,按任意键关闭图形系统,程序结束。

四、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题和采取的解决措施等;

将源文件在TC3.0环境下调试运行,前期发现错误为游戏界面静止。

五、源程序清单及执行结果:

#include #include #include #include #include #include #define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000

贪吃蛇游戏程序设计报告

#define UP 0x4800 #define Esc 0x011b #define N 200 /*定义全局变量*/ int i,key;int score=0;/*得分*/ int gamespeed=50000;/*游戏速度可以自己调整*/ struct Food { int x;/*定义食物的横坐标*/ int y;/*定义食物的纵坐标*/ int yes;/*判断是否要出现食物的变量*/ }food;/*食物的结构体*/ struct snake { int x[N];int y[N];int node;/*蛇的节数*/ int direction;/*蛇的移动方向*/ int life;/*蛇的生命,0活着,1死亡*/ }snake;

void Init(void);/*图形驱动*/ void Close(void);/*图形结束*/ void DrawK(void);/*开始画面*/ void GameOver(void);/*结束游戏*/ void GamePlay(void);/*玩游戏的具体过程*/ void PrScore(void);/*输出成绩*/

/*图形驱动*/ void Init(void){ int gdriver=DETECT,gmode;

initgraph(&gdriver,&gmode,“D:TC30LIB”);}

/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/ void DrawK(void){ setbkcolor(LIGHTGREEN);setcolor(11);setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/ for(i=50;i<=600;i+=10)/*画围墙*/ {

贪吃蛇游戏程序设计报告

rectangle(i,40,i+10,49);/*上边*/

rectangle(i,451,i+10,460);/*下边*/ } for(i=40;i<=450;i+=10){

rectangle(50,i,59,i+10);/*左边*/

rectangle(601,i,610,i+10);/*右边*/ } }

/*玩游戏的具体过程*/ void GamePlay(void){ randomize();/*随机数发生器*/ food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/ snake.life=0;/*蛇还活着^ ^*/ snake.direction=1;/*方向向右*/ snake.x[0]=100;snake.y[0]=100;/*蛇头*/ snake.x[1]=110;snake.y[1]=100;snake.node=2;/*蛇的节数为2*/ PrScore();/*输出得分*/ while(1)/*可以重复玩游戏,按Esc键结束*/ {

While(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/

{

if(food.yes==1)/*需要出现新食物*/

{

food.x=rand()%400+60;

food.y=rand()%350+60;

while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/

food.x++;

while(food.y%10!=0)

food.y++;

food.yes=0;/*画面上有食物了*/

}

if(food.yes==0)/*画面上有食物了就要把它显示出来*/

{

setcolor(GREEN);

rectangle(food.x,food.y,food.x+10,food.y-10);

}

for(i=snake.node-1;i>0;i--)/*蛇一个节一个节地往前移*/

{

snake.x[i]=snake.x[i-1];

贪吃蛇游戏程序设计报告

snake.y[i]=snake.y[i-1];

}

/*1,2,3,4表示右左上下四个方向,通过判断这个来移动蛇头*/

switch(snake.direction)

{

case 1:snake.x[0]+=10;break;

case 2:snake.x[0]-=10;break;

case 3:snake.y[0]-=10;break;

case 4:snake.y[0]+=10;break;

}

/*从蛇的第四节开始判断蛇有没有自己把自己吃掉*/

for(i=3;i

{

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

{

GameOver();/*显示游戏结束*/

snake.life=1;/*蛇死了T T!*/

break;

}

}

If(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||snake.y[0]>455)/*判断蛇是否撞到墙*/

{

GameOver();/*游戏结束*/

snake.life=1;/*蛇死了T T!*/

}

if(snake.life==1)/*如果蛇死了就跳出内循环,重新开始*/

break;

if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃掉食物啦!*/

{

setcolor(0);/*把画面上的食物颜色覆盖掉*/

rectangle(food.x,food.y,food.x+10,food.y-10);

snake.x[snake.node]=-20;

snake.y[snake.node]=-20;

/*新的一节先放在看不见的位置,下次循环就取前一节的位置*/

snake.node++;/*蛇的身体长一节*/

food.yes=1;/*画面上需要出现新的食物*/

score+=10;/*加十分!*/

PrScore();/*输出新得分*/

}

setcolor(4);/*画出蛇*/

for(i=0;i

贪吃蛇游戏程序设计报告

rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);

delay(gamespeed);

setcolor(0);/*用黑色去除蛇的最后一节*/

rectangle(snake.x[snake.node-1],snake.y[snake.node-1],snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);}/*endwhile(!kbhit)*/ if(snake.life==1)/*如果蛇死了就跳出循环*/

break;key=bioskey(0);/*接收按键*/ if(key==Esc)/*按Esc键退出*/

break;else if(key==UP&&snake.direction!=4)/*判断是否往相反方向移动*/

snake.direction=3;else if(key==RIGHT&&snake.direction!=2)

snake.direction=1;else if(key==LEFT&&snake.direction!=1)

snake.direction=2;else if(key==DOWN&&snake.direction!=3)

snake.direction=4;}/*endwhile(1)*/

/*游戏结束*/ void GameOver(void){ cleardevice();/*清除屏幕*/ PrScore();/*输出得分*/ setcolor(RED);settextstyle(0, 0,4);outtextxy(200,200,“GAME OVER”);/*显示游戏结束*/ getch();}

void PrScore(void)/*输出成绩*/ { char str[10];setfillstyle(SOLID_FILL,YELLOW);bar(50,15,220,35);setcolor(6);settextstyle(0,0,2);sprintf(str,“score:%d”,score);outtextxy(55,20,str);}

贪吃蛇游戏程序设计报告

void Close(void)/*图形结束*/ { getch();closegraph();}

篇3:贪吃蛇游戏的设计思路与实现

自从人类进入了21世纪, 信息化得到了很大的发展, 而作为信息化时代明星产品的电脑, 则在人们工作娱乐的生活中, 做出了不朽的贡献。本论文探讨的就在这场贡献中担任了主角的PC游戏。

一款好的游戏一定具有创意, 创意是游戏的灵魂。本游戏综合了坦克大战和贪吃蛇这两款传统经典游戏的优点, 并设计出一些具有创意的游戏方式, 如:蛇与蛇之间互相攻击、吞吃。在此基础上又引进了大家所熟悉的”终结者”穿越剧情和独特的任务系统和关卡设计, 环环相扣的剧情任务可以让玩家融入其中。

系统总体设计

在本游戏中, 电脑蛇的移动通过随机方向来实现, 在第一次移动前系统会自动生成一个随机方向, 接着再生成一个相应方向上的随机移动距离, 电脑蛇在之后的一段时间便会向此方向移动, 直到把随机距离消耗完毕。如果在此期间前方遇到障碍物无法移动, 那么随机距离立刻清零, 生成新的移动方向和距离。攻击方面, 在坦克大战中敌人是可以随机发射子弹的, 但在本游戏中由于子弹需要消耗蛇的身体节点, 所以只有当玩家蛇的任意节点位于电脑蛇移动方向的直线上, 电脑蛇才会发动攻击。

本游戏为子弹添加了较为复杂的属性和行为以增加游戏的趣味性。首先, 由于子弹会消耗身体节点 (吃了弹夹道具除外) , 蛇不能在节点少于3的情况下发射子弹。其次, 子弹分为不同等级, 随着等级越高, 速度会越快, 威力会越大。最后, 子弹具有衰变行为, 当一个等级为3的子弹击中防御力1的障碍物后, 该子弹会衰变为等级2并继续向前飞行。

本游戏最大的特色之一便是创造了蛇与蛇互相吞吃的新型攻击方式。当一方的蛇头接触到敌人的身体节点时, 被接触者的身体将会从此处断开消失, 接触者身体会增加一个节点。当双方的蛇头相碰时, 系统会进行判断哪一方的等级更高, 如果等级相等那么不会发生攻击行为。如果一方的等级高于另一方, 那么将会对对方进行整个吞吃, 对方的身体将完全化为自身节点。蛇互相吞吃行为流程如下图所示:

核心算法设计和系统实现

本程序的核心技术在于算法和线程并行安全问题:

1.电脑蛇随机移动判定算法。

2.电脑蛇发射子弹判定算法。

3.蛇吞蛇的动画效果实现算法。

电脑蛇随机移动判定算法如下所示:

这里为电脑蛇生成随机步数和随机方向, 如果在此方向上成功移动, 那么步数递减, 当递减为零时, 重新生成新的方向和步数, 当遇到阻碍时, 立刻将步数清零, 重新生成, 以增加电脑蛇的活动能力。另外生成向下方向的几率略大于其他方向, 促使电脑蛇想玩家蛇方向移动。

电脑蛇发射子弹判定算法如下所示:

这里子弹会消耗身体, 所以不能随意发射, 此算法用来判断是否应当发射子弹, 当电脑蛇的移动方向那条直线上存在玩家蛇的身体部位时, 电脑蛇将发射子弹, 为了此刻防止电脑蛇因为发射子弹而一直停止移动, 重新为它生成方向, 以增加发射子弹的随机性。另外, 当电脑蛇朝向玩家老家时, 有一定几率发射子弹。

蛇吞蛇的动画效果实现算法如下所示:

通过长度对比决定吞吃方, 接着进入吞吃状态, 这种情况下双方都失去控制权, 由舞台进行控制, 这种状态下每次定时器的调用或线程的执行, 都会使吞方获得被吞方一节身体, 被吞方损失一节身体。当判断出被吞方身体完全消失时, 吞吃状态结束。从而实现流畅的吞吃动画效果。游戏进行中界面如下图所示:

结束语

篇4:贪吃蛇游戏 实习报告

贪吃蛇游戏设计

专业 电子信息工程 杜 运 福 B电子062 0610620224 曹 妍 2008年8月30日 学生姓名 班学级 号

指导教师 完成日期

盐城工学院本科生课程设计报告(2008)

贪吃蛇游戏设计 摘要:本设计主要围绕贪吃蛇游戏展开。众所周知,贪吃蛇游戏一直以来是比较流行的。传统的贪吃蛇游戏功能比较少,对蛇的控制仅限于向左转和向右转,而现在的贪吃蛇游戏已经发展的相当好;具有更多的功能和友好的界面。例如,最近流行的免费的3D版的贪吃蛇游戏,界面相当的美观,有很强的立体效果,真实感更强,食物也为立体的且颜色绚丽。在3D版贪吃蛇游戏里面,墙壁是真实的墙壁,障碍物比较多,如树、土丘等。此外,其功能更多更强,可以选择难度。不过,总而言之,3D版与传统的贪吃蛇游戏有共性,即娱乐性与益智性。这些也是贪吃蛇游戏的优点。本人因水平有限,只能设计简单的贪吃蛇游戏。不过,在功能上,比传统贪吃蛇游戏更丰富。蛇可以反向运动,操作起来,显得更为灵活。界面的颜色选用绿色,不易使眼睛疲劳。关键词:3D版;传统;灵活; 2

贪吃蛇游戏设计

目录

1、概述

1.1、用TC设计程序的方法 1.2、简要说明

2、设计要求

3、系统分析与模块设计 3.1、算法设计 3.2、数据结构 3.3、模块设计 3.4、模块枝干图

4、程序流程图 4.1、图形驱动 4.2、开始画面 4.3、显示食物 4.4、蛇向前移动 4.5、判蛇死

4.6、吃到食物后处理 4.7、判蛇反向移动 4.8、游戏结束 4.9、图形结束

5、程序设计及关键源代码

6、运行结果分析

7、实习心得

盐城工学院本科生课程设计报告(2008)

贪吃蛇游戏的设计 1.概 述 1.1、用TC设计程序的方法

首先应了解设计要求,然后按照功能设计模块,每个模块完成特定的功能,要使模块间的耦合性小,内聚性高;设计模块是相当重要的一个环节。模块的数量不宜太多,也不宜太少,要使每个模块都能比较简单的转换成流程图。模块设计完成后,就该给每个模块绘制流程图了。流程图要简单,容易理解,多用中文。不宜写过长的代码,增加理解难度。流程图与模块枝干图均可用绘图软件绘制,可适当加些背景色,用以区分。此外,流程图应容易转换成代码。绘制好了流程图,就要编写代码了。直接在TC环境里输入代码,然后运行测试,检查错误,最终,将设计出可行的程序。1.2、简要说明

我设计的贪吃蛇游戏具有很多独特性。例如,墙壁不用实体,而用中空的墙,颜色为绿色,显得更美观,且不易使眼疲劳。操作上,做了些简化,游戏开始时便可以自动运行,且速度较快,属中等难度。玩游戏的过程相当简单,只需按键盘上的上下左右方向键,便可改变蛇的行进方向。食物随机产生。贪吃蛇吃到一个食物后便得到10分。得分显示在左上角。当蛇撞到墙壁或自己时,蛇死,游戏结束,输出得分。

2.设计要求

外观为矩形,食物随机产生,添加注释,统计得分、每吃到一个食物获得10分。蛇碰到自己或墙壁,游戏均结束。游戏结束时输出得分。画出模块枝干图与每个模块的程序流程图。修改某些代码,改变其外观及功能。游戏操作应尽量简单。

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

3、系统分析与模块设计 3.1、算法设计

玩游戏过程采用递归算法,由WHILE(1)控制循环过程,可使游戏重复玩,在蛇死之前不停的玩。判断蛇死的算法是通过判断蛇有没有碰到自己及墙壁。使蛇向前移动采用递归算法,通过递归将蛇的每一节依次向前移动,横坐标与纵坐标依次向前赋值,从而达到使蛇前移的目的。蛇的前进方向通过IF结构判断。

贪吃蛇游戏设计

3.2、数据结构

蛇与食物信息分别用两个结构体存储与表示。将食物的横坐标X、纵坐标Y和判断是否要出现食物的变量YES分别作为食物的结构体的成员。蛇的横坐标数组X[N],纵坐标数组Y[N],蛇的节数NODE,蛇的移动方向DIRECTION、蛇的生命LIFE分别作为蛇的结构体的成员。结构体内每个成员的存储类型均为整型。3.3、模块设计

模块应具有高内聚性,低耦合性。这样,程序运行才更稳定,效率更高。据功能将贪吃蛇游戏划分成四个大模块,九个小模块。每个模块均具有自己的功能,而且,比较容易画出各个模块的流程图。3.4、模块枝干图

简要说明:图形驱动即完成初始化图形系统功能;开始画面模块的主要作用是根据设置绘制出玩游戏区域四周的墙壁;玩游戏的过程是游戏此游戏程序的核心,又可细分为好多小的功能模块;其中,显示食物模块仅完成显示食物功能;蛇前移模块即通过递归算法实现蛇的向某方向移动;判蛇死模块的功能是通过判断蛇是否碰到自己或墙壁来判断蛇有没有死亡。吃到食物后小模块只有蛇吃到食物后才起作用。即当蛇吃到食物后,蛇自身延长一节并绘出蛇,同时加10分。通过键盘操控来玩游戏主要由判反向移动模块完成,即当蛇不是反向移动时,按照键盘上方向键指示移动。游戏结束模块功能简单,仅完成输出得分与提示语功能。最后图形结束模块完成关闭图形功能。

4、程序流程图

4.1、图形驱动

盐城工学院本科生课程设计报告(2008)

4.2、开始画面

贪吃蛇游戏设计

4.3、显示食物

盐城工学院本科生课程设计报告(2008)

4.、蛇向前移动

贪吃蛇游戏设计

4.5、判蛇死

盐城工学院本科生课程设计报告(2008)

4.6

、吃到食物后处理

贪吃蛇游戏设计

4.7、判蛇反向移动

盐城工学院本科生课程设计报告(2008)

4.8、游戏结束

贪吃蛇游戏设计

4.9、图形结束

5、程序设计及关键源代码

定义上下左右控制方向:

#define LEFT 0x4b00 #define RIGHT 0x4d00

盐城工学院本科生课程设计报告(2008)

#define DOWN 0x5000 #define UP 0x4800 #define ESC 0x011b

设定游戏速度:

int gamespeed=60000;

用结构体定义食物与蛇:

struct Food { int x;/*食物的横坐标*/ int y;/*食物的纵坐标*/ int yes;/*判断是否要出现食物的变量*/ }food;/*食物的结构体*/ struct Snake { int x[N];int y[N];int node;/*蛇的节数*/ int direction;/*蛇移动方向*/ int life;/* 蛇的生命,0活着,1死亡*/ }snake;主函数:

void main(void){ Init();/*图形驱动*/ DrawK();/*开始画面*/ GamePlay();/*玩游戏具体过程*/ Close();/*图形结束*/ } 图形驱动:

贪吃蛇游戏设计

void Init(void){ int gd=DETECT,gm;initgraph(&gd,&gm,“c:c”);cleardevice();}

开始画面,左上角坐标为(50,40),右下角坐标为(620,460)的围墙:

void DrawK(void){ setcolor(10);/*绿色*/ setlinestyle(SOLID_LINE,0,THICK_WIDTH);/*设置线型*/ for(i=50;i<=610;i+=10)/*画围墙*/ { rectangle(i,40,i+10,49);/*上边*/ rectangle(i,451,i+10,460);/*下边*/ } for(i=40;i<=450;i+=10){ rectangle(50,i,59,i+10);/*左边*/ rectangle(611,i,620,i+10);/*右边*/ } }

玩游戏具体过程:

void GamePlay(void){ randomize();/*随机数发生器*/ food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/ snake.life=0;/*活着*/ snake.direction=1;/*方向往右*/ snake.x[0]=100;snake.y[0]=100;/*蛇头*/ snake.x[1]=110;snake.y[1]=100;

盐城工学院本科生课程设计报告(2008)

snake.node=2;/*节数*/ PrScore();/*输出得分*/ while(1)/*可以重复玩游戏,压ESC键结束*/ { while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/ { if(food.yes==1)/*需要出现新食物*/ { food.x=rand()%400+60;food.y=rand()%350+60;while(food.x%10!=0)/*使食物在整格内*/ food.x++;while(food.y%10!=0)food.y++;food.yes=0;/*画面上有食物了*/ } if(food.yes==0)/*画面上有食物了就要显示*/ { setcolor(BROWN);rectangle(food.x,food.y,food.x+10,food.y-10);} for(i=snake.node-1;i>0;i--)/*蛇的每个环节前移动,关键算法*/ { snake.x[i]=snake.x[i-1];snake.y[i]=snake.y[i-1];} /*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/ switch(snake.direction){ case 1:snake.x[0]+=10;break;case 2: snake.x[0]-=10;break;case 3: snake.y[0]-=10;break;case 4: snake.y[0]+=10;break;} for(i=3;i

贪吃蛇游戏设计

{ if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0]){ GameOver();/*显示失败*/ snake.life=1;break;} } if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55|| snake.y[0]>455){ GameOver();snake.life=1;/*蛇死*/ } if(snake.life==1)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/ break;if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/ { setcolor(0);/*把画面上的食物东西去掉*/ rectangle(food.x,food.y,food.x+10,food.y-10);snake.x[snake.node]=-20;snake.y[snake.node]=-20;/*新的一节先放在看不见的位置,下次循环就取前一节的位置*/ snake.node++;/*蛇的身体长一节*/ food.yes=1;/*画面上需要出现新的食物*/ score+=10;PrScore();/*输出新得分*/ } setcolor(4);/*画出蛇*/ for(i=0;i

盐城工学院本科生课程设计报告(2008)

} /*endwhile(!kbhit)*/ if(snake.life==1)/*如果蛇死就跳出循环*/ break;key=bioskey(0);/*接收按键*/ if(key==ESC)/*按ESC键退出*/ break;else if(key==UP&&snake.direction!=4)/*判断是否往相反的方向移动*/ snake.direction=3;else if(key==RIGHT&&snake.direction!=2)snake.direction=1;else if(key==LEFT&&snake.direction!=1)snake.direction=2;else if(key==DOWN&&snake.direction!=3)snake.direction=4;}/*endwhile(1)*/ }

游戏结束:

void GameOver(void){ cleardevice();PrScore();setcolor(GREEN);settextstyle(0,0,3);outtextxy(200,200,“ Game over!Try!”);getch();}

输出成绩:

void PrScore(void){ char str[10];

贪吃蛇游戏设计

setfillstyle(SOLID_FILL,YELLOW);bar(50,15,220,35);setcolor(5);settextstyle(0,0,2);sprintf(str,“score:%d”,score);outtextxy(55,20,str);}

6、运行结果分析

通过运行,我对自己的设计比较满意。运行结果正如我所料,此贪吃蛇游戏具有易操作性及充满活力的外观。

截图及描述:

图6-1 开始画面

此图为开始画面图,蛇有三节,墙壁颜色为绿色,显得较有活力。

盐城工学院本科生课程设计报告(2008)

图6-2 蛇吃到两个食物后

蛇吃到食物后,得分为20分,蛇延长两节。

图6-3 游戏结束画面

贪吃蛇游戏设计

7、实习心得

在大一学习期间,我就知道在大二暑假期间,有程序设计实习。从那时起,我就期盼着这一天早点到来。只因我对编程有浓厚的兴趣。我是我们班第一个通过江苏省计算机VB二级考试的。我的VC++成绩也还可以。

转眼间,程序设计实习就如期而至了。实习的第一天是充满好奇与兴趣,当实习回来时,就感觉得这次实习并非想象中的那样。我本以为,程序设计实习应该是开放性的,让我们参照某些课题,自主、自由地设计程序。我想,那样更能促进我们学习和提高我们的动手能力。

这次实习中,我们都被给了程序的源码,而且有详细的功能说明。表面上看,我们几乎不需什么努力就能完成,而实际上,并非如此。因为那些程序大多是基于16位DOS执行的,并且,里面包含许多DOS下图形处理的函数,我从未涉及过,所以,很难看懂代码,即使有那样详细的注释。

通过坚持上机实习,我对代码的认识越来越多。我还上网找了些资料,如TC函数详解等等。我更多的了解了各种TC函数的功能。我通过一步步的学习,终于弄懂了整个程序,并且对程序做了些修改。如外观、大小、输出成绩等。通过修改程序代码增加游戏的功能,我也从中获得了自信。

通过使用Win-TC1.9设计程序,我更多的了解了TC函数的功能与用法,也了解了在TC环境下调用DOS绘图及处理的常用方法。

在上机实习的过程中,还绘制了模块枝干图与程序流程图,我感觉到,画模块枝干图并不是件容易的事。只有在弄懂程序后才能将整个程序划分成数量适宜的模块。划分模块确实挺重要的,原来我将玩游戏过程划为一个模块,后来发现太复杂,很难画出流程图。模块的数量直接关系到绘制程序流程图的难度。从中,我更深入了解了程序设计的整个过程,这也是我最受益的地方。

在实习过程中,遇到不懂的问题,时而查阅以前学过的书籍,也等于我做了复习。这也能提高我将理论付诸实践的能力。

此外,实习期间,你将我们划分成小组;这促进了我们的相互合作与相互学习。总之,通过这次实习,我学到了好多书本以外的知识!我同样很感谢老师,您!

参考文献

[1] 张岳新《Visual C++程序设计》。

篇5:向贪吃蛇学管理

刚开始玩的时候,由于对操作系统还不熟悉,小蛇不一会就死掉了,死了几次,手开始熟练了,小蛇也越长越长。

有一天到某大学总裁班去讲管理课,照本宣科地说了半天,下面的人几乎昏昏欲睡,课眼看讲不下去了,我灵机一动,与学员互动起来。当一个学员提出“企业越来越大,经营越来越难”的困惑时,我忽然想到了“贪吃蛇”。

接下来我讲了“贪吃蛇”的故事,赢来下面一片叫好。

(1)企业是条“贪吃蛇”

当我说出这个比喻时,大家都比较认同。

因为,中国大多数第一代民营企业家,都是从一条“小蛇”开始踏上他们的创业之路。

因为小,所以天地都很宽,游刃有余,也不存在“咬尾”问题,可以灵活地吃到食物,长大成为必然。

小企业的经营管理相对简单,内部不容易出问题,速度也不快,可以随时掉头,直扑目标(利润),所以中国市场经济环境里成长着一大批中小企业。

长大是一件令人高兴的事,但成长伴随烦恼,

(2)企业的两大死法

“贪吃蛇”的两种死法,就是大多数早夭企业的宿命。

先看第一种死法:撞墙。

虽然是外因引起的,但主观判断失误是问题的根本原因。在企业的早期发生这样的事情,一是经营技术不到位,二是延误了掉头的时机。在企业大到一定时期,操作不当也会把自己“逼”上南墙。

再看第二种死法:咬尾。

不管你承认不承认,很多企业是死于内因,自己把自己给弄“残废”了。

小企业很难出现这种情况,人少,盘子小,意见容易统一,管理不到位都掌控得了。

企业大到一定程度,就得要提防“内耗”。内耗主要有几条原因:

第一,管理混乱;

第二,眼前利益;

第三,贪多求大,不留后路。

(3)大企业与小企业行为方式的不同

“贪吃蛇”小得时候,没有那么多顾忌,只要不撞墙,可以直奔主题,不走弯路,更有效率。大了,就一定有章法,你可以看到它的行走轨道变得有序,井井有条,即使吞食食物,也变得有条不紊,有章可循。你可以看到大蛇比小蛇走了更多的“弯路”,但这些“弯路”是必要的“弯路”,是保证它能够“长得更大”。

企业和“贪吃蛇”一样。小的时候,你不必为管理而管理,完全没必要绕很多弯路。我看很多企业为了“让管理上一个台阶”而引进许多管理模式,生搬硬套,弄出一大堆监督、审批程序,不但不能提高效率,反而打击了员工的工作积极性,适得其反。

对大企业而言,管理是随时随地的,越大的企业,越应该规范,越要少一些随意性。任何疏漏都会导致品质下降,效率下降,或者增加成本。记住一条原则:管理的第一目的是提高品质,第二才是提高效率,最后是控制成本。

篇6:锻炼大脑的手指操3、贪吃蛇

将双手食指并拢

其它四指交叉

双手紧握

并拢的食指向一个方向转动

篇7:机是条贪吃蛇阅读题答案

2.打比方;举例子。形象具体地说明 了个人用品也成了手机进攻的目标。

3.不能。因为“看上 去”是从表面现象而言,也许实质并非如此,说明手机“无所不能”还不是绝对的。

手机保养的妙招推荐:

手机电池保养妙招一:新购手机充电需注意

新购手机的电池都是使用的锂电池,且厂商已经进行了激活处理,每个新的手机电池都会有余电,因此新购手机的前三到五次充电为调整期,注意每次充电应保持在14小时以上,以保证充分激活锂离子的活性,达到最佳使用效果。

手机电池保养妙招二:锂电池无需放电,尽量慢充

很多网友认为手机电池在充电前应该先放电,这是不对的,锂电池是不需要也不可以放电的,现在的锂电池都没有放电功能。

另外,建议大家在充电时,尽量以慢充的方式充电,以减少对手机电池的损耗。注意:无论慢充还是快充,都不能超过24小时,否则会因为长时间的供电产生巨大的电子流而烧坏电芯。

手机电池保养妙招三:充满后不要立即断电

在手机电池充电时,如手机或充电器显示已经充满,请不要立即断电,因为这时的手机电池电量实际只充了90%,应给电池一段补电的时间,将电池充满后再使用,否则会缩短使用时间。

手机电池保养妙招四:充电时尽量不开机

如果在充电时手机还开着,则手机电池一面因为手机的使用而向外放电,又因电池的充电而向内供电,很可能使电压紊乱导致手机的电路板会发热,如果有来电时,会产生瞬间回流电流,对手机内部的零件造成损坏。

手机电池保养妙招五:电量用完后再充

手机电池的充电次数决定了电池的寿命。通常,锂电池大约可连续充/放电500次,之后的电池性能就会大大减弱。因此,建议大家尽量在手机电池用尽或自动关机后再充电。

手机电池保养妙招六:注意保护手机电池

要想手机电池保养到位,同时还应该注意保护手机电池,因此,不要将电池暴露在高温或严寒下,像三伏天时,不应把手机放在太阳底下,经受烈日的曝晒;或拿到空调房中,放在冷气直吹的地方。当充电时,电流产品回流,电池有一点发热是正常的。

手机电池保养妙招七:长时间未用后需要激活

篇8:贪吃蛇大作战三年级作文300字

放假了,我这个游戏高手又要大显身手了!今天,我将和舅舅展开一场贪吃蛇大决斗。

我先和舅舅比拼“无尽模式”。我很快发现了一些食物,旁边的蛇几乎同时发现了,我来了个先下手为强,启动最大马力将食物抢劫一空。旁边的蛇还在那里徘徊,好像在说:“你别得意,我会卷土重来的!”

我吃了这些食物后,已经变成了一条长龙似的大蛇。我回头一看,舅舅跟我比,简直就是以卵击石嘛!我转了一圈,结果只有两条蛇,根本就不够吃。“我已经后来居上了,那些蛇就是我吃的`。”舅舅说。“原来如此!”我生气了,“怪不得只有两条蛇,我要把你除掉,免除后患。”

这时,我发现舅舅的蛇跟我差不多大了,再这样下去,我必定处于下风。于是,我采用了迷惑战术,我先连环转圈,又S型行走,还紧靠着墙根走。他被我迷惑住了,竟然一摇一摆地向墙上撞去,好像喝醉酒的一条蛇。“舅舅必败无疑!”我高呼起来。没想到,舅舅一转身,突然加速,对我形成了一个包围圈,我在包围圈里窜来窜去,想找一个出口,可无济于事。包围圈越来越小,最后,我不得不认输。

本文来自 360文秘网(www.360wenmi.com),转载请保留网址和出处

【贪吃蛇课程设计总结报告书】相关文章:

贪吃的狐狸教学设计08-27

贪吃老爸作文05-02

作文 贪吃的小兔05-26

《贪吃的小蛇》教案04-08

贪吃的老爸小学作文04-27

贪吃的小狗妞妞作文05-28

贪吃鬼六年级作文05-22

贪吃的我400字作文05-26

故事贪吃的小狐狸07-01

贪吃的小老鼠故事07-17

上一篇:英语话剧主持词下一篇:2011-2012学年第二学期期中教学检查简报