当前位置:文档之家› 贪吃蛇项目报告

贪吃蛇项目报告

C语言项目设计报告

——贪吃蛇游戏

课程:标准C语言

指导老师:XXX

项目:贪吃蛇游戏

班级:XXXX班

组员:XXX、XXX、XXX、XXX

姓名:XXX

学号:XXXXXXX

日期:2012/7/7

目录

一.项目开发文档 (3)

1 项目基本分析 (3)

1.1项目目标 (4)

1.2功能描述 (4)

1.3小组分工 (7)

2 总体设计报告 (8)

2.1 函数分块 (9)

2.2 接口设计 (9)

3 详细设计报告 (14)

3.1 程序结构 (14)

3.2 算法流程 (17)

4 操作指南 (29)

4.1 运行及结果截图 (29)

5 项目总结 (32)

5.1 优点与不足 (32)

5.2 我的收获与总结(※) (33)

二.项目代码 (36)

贪吃蛇游戏

一项目开发文档

1 项目基本分析

在我进行编写贪吃蛇游戏之前,我所做的必须是可行性分析,因为一旦进行贪吃蛇游戏项目的开发,就必须保证自己在规定的时间内能够独立的完整整个程序的所有功能,而且必须是最优的,因此,在开发贪吃蛇游戏之前,我必须要做的是可行性分析。通过查找相关文档和技术支持,了解了VS环境下的开发过程,熟悉了C语言的开发技巧,通过以下几个方面,进行可行性分析:

1.参考文献:《贪吃蛇游戏用户描述文档》、在网上找了相关源代码,确

定自己能够在自己能力范围内开发出这个贪吃蛇游戏项目。

2.功能要求:在进行整个项目开发之前,我必须要做的就是确定贪吃蛇游

戏的主要功能,必须明确贪吃蛇游戏的功能,因为要进行游戏功能可行

性分析,经过自己的查阅相关资料,我确定了贪吃蛇游戏的具体功能,

详见后续部分详细设计。

3.性能需求:必须保证自己开发的贪吃蛇游戏能够整体尽可能做到高效快

速,不占用大量的使用资源,因为我做的是一个应用窗体控制台的游戏

开发项目,必须要考虑资源使用情况,要求尽可能少用资源,在有限的

资源范围内实现最大的可利用价值。

4.运行环境:VS2010上编写并进行调试,经过安装软件,确定可以进行项

目程序的编写。

5.界面要求:采用Win7应用窗体标准界面,只需要使用键盘。

6.完成期限,一个学期完成整个系统,包括程序的编写以及最终的调试,

测试阶段。

1.1项目目标

1熟悉函数的调用与程序的模块化设计,加深对所学知识的理解

2加强自学能力,遇到不了解的函数或者方法,通过图书及网络资源学习,提高学习能力

3完成贪吃蛇游戏,通过小项目来检验一学期的学习效果,增加学习兴趣

1.2 功能描述

该游戏在继承传统同类游戏规则的基础上,我们添加了我们自己的想法与功能,设计如下:

游戏规则包括蛇的运动范围、蛇的生命周期问题、分数统计、关卡判断。

其中蛇的运动范围是一个15*15的数组呢,蛇运动的地图抽象成为一个15*15的二维整形数组,每个数组值代表一个小方块的坐标值,这样,蛇只能在规定好的二维数组内运动

当蛇遇到数组左右边界值(我们在这里抽象成为上、下、左、右四个边界,其中上边界坐标值中纵坐标都是0,横坐标任意,下边界为纵坐标是15,同理横坐标不变,左边界为横坐标为0,纵坐标任意,同理右边界为横坐标为15,纵坐标任

意)时,宣告蛇生命周期结束(上下边界不限定),贪吃蛇死亡,这个是第一个规则;另外,当蛇自己吃到自己身体的某一部分时,也宣告游戏结束,在程序里通过循环判断蛇头下一个前进方向的节点是不是蛇身上的某一部分节点即可,如果是那么蛇死亡,否则继续运行游戏。

分数统计算法的思想是每次蛇吃到一个果实时,相加的分数为一个定值10来记录分数,这样可以随着游戏难度的增加,分数值也随之增多。关卡功能设置通过与分数相关联而体现的,初始化游戏分数为0,关卡障碍物选择由玩家键入,当玩家玩到一定的分数时(例如是100)关卡加一,变为第二关,同时,蛇前进速度相应增加一个等级,障碍物的设置也变化,这样就实现了不同关卡,不同速度的贪吃蛇,从而增加了游戏的难度。

蛇:

1、能够实现贪吃蛇自动前线移动,也就是贪吃蛇能够“活动”的外观效果,根据相同的时间间隔,每一次将贪吃蛇自身的蛇头向前移动一个小格子,同时蛇尾向前移动一个小格子,移动方向为贪吃蛇行走的方向。

2、每当一个食物时,蛇长度增加一格

3、蛇头碰到自身时则游戏结束

4、通过键盘来控制蛇的移动

食物:

1、每当蛇吃到食物时,重置食物

2、吃到特定食物时,蛇的长度能够缩短

边界和障碍物:

1、遇到边界和障碍物则游戏终止

成绩统计:

1、当贪吃蛇吃到果实时,玩家的分数就应该随着吃到的果实而增加,增加

的规则就是每一个吃到一个食物则乘以10得到分数。

2、能够与历史成绩进行比较,显示高分排行榜

输入与输出:

1、通过键盘选择障碍物关卡数

2、通过键盘选择蛇的速度

3、显示游戏指南

4、能够即时显示当次游戏的关卡数及游戏分数

5、显示游戏界面

贪吃蛇的总体功能图

1.3小组成员分工

2总体设计报告

考虑到要实现的功能太多,所以宜采用模块化设计,把功能分块(在介绍功能时已经按这个方式介绍了),然后设计各个模块之间参数的传递,衔接起来,

最后实现每个功能的算法。

首先我们定义了所需要的数据类型

1.Node(结点)型定义

用来作为蛇的头,身,尾的数据类型以及障碍物的数据类型

每个成员的设计已在注释中注明,其中蛇和障碍物均用链表结构表示struct Node

{

int x; /*蛇某一节的横坐标*/

int y; /*蛇某一节的纵坐标*/

struct Node *pre; /*蛇某一节的前驱结点*/

struct Node *next; /*蛇某一节的后继结点*/

};

2.Food(食物)型定义

用来储存食物的横纵坐标及显示的字母

3.Player(玩家)型定义

储存玩家的姓名和成绩

2.1函数分块

总的来说,我们把所有功能分成了以下几个大块:

main

snake

food

barrier and block

grade

共五个大块,分别实现相应功能,见名知意,各块的功能显而易见,依次实现主要的运行(main),蛇的控制、移动、增减(snake),食物的重置(food),障碍物的设置及边界的判断(barrier and block),成绩的统计与存档(grade)每个模块均存在一个CPP中,截图如下:

2.2接口设计

下面分别介绍每个大块的内部函数接口设计

main:

主函数:

int main()

其中main函数里定义了游戏必须的一些变量

输入函数:

int input(char*pname,int*barrierkind)

第一个形参为char*类型,用来接收main函数里面的玩家名字,便于输入赋值,因为要进行写操作修改其值,所以定义成一级指针;第二个形参为障碍物类型,即初始化的障碍物分布,同样要在input里赋值,所以用int*型。

返回值为速度值,是一个整数,游戏通过这个数来控制蛇前进的速度,所以定义为int

屏幕显示函数:

void screenshow(int score,int stage,Node*head,Node*firstbar,Food*food)

要显示当前的分数和关卡,所以传两个整型参数score和stage;又要通过二位数组扫描,根据横纵坐标来看输出“”(空格)还是蛇“■”,或障碍物“※”,或食物,所以要传结构体参数Node*和Food

Snake:

蛇的初始化函数:

void initalsnake(int*grade,Node**head,Node**rear)

顺便把成绩也初始化,所以传了个int型参数grade;然后由于要修改main函数中Node*head目标空间的的横纵坐标,所以这里用了一个二级指针,否则,若设计成Node*型,则形参改的值只在该函数有效,对main函数里的head无影响(此处曾调试很久,在5.2.2心得体会里在详细说明)

方向输入函数:

char directioninput(char c)

由键盘键入一个值,传回有效值,故返回值类型为char, 由主函数传过来而不内部定义时避免输入无效值时出错,所以此处相当于输入无效值则还是原值(内部最后一句为return c)。

蛇移动函数:

void snakeheadmove(char c,Node**head)

传前进的方向,为字母值,用char,头要移动,需要改值,所以用二级指针

添加和删除结点函数:

void addpoint(Node**head,Node**rear)

void deletepoint(Node**head,Node**rear)

由于用的是双向链表,所以要传头尾两个参数,需改值,故用二级指针

Food:

食物重置函数:

void foodreset(char c,Food*food,Node*head,Node*firstbar)

当玩到最后蛇身较长时,重置多次可能还不行,所以会内定为在蛇前进方向的前两个出食物,所以要传前进方向,用char;需改变食物的横纵坐标及显示字母,故第二个参数用一级指针;要判断食物是否重置到蛇身或障碍物上,所以传二者参数,由于只是判断不需要改值,所以一级指针即可

barrier and block:

障碍物初始化函数:

void initalbarrier(int barrierkind,Node**firstbar,Node**lastbar)

要调用障碍物重置函数void barrierset(int barrierkind,Node**firstbar,Node**lastbar) ,需要主函数里的实参,所以第一个参数用int,便于内部传值调用其他函数;要修改主函数中firstbar和lastbar的目标空间的值,所以用二级指针;

判断出界函数

int Block(Node *head)

看头部的坐标是否出界,所以只需Node*即可;对判断结果进行记录,返回0或1,所以用int;

障碍物重置函数

void barrierset(int barrierkind,Node**firstbar,Node**lastbar)

接收关卡数,故第一个参数定义为int; 要修改主函数中firstbar和lastbar的目标空间的值,所以用二级指针;

判断游戏结束函数:

int Gameover(Node*head,Node*firstbar)

需要判断头是否触到障碍物,所以传参数Node*;对判断结果进行记录,返回0或1,所以用int;

Grade:

成绩插入函数:

void scorecompare(Player*top,Player*player)

把该次的成绩与原来的前十名成绩进行比较,需要记录名字,所以传结构体Player*;

历史成绩复制函数:

void fileinital(Player*topplayer)

由于要把文件中的历史成绩赋值给主函数的结构体数组,所以传一级指针Player*

成绩存档函数:

void file(Player*top)

把排序后的新的TOP10的成绩写入文档,由于是一维数组,所以只能传指针;

参数传递图:

main grade snake

注明:单项箭头的指向为参数传递的方向;

双向箭头说明有传递返回值;

主要采取指针参数改动值,所以很少有返回值;

3详细设计报告

3.1程序结构

程序流程图

3.1.1各种宏定义以及说明

#define boundary 15 /* 边界定义为15*15 */

#define N 10 /* 只存取和展示前10名玩家*/

3.1.2主要函数声明如下

int input(char*,int*);

显示最初的提示界面,实现难度和关卡的选择输入;

void foodreset(char c,Food*food,Node*head,Node*firstbar);

实现食物的随机重置;

void initalsnake(int*,Node**,Node**);

给蛇头动态分配空间,顺便初始化成绩;

void initalbarrier(int,Node**,Node**);

给障碍物初始化空间,同时调用食物重置函数;

void barrierset(int,Node**,Node**);

根据现在的关卡信息重置障碍物;

int Block(Node*head) ;

判断头是否出界

char directioninput(char);

方向控制键入函数;从键盘过去键入值;

void snakeheadmove(char,Node**);

根据键入的值执行蛇头移动;

void addpoint(Node**,Node**);

吃到食物时增加结点,蛇身增长;

void deletepoint(Node**,Node**);

吃到特定食物蛇身变短;

int Gameover(Node*,Node*);

判断游戏是否终止;

void screenshow(int,int,Node*,Node*,Food*);

显示游戏界面;

void scorecompare(struct Player*,struct Player*); 每个玩家游戏结束即时排序插入高分榜;

void fileinital(Player*);

文件初始化;

void file(Player*);

成绩存档;

3.2算法流程

3.2.1 main模块的函数算法:

int main()

{

//初始化信息,调用文件初始化函数;

while(1) //玩家循环(外循环){

定义必要的变量;

初始化该玩家信息(姓名“XXX”,0分);

清屏;

调用输入函数,返回速度值;

调用蛇和障碍物的初始化函数;

利用time函数产生随机数;

While(1) //游戏的进程循环(内循环){

if(蛇头吃到食物)

{

(字母“o”)?(减短):(增长);

调用食物重置函数;

玩家成绩增加;

}

if(有键盘输入)

{ 调用方向输入函数;}

pt=rear;

while(pt不指向蛇头)

{将蛇头后面的结点分别等于前驱结点;}//相当于前移调用蛇头移动函数;

if(游戏过关)

{

速度延时减(20毫秒*关卡等级),直到为零;

释放障碍物空间;

重置障碍物;

}

if(游戏结束)

{

输出鼓励的话;

跳出本次循环;

}

调用屏幕显示函数;

调用Sleep函数延时;

}//内循环结束

释放蛇头空间;

释放障碍物空间;

调用分数插入函数;

调用文件存档函数;

延时一秒;

清屏;

显示英雄榜;

判断继续游戏还是退出;

} //外循环结束

return 0;

}

int input(char*pname,int*barrierkind)

{

定义速度变量;

printf("欢迎来到贪吃蛇游戏");

printf("请输入名字");

scanf("%s",pname);

………………

(后面是类似的输入障碍物类型和难度)

return speed*50;

}

void screenshow(int score,int stage,Node*head,Node*firstbar,Food*food) {

定义要用的变量;

清屏;

输出提示游戏规则的话;

贪吃蛇小游戏需求分析

“贪吃蛇”游戏需求分析 一、需求分析: 贪吃蛇游戏是一个小型益智游戏,它可以锻炼人们的反应能力,尤其是在开发人的智力方面,很受人们的欢迎。本组该次小游戏程序设计包含二维数组、鼠标操作及图形化函数等方面知识。 具体需求概要如下: 1.初始化游戏界面为600*600大小,并于坐标为(250,250) 处显示游戏名称“贪吃蛇”,等待鼠标响应以开始游戏; 2.在程序中用格子初始蛇长及蛇的位置,用W、S、A、D控制方 向为上下左右进行游戏。游戏过程中,每吃到一次食物用For 循环使蛇移动的speed增加,分数加10,蛇长加一格; 3.蛇头咬到蛇尾or蛇头接触活动区域外围则Game over,显示 累计分数,游戏结束。 二、运行环境: 该课程设计在设计与实验过程中需要在windows XP系统/windows 2000以上系统中进行,程序设计要求在visual C++平台中进行,完成代码的编写、编译、调试、测试等工作。本游戏对计算机硬件和操作系统要求极低,所以在这里只是把自己的电脑硬件参数和系统参数列下:操作系统:windows xp 软件环境:安装VC++6。

三、设计概要: 1.初始化模块:屏幕初始化,屏幕初始化用于显示游戏信息“贪吃蛇”; 2.游戏界面模块:设计绿色的边框,边框内用黑色无框格子填充作为游戏活动区域; 3.游戏运行模块:运用函数控制蛇长及食物的关系,并使用键盘控制方向; 4.判断模块:头咬到尾或头接触活动区域外围,则游戏结束,显示累计分数。 四、详细设计及实现: 1.流程图(函数调用关系图)

2.预处理 #include<> #include<> #include<> #include<> #include<> #include<> 3.数据结构 IMAGE wal; MOUSEMSG m; typedef struct { int x[40]; int y[40]; int derection; int food; int foodx; int foody; int size; } snake;

贪吃蛇测试分析报告

贪吃蛇 测试分析报告 开发小组成员:

目录 1.引言————————————————————— 4 1.1编写目的—————————————————— 4 1.2项目背景—————————————————— 4 1.3定义———————————————————— 4 1.4参考资料—————————————————— 5 2.测试概要————————————————————5 3.测试结果及发现—————————————————6 3.1游戏方面——————————————————6 3.2界面菜单测试————————————————9 4.对软件功能的结论————————————————11 4.1游戏运行方面————————————————11 4.1.1能力—————————————————

11 4.1.2限制—————————————————11 4.2界面设置方面————————————————11 4.2.1能力————————————————— 11 4.2.2限制—————————————————11 5.分析摘要————————————————————12 5.1能力————————————————————12 5.2缺陷和限制—————————————————12 5.3建议————————————————————12 5.4评价————————————————————12 6.测试资源消耗——————————————————12

1.引言 1.1编写目的: 明白用户需求,为系统设计和编码人员提供依据,查找项目中存在的错误及可能存在的错误,完善软件不足的地方,提升软件的部分功能、性能。 1.2项目背景: 软件项目名称:贪吃蛇游戏 1.用户需要开发一款命名为贪吃蛇的休闲小游戏 2.开始游戏时,存在一条向右运动的小蛇和蛇需要吃掉的豆 3.用户通过键盘的“上下左右”键控制小蛇分别向“上下左右” 运动来吃掉豆,同时增加自身的长度 4.小蛇吃掉游戏规定数量的豆后,游戏结束 5.游戏分为初级、中级、高级 6.小蛇不能碰到边界 7.小蛇自身不能碰撞 8.游戏可以暂停和重新开始 9.游戏完成后计算所得分数 10.游戏在任何时候都可以退出 1.3定义 1):块 一条蛇可以看成由许多正方形的“小格子”拼凑成,称作块。块

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

辽宁科技大学课程设计说明书 设计题目:基于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.doczj.com/doc/d312355293.html,2008开发环境下进行运行测试,检查错误,最终设计出可行的程序。 2、贪吃蛇游戏说明 游戏操作要尽可能的简单,界面要尽可能的美观。 编写程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜欢的游戏:一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被吃掉,这时蛇的身体长一节,同时计10分;接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁、障碍物或身体交叉(蛇头撞到自己的身体),则游戏结束。游戏结束时输出相应得分。 具体要求有以下几点: (1)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理; (2)系统设计要实用,采用模块化程序设计方法,编程简练、可用,功能全面; (3)说明书、流程图要清楚; 二、实验目的及设计要求 1、实验目的 .NET课程设计是教学实践环节中一项重要内容,进行此课程设计旨在掌握基础知识的基础上,进一步加深对VC#.NET技术的理解和掌握; 提高和加强学生的计算机应用及软件开发能力,使学生具备初级程序员的基本素质; 培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应信息管理行业日新 1

C语言贪吃蛇程序设计说明书

C语言贪吃蛇程序设计说明书 题目:贪吃蛇游戏 学校: 系别: 专业 班级: 姓名: 学号: 指导老师: 日期: 一、设计题目: 贪吃蛇是一款经典的休闲游戏,一条蛇在密闭的围墙内,随机出现一个食物,通过控制方向键操作小蛇不停的朝着食物前进,直到吃掉食物。每吃一个食物,小蛇都会长长一截,随之难度增大;当小蛇头撞到墙或自己时,小蛇死亡。 二、功能设计: 本游戏要求实现以下几个功能: (1) 用上、下、左、右键控制游戏区蛇的运动方向,使之吃食而使身体变长; (2) 用户可以调节蛇的运行速度来选择不同的难度; (3) 游戏分多个难度级别; (4) 用户可自选颜色; (5) 记录成绩前五名的游戏玩家; (6) 增加背景音乐; (7) 提高障碍物和游戏级别。 三、程序模块图: 贪吃蛇游戏 初画控设帮 始图制置助 模模模模化 块块块块

墙蛇食移食死变成等音 体身物动物亡长绩级效 2 四、算法流程图: 开始初始化界面和蛇身 放置食物 获取按键 开始运动 碰到边界 是 否 否蛇吃到食 是 蛇长大 蛇死亡是 继续 否 结束 3 五、函数原型与功能 1.主函数:void main() 启动程序,触动其他函数。 2.初始化:void init () 设置背景框大小、蛇体初始值,随机产生食物。 3.随机产生食物:void setfoodcrd()

设置食物生成坐标,0表示食物被吃。 4.画食物:void showfood() 用矩形框来画食物 5.画蛇:void showsnake() 根据蛇的坐标和节数,循环用矩形框来画蛇。 6.蛇移动:void snakemove() 根据按键,重设坐标 7.改变蛇的方向:void changeskdir() 响应用户的运动方向 8.判断蛇是否死亡:void judgeslod 判断蛇是否碰到自己或墙。 9.判断蛇是否吃到食物:void judgefood() 判断是否吃到食物,吃食后变0,蛇增长一节。 10.结束游戏:void gameover() 结束话语,并执行下一步。 六、基本代码 #include #include #include #pragma comment(lib,"Winmm.lib") #include "MyTimer.h" #define SIZEMAX 100 /*蛇最大长度*/ #define SPEED 100 /*初始速度*/ #define len 20 /*蛇宽度*/ #define lm 10 /*蛇每次移动距离*/ #define initlen 600 /*初始化窗口正方形的长度*/ #define Min_snakelen 2 /*蛇的最小长度*/ typedef struct { int x,y; }DIR; int snakelen=Min_snakelen; /*蛇的长度*/

贪吃蛇小游戏实验报告[

软件设计报告 设计题目:贪吃蛇 学院:华北电力大学科技学院 专业班级:软件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语言中所学的知识,合理的运用资料,实现理论与实际相结合。 (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();//图形驱动

贪吃蛇游戏报告书

青岛大学软件技术学院交互式游戏设计实践实训题目名称贪吃蛇 姓名 专业数字媒体艺术 班级 10级3班 指导教师解新峰 2014 年 1 月 14 日 1

目录 第一章引言 (3) 1.1选题背景 (3) 1.2项目意义 (3) 1.3开发技术 (3) 1.3.1 Java语言简介 (3) 1.3.3 Eclipse开发环境 (3) 第二章贪吃蛇游戏概述 (5) 2.1游戏分析 (5) 2.1.1 游戏规则 (5) 2.1.2 游戏玩法 (5) 2.2算法分析 (5) 2.3架构分析 (5) 第三章贪吃蛇游戏的详细设计 (7) 3.1游戏总体结构设计 (7) 3.2 游戏运行图 (10) 小结 (13) 参考文献 (13)

第一章引言 1.1选题背景 贪吃蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着我,它的制作方法对于以前的我而言都是很神秘的。我希望通过自己的所学知识把它剖析开来,真真正正的了解它的本质和精髓。虽然我的编程能力不是很强,但是我有信心,在这次学习中我将从实践和实际的项目中提高自己的编程能力。因此我选定了这个题目。 1.2项目意义 游戏在设计方面应该本着方便、实用及娱乐性高的宗旨,在对界面进行设计的过程中,应始终坚持清晰明了,在性能方面应能够实现效率高,不易出错等优点。游戏主界面应该力求美观,赏心悦目。游戏控制模块应做到易懂、易操作,而且准确率高,不易出错。 1.3开发技术 1.3.1 Java语言简介 Java是一种简单易用的编程语言,它采用了一种虚拟机作为中间层来屏蔽平台差异,能够实现跨平台运行。Java支持面向对象编程,有封装、继承、多态的特性,它还支持多线程,实现多个程序流程同时执行,完成不同任务。 1.3.2 Java语言的开发工具包JDK JDK(Java Development Kit)是Java语言的开发工具包,工具包里除了包含Java语言编译器、调试器以及演示程序以外,一般还会包含Java运行环境(Java Runtime Environment,JRE)。JRE是某一平台运行Java程序的软件环境,包括虚拟机(JVM)和核心类库等。 1.3.3 Eclipse开发环境 Eclipse是一个开放源代码的、基于Java的可扩展开发平台,是目前非常流行的跨平台的自由集成开发环境(IDE)。最初主要用于Java语言开发,但是目前也有人通过插件使其作为其他编程语言(如C++、PHP)的开发工具。Eclipse本身也只是一个框架平台,但是众多插件的支持使得Eclipse拥有其他功能相对固定的IDE软件很难具有的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。 Eclipse本身核心非常小,其设计思想是“一切皆为插件”。其他功能都是基于插件的形式与Eclipse无缝结合,协同工作,如Eclipse的图形API、多国语言包等。在Eclipse

贪吃蛇实验报告

创作编号: 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

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()(游戏暂停函

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

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;

贪吃蛇游戏详细设计说明书

详细设计说明书 1 引言 1.1 编写目的 本说明书在概要设计的基础上,对贪吃蛇游戏的各模块、程序、子系统分别进行了实现层面上的要求和说明。软件开发小组的产品实现人员阅读和参考本说明进行代码的编写和测试。 本说明书预期的读者是软件开发小组的产品实现人员。 1.2 背景 说明: 系统名称:贪吃蛇游戏 任务提出者:手机策划人员 开发者:软件开发小组的产品实现人员 用户:NOKIA手机用户 运行该程序系统的计算中心:NOKIA手机芯片 1.3 定义 1.节: 一条蛇可以看成由许多正方形的“小格子”拼凑成,称作节。节是蛇身上最小的单位。 2.链表: 用来保存每一段的状态,链表的元素单位是节。且链表的第一个元素表示蛇的头部。 3.坐标系: 以左上角那点为(0,0),向右则x递增,向下则y递增。 1.4 参考资料 张海藩:《软件工程导论》第五版清华大学出版社 肖刚等:《实用软件文档写作》清华大学出版社

2 程序系统的组织结构 2.1每个模块和子程序的名称、标识符: 1Ground类: 1)private int TYPE; 2)public int[][] rocks=new int[Global.WIDTH][Global.HEIGHT]; 3)public void setGround(int type){} 根据不同的Type值将rocks的不同下标的元素设为1,其他元素为0。 4)public boolean isSnakeEatRock(Snake snake){} 判断蛇头的所在的位置在数组rocks中的值是否为1,如果是1,则表示蛇吃 到了石头,返回TRUE,否则返回FALSE。 5)public Point getPoint(){} 产生一组随机数(x,y),是食物的坐标 6)public void drawMe(Graphics g){} 将数组rocks中值为1的元素填充为石头颜色。 2Snake类: 1)public static int x,y; 2)private int oldDirection,newDirection; 用于判断newDirection和oldDirection是否为相反方向,用于选取有效方向。 3)private Point oldTail; 用于判断蛇头是否和蛇身的某个节点的坐标重合,即蛇是否吃到自己。 4)public LinkedList body=new LinkedList(); 5)public void die(){} 设置变量life=FALSE;使控制进程的条件为假,进程结束。 6)public void move(){} 实现蛇身沿着蛇头的轨迹移动 7)public void changeDirection(int direction){} 根据方向键,改变蛇头的x、y的值,即改变方向 8)public void drawMe(Graphics g){}//把属于蛇的格子画出来 9)private class SnakeDriver implements Runnable{}//蛇不停走动 3Food类: 1)public void drawMe(Graphics g){} 根据产生的一组随机坐标,在其坐标处画出食物 4Controller类: 功能:处理按键事件及鼠标点击事件,处理逻辑。根据不同的情况向Snake,Food,Ground发出不同的命令。 实现接口snakeMoved,蛇每移动一步,就要判断一次,蛇是否吃到石头、是否吃到自己,是的话就snake.die()并停止计时;不是则不进行任何操作。如果吃到食物,就要加分、重画食物、蛇身加长。 实现(N)NewGame功能、(E)Exit功能、(R)Resume功能、(L)LowLevel功能、(H)HighLevel功能、(P)Pause功能。 5GamePanel类: 功能:画出Snake,Food,Ground,并实现重新显示

贪吃蛇游戏需求分析说明书

需求分析说明书 一.引言 1.编写目的 通过与多位软件使用者进行全面深入地探讨和分析,并完成《贪吃蛇游戏》市场的前期调查后,提出了这份软件需求分析说明书。 此需求分析说明书对《贪吃蛇游戏》软件做了全面细致的用户需求分析,明确所要开发的游戏软件应具有的功能、性能与界面,使系统分析人员及软件开发人员能清楚地了解用户的需求,并在此基础上进一步提出概要设计说明书和完成后续设计与开发工作。 本说明书的预期读者为客户、业务或需求分析人员、测试人员、用户文档编写者、项目管理人员。 2. 背景 随着科技的发展,现在手机的功能已不仅仅是简单的打接电话、收发短信了。更多的手机用户希望在工作、学习之余通过方便灵巧可随身携带的仪器休闲娱乐。因此,为了迎合众多用户的需求并适应现在手机的规模,我们开发出一套适合各阶层人士的具有很强的娱乐性和交互性的贪吃蛇小游戏。 贪吃蛇,之所以取这样的名字,去用意还是很明显的.贪吃蛇其实并不贪,它是人不断向前追求的象征.就像现代的人只有不断努力向前才能得到自己想要的。而食物也是随机出现的,就像现在社会存在的机会,而我们只有找好自己的目标才能成功。 虽然现在市面上存在着各种各样的游戏版本,可是贪吃蛇其市场还是相当大的。因为它的特殊在于它能吸引人更深入,爱不释手.随着游戏速度不断加快,其刺激性也更强。可以说该游戏的优势在于它的简单易行,不论是手机,还是小游戏机,都能很快顺利的运行。对于在外忙碌的人,不可能花费大量时间在娱乐上,大型游戏是行不通的。这样的小游戏刚好迎合了他们的需求。 3. 定义 需求:用户解决问题或达到目标所需的条件或功能;系统或系统部件要满足合同、标准,规范或其它正式规定文档所需具有的条件或权能。而且其很强的交互性及简单易行性,可以让人在很短时间内熟悉它的游戏规则,不论用户文化水平如何,都会很轻松的学会使用它。 4. 参考资料 张海藩:《软件工程导论》清华大学出版社 2008年2月第五版

贪吃蛇暑期实训总结报告

实训报告 实训题目:贪吃蛇游戏程序设计 院系:计算机科学与工程学院 专业:网络工程 班级:网络工程131 学号:090213128 姓名: 指导教师:肖微 实训地点:九章楼N6-101 开课时间:2013 至2014学年第 2 学期常熟理工学院计算机科学与工程学院制

学生姓名周豪实训报告成绩 评语: 指导教师(签名) 年月日说明:指导教师评分后,实训报告交院办公室保存。

目录 1实训的目的和任务 (5) 实训的目的: (5) 实训的任务: (6) 2.开发环境(软件开发环境和硬件开发环境) (6) 3.界面设计 (6) 3.1设计思路 (6) 3.2实现原理 (7) 4.算法设计 (9) 5.程序流程 (30) 6.总结 (31) 1实训的目的和任务 实训的目的: 1.巩固和加深对C语言课程基本知识的理解和掌握 2.掌握C语言编程和程序调试的基本技能 3.利用C语言进行基本的程序设计 4.掌握书写程序设计说明文档的能力 5.提高运用C语言解决实际问题的能力 6. 进一步理解和运用结构化程设计的思想和方法

7.独立完成一个游戏的设计应用 实训的任务: 1.分析实训题目要求 2.了解实训要求内容 3.掌握实训要求代码 4.编写程序代码,调试程序使其能正确运行 5.设计完成的软件要便于操作和使用 6.完成课程设计报告,并进行答辩 2.开发环境(软件开发环境和硬件开发环境) 1、一台能正常运行的计算机电脑 2、Windows XP 3、Microsoft Visual Studio2010 4、Microsoft Word2010 3.界面设计 3.1设计思路: 大家在运行这个游戏的时候,开始界面能够出现一只蛇,这样的图案比较符合游戏的内容。首先是蛇图形的绘画,我们可以运用搜狗输入法轻松的绘出蛇的大致图像,但是值得大家注意的是搜狗直接生成的图形,在里面

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

电气与信息工程学院 单片机课程设计报告 设计题目:基于单片机的贪吃蛇设计 2016 年11月22 日 一、设计任务及要求 基本功能: 制作一个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左右,电压过大将会彻底损坏。

贪吃蛇详细设计说明书

贪吃蛇_详细设计说明书 编写人: 完成日期:X年X月X日 文档名称:详细设计规格说明书 1

项目名称:贪吃蛇游戏 项目负责人:XXX XXX 编写 TEST __X___年_X_月___X_日 校对所有小组成员 __2015___年___6__月___13_日 审核所有小组成员 ____2015_年___6__月___13_日 批准 XXX _2015____年___6__月___14__日 开发单位 __XXX班_____ 组员: XXX XXX

目录 1.引言 (2) 1.1编写目的 (2) 1.2背景 (2) 1.3定义 (2) 1.4参考资料 (3) 2.系统的结构 (4) 2.1 每个模块的名称、标识符如下所示: (4) 2.2模块之间的关系: (5) 3.模块1(标识符)设计说明 (6) 3.1模块描述 (6) 3.2功能 (7) 3.3性能 (7) 3.4输入项 (8) 3.5输出项 (8) 3.6设计方法(算法) (8) 3.7流程逻辑 (11) 3.8接口 (12) 3.9存储分配 (12) 3.10注释设计 (12) 3.11限制条件 (12) 3.12测试计划 (13)

3.13尚未解决的问题 (13) 1.引言 1.1编写目的 本说明书在概要设计的基础上,对贪吃蛇游戏的各模块、程序、子系统分别进行了实现层面上的要求和说明。软件开发小组的产品实现人员阅读和参考本说明进行代码的编写和测试。 本说明书预期的读者是软件开发小组的产品实现人员。 1.2背景 说明: 系统名称:贪吃蛇游戏 任务提出者:手机策划人员 开发者:软件开发小组的产品实现人员 用户:Android操作系统手机用户 运行该程序系统的计算中心:Android操作系统手机芯片 1.3定义 1. 节:一条蛇可以看成由许多正方形的“小格子”拼凑成,称

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

软件设计与体系架构实验报告 学院:计算机科学与技术学院 学号: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)

C语言课程设计报告——贪吃蛇源程序

C 语言课程设计 (小游戏贪吃蛇的程序设计报告)

设计人: 班级: 201 年月号

目录一:概述 1:研究背景及意义 2:设计的任务与需要知识点 3:具体完成设计内容 二:需求分析 1:功能需求 2:操作方法 三:总体设计 1:模块划分 2:数据结构设计 四:详细设计 1:主空摸块设计 2:绘制游戏界面 3:游戏的具体过程 4:游戏的结束处理 5:显示排行榜信息模块 五:程序的调试与测试 1:动画与音乐同步 2:蛇的运行 3:终止程序 六:结论 七::结束语 八:程序清单 九:参考文献

一.概述 本课程设计以软件工程方法为指导,采用了结构化,模块化的程序设计方法,以C 语言技术为基础,使用Turbo C++3.0为主要开发工具,对贪吃蛇游戏进行了需求分析,总体设计,详细设计,最终完成系统的实现与测试。 1.1 研究的背景及意义 随着社会的发展,人们生活的节奏日益加快,越来越多的人加入了全球化的世界。人们不再拘泥与一小块天地,加班,出差成了现代人不可避免的公务。而此时一款可以随时随地娱乐的游戏成为了人们的需要。此次课程设计完成的贪吃蛇小游戏,正是为了满足上述需求而设计出来的。贪吃蛇游戏虽小,却设计诸多的知识点。通过开发贪吃蛇游戏系统,可使读者初步了解使用软件工程的和那个发,技术和工具开发软件的过程,进一步掌握结构化,模块化的程序设计方法和步骤,进一步掌握总体数据结构设计,模块划分方法,掌握局部变量,全局变量,结构体,共用体,数组,指针,文件等数据结构的使用方法,掌握图形,声音,随机数等多种库函数的使用方法,学习动画,音乐,窗口,菜单,键盘等多项编程技术,进一步学会软件调试,测试,组装等软件测试方法,为后续课程的学习和将来实际软件开发打下坚实的基础。 1.2 设计的任务和需要的知识点 1.2.1 课程设计主要完成的任务 1). 通过编写“贪吃蛇游戏”程序,掌握结构化,模块块化程序设计的思想,培养解决实际问题的能力。 2) 有同步播放动画,声音效果。 3) 设计好数组元素与蛇,食物的对应关系。 4) 随机产生食物。 5) 有分数统计,排行榜,分数存储等功能。 通过此次课程设计,希望使读者能更深入的理解和掌握课程教学中的基本概念,培养读者应用基本技术解决实际问题的能力,从而进一步提高分析问题和解决问题的能力。 1.2.2需要掌握和运用的知识点 1.2.3本次课程设计需要掌握和运用如下的知识点: 1) 数组的应用。 2) 全局变量的使用。 3) 按键处理。 4)结构体的应用。 5)图形,音乐和动画的有关知识。 6)随即函数的使用。 7)文件的基本出操作。

贪吃蛇游戏的说明

贪吃蛇游戏说明 一、游戏简介 主要功能: (1)通过游戏设置的等级设置进入游戏,在游戏过程中可以选择速度快慢程度来选择游戏的难易度。 (2)可以选择有边界阻碍和无边界阻碍的。 界面功能: (3)游戏的的窗口菜单是自定义的,简单设计了几个菜单项,方便选择开始游戏,离开游戏,速度快慢,有无边界。 (4)在游戏界面的右下方有一个显示当前的得分情况,方便便用户来了解自己的战绩。 操作功能: 其中游戏的主操作键是↓↑→←。不仅可以通过菜单来进行操作,还可以通过快捷键开操作(crtrl+N --- New Game,ctrl+Q--- Exit) 二、实现步骤 1、设置30×40的界面和颜色,设置控制台窗口标题,然后自定 义菜单 2、设置一些主要的功能,游戏的开始,离开,难易度和有无墙 壁(代码参考) 3、设置蛇和豆子的位置大小和颜色 4、在设置时考虑蛇移动的方向,通过在蛇头没有撞到自身和边 界的前提下,判断蛇是否吃到食物,若吃到了食物,则需要

将吃到的食物作为蛇头,否则需要在原来蛇头的下一个坐标 作为蛇头,而蛇尾需要被去除,同时加分。 三、游戏截图 (无墙壁)

(有墙壁) 四、代码(其中标记的地方是参考的)function snake(cmd)

global SNAKE WALL LEVEL BOARD DIRECTION RUNNING FOOD BONUS PAUSE if ~nargin cmd = 'init'; end if ~(ischar(cmd)||isscalar(cmd)) return; end switch cmd case'init' scrsz = get(0,'ScreenSize'); f = figure('Name','Snake',... 'Numbertitle','off',... 'Menubar','none',... 'Color',[.95 .95 .95],... 'DoubleBuffer','on',... 'Position',[(scrsz(3)-400)/2 (scrsz(4)-300)/2 400 300],... 'Colormap',[.1 .71 0;.3 .4 .4;0 0 0;1 1 0],... 'CloseRequestFcn',sprintf('%s(''Stop'');closereq;',mfilename),... 'KeyPressFcn',sprintf('%s(double(get(gcbf,''Currentcharacter'')))',mf ilename)); FileMenu = uimenu(f,'Label','&File'); uimenu(FileMenu,'Label','New Game','Accelerator','N','Callback',sprintf('%s(''NewGame'')',mfilenam e)); uimenu(FileMenu,'Label','Exit','Accelerator','Q','Separator','on','Ca llback',sprintf('%s(''Stop'');closereq',mfilename)); LevelMenu = uimenu(f,'Label','&Level'); uimenu(LevelMenu,'Label','1','Callback',sprintf('%s(''Level'')',mfile name)) uimenu(LevelMenu,'Label','2','Callback',sprintf('%s(''Level'')',mfile name)) uimenu(LevelMenu,'Label','3','Callback',sprintf('%s(''Level'')',mfile name)) uimenu(LevelMenu,'Label','4','Callback',sprintf('%s(''Level'')',mfile name),'checked','on')

相关主题
文本预览
相关文档 最新文档