贪吃蛇需求规格说明书
C语言贪吃蛇程序设计说明书
![C语言贪吃蛇程序设计说明书](https://img.taocdn.com/s3/m/8ba8e81b69eae009591bec04.png)
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<graphics.h> #include<conio.h>#include<stdio.h>#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; /*蛇的长度*/4int isfood=1; /*食物状态*/ int isover=0; /*游戏状态*/int ispause=1; /*暂停状态*/int ismusic=1; /*音乐播放状态*/ char dir; /*记录蛇运动的方向*/ char c='d';DIR snake[500],food; /*定义蛇节点和食物的类型*/ int speed=SPEED;void drawmap() /*画地图函数*/ {IMAGE img;char str[10];loadimage(&img,"贪吃蛇.jpg"); /*游戏界面*/putimage(0,0,&img);loadimage(&img,"7.jpg"); /*侧栏提示*/putimage(600,0,&img);sprintf(str,"%d",snakelen);setfont(30,0,"宋体");setbkmode(TRANSPARENT);outtextxy(620,10,"操作说明:");setfont(20,0,"宋体");outtextxy(615,50,"awsd控制方向键");outtextxy(615,80,"p键暂停");outtextxy(615,110,"o键继续");outtextxy(615,200,"esc键退出");outtextxy(615,140,"l键暂停音乐");outtextxy(615,170,"k键继续播放");outtextxy(730,250,str);outtextxy(620,250,"蛇当前长度");}void init() /*初始化蛇函数*/ {int i;IMAGE img;snake[0].x=9*len+lm;snake[0].y=4*len+lm;loadimage(&img,"1.jpg");putimage(snake[0].x-lm,snake[0].y-lm,&img); for(i=1;i<snakelen;i++){snake[i].x=len*(9-i)+lm;snake[i].y=len*4+lm;5loadimage(&img, "2.jpg");putimage(snake[i].x-lm,snake[i].y-lm, &img); }}void showsnake() /*画蛇函数*/ {int i;IMAGE img;loadimage(&img, "1.jpg");putimage(snake[0].x-lm,snake[0].y-lm , &img);loadimage(&img, "2.jpg");for(i=1;i<snakelen;i++)putimage(snake[i].x-lm,snake[i].y-lm, &img); }void snakemove() /*画动蛇函数*/ {int i;int mx=snake[0].x;int my=snake[0].y;switch(dir){case 'a':mx-=len;break;case 'd':mx+=len;break;case 'w':my-=len;break;case 's':my+=len;break;default:break;}for(i=snakelen-1;i>=0;i--){snake[i+1].x=snake[i].x;snake[i+1].y=snake[i].y;}snake[0].x=mx;snake[0].y=my;showsnake();}int ceshiover() /*检测游戏结束函数*/ {int i;if(snake[0].x<0||snake[0].x>30*len-lm||snake[0].y<0||snake[0].y>30*len-lm)return 1;for(i=1;i<snakelen;i++)6{if(snake[0].x==snake[i].x&&snake[0].y==snake[i].y) return 1;}return 0;}int foodinsnake() /*检测食物是否在蛇上函数*/ {for(int i=0;i<snakelen;i++)if(food.x==snake[i].x&&food.y==snake[i].y)return 1;elsereturn 0;}void showfood() /*画食物函数*/{IMAGE img;do{food.x=(rand()%30)*len+lm;food.y=(rand()%30)*len+lm;}while(foodinsnake());loadimage(&img, "3.jpg");putimage(food.x-lm,food.y-lm , &img);isfood=0;}void kmusic(){if(ismusic==0)mciSendString("pause mymusic",NULL,0,NULL);if(ismusic==1)mciSendString("resume mymusic",NULL,0,NULL);}void playbkmusic() /*播放背景音乐函数*/{mciSendString("open 超级玛丽.mp3 alias mymusic", NULL, 0, NULL); mciSendString("play mymusic repeat", NULL, 0, NULL);}void playgame() /*玩游戏函数*/{c='d'; //蛇开始向右移动isover=0;7snakelen=Min_snakelen;dir='d';IMAGE img;MyTimer t; //定义精确延时对象int T=200; // 延长时间drawmap(); //画游戏地图init(); //画小蛇初始位置while(!isover){if(ispause){snakemove();FlushBatchDraw(); //批量绘图EndBatchDraw(); //结束批量绘图if(snake[0].x==food.x&&snake[0].y==food.y){ snakelen++;isfood=1;}if(isfood)showfood();if(snakelen<35)T=200-3*snakelen;t.Sleep(T);BeginBatchDraw(); // 开始批量绘图模式,防止闪烁问题drawmap();loadimage(&img, "3.jpg"); // 加载食物图片putimage(food.x-lm,food.y-lm , &img);};//按键控制if(kbhit())c=getch();switch(c){case 'a':if(dir!='d'){dir=c;}break;case 'd':if(dir!='a'){dir=c;}break;case 'w':if(dir!='s'){8dir=c;}break;case 's':if(dir!='w'){dir=c;}break;case 27: exit(0); break; //游戏退出case 'p': ispause=0;break; //p暂停case 'o': ispause=1;break; //o继续游戏case 'l': ismusic=0;break; //l暂停音乐case 'k': ismusic=1;break; //k继续播放default:break;}kmusic(); //音乐控制播放//判断游戏结束if(ceshiover())isover=1;//判断是否重新再来HWND wnd = GetHWnd(); //获取窗口句柄if(isover)if (MessageBox(wnd, "游戏结束。
C语言贪吃蛇程序设计说明书
![C语言贪吃蛇程序设计说明书](https://img.taocdn.com/s3/m/8ba8e81b69eae009591bec04.png)
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<graphics.h> #include<conio.h>#include<stdio.h>#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; /*蛇的长度*/4int isfood=1; /*食物状态*/ int isover=0; /*游戏状态*/int ispause=1; /*暂停状态*/int ismusic=1; /*音乐播放状态*/ char dir; /*记录蛇运动的方向*/ char c='d';DIR snake[500],food; /*定义蛇节点和食物的类型*/ int speed=SPEED;void drawmap() /*画地图函数*/ {IMAGE img;char str[10];loadimage(&img,"贪吃蛇.jpg"); /*游戏界面*/putimage(0,0,&img);loadimage(&img,"7.jpg"); /*侧栏提示*/putimage(600,0,&img);sprintf(str,"%d",snakelen);setfont(30,0,"宋体");setbkmode(TRANSPARENT);outtextxy(620,10,"操作说明:");setfont(20,0,"宋体");outtextxy(615,50,"awsd控制方向键");outtextxy(615,80,"p键暂停");outtextxy(615,110,"o键继续");outtextxy(615,200,"esc键退出");outtextxy(615,140,"l键暂停音乐");outtextxy(615,170,"k键继续播放");outtextxy(730,250,str);outtextxy(620,250,"蛇当前长度");}void init() /*初始化蛇函数*/ {int i;IMAGE img;snake[0].x=9*len+lm;snake[0].y=4*len+lm;loadimage(&img,"1.jpg");putimage(snake[0].x-lm,snake[0].y-lm,&img); for(i=1;i<snakelen;i++){snake[i].x=len*(9-i)+lm;snake[i].y=len*4+lm;5loadimage(&img, "2.jpg");putimage(snake[i].x-lm,snake[i].y-lm, &img); }}void showsnake() /*画蛇函数*/ {int i;IMAGE img;loadimage(&img, "1.jpg");putimage(snake[0].x-lm,snake[0].y-lm , &img);loadimage(&img, "2.jpg");for(i=1;i<snakelen;i++)putimage(snake[i].x-lm,snake[i].y-lm, &img); }void snakemove() /*画动蛇函数*/ {int i;int mx=snake[0].x;int my=snake[0].y;switch(dir){case 'a':mx-=len;break;case 'd':mx+=len;break;case 'w':my-=len;break;case 's':my+=len;break;default:break;}for(i=snakelen-1;i>=0;i--){snake[i+1].x=snake[i].x;snake[i+1].y=snake[i].y;}snake[0].x=mx;snake[0].y=my;showsnake();}int ceshiover() /*检测游戏结束函数*/ {int i;if(snake[0].x<0||snake[0].x>30*len-lm||snake[0].y<0||snake[0].y>30*len-lm)return 1;for(i=1;i<snakelen;i++)6{if(snake[0].x==snake[i].x&&snake[0].y==snake[i].y) return 1;}return 0;}int foodinsnake() /*检测食物是否在蛇上函数*/ {for(int i=0;i<snakelen;i++)if(food.x==snake[i].x&&food.y==snake[i].y)return 1;elsereturn 0;}void showfood() /*画食物函数*/{IMAGE img;do{food.x=(rand()%30)*len+lm;food.y=(rand()%30)*len+lm;}while(foodinsnake());loadimage(&img, "3.jpg");putimage(food.x-lm,food.y-lm , &img);isfood=0;}void kmusic(){if(ismusic==0)mciSendString("pause mymusic",NULL,0,NULL);if(ismusic==1)mciSendString("resume mymusic",NULL,0,NULL);}void playbkmusic() /*播放背景音乐函数*/{mciSendString("open 超级玛丽.mp3 alias mymusic", NULL, 0, NULL); mciSendString("play mymusic repeat", NULL, 0, NULL);}void playgame() /*玩游戏函数*/{c='d'; //蛇开始向右移动isover=0;7snakelen=Min_snakelen;dir='d';IMAGE img;MyTimer t; //定义精确延时对象int T=200; // 延长时间drawmap(); //画游戏地图init(); //画小蛇初始位置while(!isover){if(ispause){snakemove();FlushBatchDraw(); //批量绘图EndBatchDraw(); //结束批量绘图if(snake[0].x==food.x&&snake[0].y==food.y){ snakelen++;isfood=1;}if(isfood)showfood();if(snakelen<35)T=200-3*snakelen;t.Sleep(T);BeginBatchDraw(); // 开始批量绘图模式,防止闪烁问题drawmap();loadimage(&img, "3.jpg"); // 加载食物图片putimage(food.x-lm,food.y-lm , &img);};//按键控制if(kbhit())c=getch();switch(c){case 'a':if(dir!='d'){dir=c;}break;case 'd':if(dir!='a'){dir=c;}break;case 'w':if(dir!='s'){8dir=c;}break;case 's':if(dir!='w'){dir=c;}break;case 27: exit(0); break; //游戏退出case 'p': ispause=0;break; //p暂停case 'o': ispause=1;break; //o继续游戏case 'l': ismusic=0;break; //l暂停音乐case 'k': ismusic=1;break; //k继续播放default:break;}kmusic(); //音乐控制播放//判断游戏结束if(ceshiover())isover=1;//判断是否重新再来HWND wnd = GetHWnd(); //获取窗口句柄if(isover)if (MessageBox(wnd, "游戏结束。
(完整版)mfc贪吃蛇
![(完整版)mfc贪吃蛇](https://img.taocdn.com/s3/m/215cb2cf336c1eb91a375db9.png)
宿迁学院Windows程序设计课程考核报告班级: 11计本2班学号:姓名:得分:2013年12月20 日1. 设计目的及要求 ............................................................................. - 3 -1.1设计目的及问题描述 .............................................................. - 3 -1.2设计要求 .................................................................................. - 3 -1.3软件、硬件环境 ...................................................................... - 3 -2. 课程设计步骤 ................................................................................. - 3 -3. 课程设计内容 ................................................................................. - 4 -3.1 概要设计 ................................................................................. - 4 -3.1.1 程序总体框架描述 ....................................................... - 4 -3.1.2程序常用类声明和变量的声明 .................................... - 4 -3.2主要技术 .................................................................................. - 5 -3.3系统设计结果(界面截图、操作流程) ............................ - 5 -4.设计总结.......................................................................................... - 24 -4.1遇到的问题及如何解决 ........................................................ - 24 -4.2体会......................................................................................... - 24 -1.设计目的及要求1.1设计目的及问题描述贪吃蛇游戏经典,版本多样,娱乐性高,适合在闲暇时放松心神。
_贪吃蛇游戏_说明书
![_贪吃蛇游戏_说明书](https://img.taocdn.com/s3/m/2ab9cf2cccbff121dd368322.png)
湖南工业大学课程设计任务书2012 — 2013 学年第一学期计算机与通信学院学院(系、部)通信工程专业班级姓名学号课程名称:面向对象程序设计设计题目:贪吃蛇游戏完成期限:自2013 年 1 月7 日至2013 年 1 月13 日共 1 周内容及任务一、设计的主要技术参数(1) 游戏中共有贪吃蛇的长度和走向;(2) 随机生成食物(3) 通过响应定时器来实时更新。
二、设计任务(内容)(1) 随机生成贪吃蛇和食物;(2) 控制贪吃蛇的走动;(3) 食物消除判定,已经碰壁判定。
三、设计工作量一周进度安排起止日期工作内容1月7日-1月7日综合我们所学的知识,讨论设计的课题,制定用户需求。
1月8日-1月8日针对用户需求进行组员间的分工。
进一步熟悉自己的模块。
1月8日-1月12日一起完成开发,查找可能的漏洞,修改程序,直至完成程序。
1月13日-1月13日完成设计文档和课程设计说明书。
主要参考资料1.谭浩强.C++面向对象程序设计[M].北京:清华大学出版社,2006.2. Visual C++从入门到精通[M].北京:人民邮电出版社,2010指导教师(签字):年月日系(教研室)主任(签字):年月日面向对象程序设计设计说明书贪吃蛇游戏起止日期:2013 年1 月7 日至2013 年1 月13 日学生姓名班级学号成绩指导教师(签字)计算机与通信学院2013年1 月13日目录一、需求分析 (4)1.1、选题 (4)1.2、功能 (4)1.3、重要的MFC (4)二、概要设计 (4)2.1、设计思路 (4)2.2、程序框图 (5)三、详细设计 (6)四、调试分析 (8)五、用户使用说明 (8)六、测试结果 (9)七、附录或参考资料 (10)一、需求分析1.1、选题接到课程设计任务后,我们对曾经非常感兴趣的几款经典小游戏作了分析并筛选,然后发现使用MFC类库都可以完成这些游戏的编译,但是我们刚刚学习,还不能完全掌握MFC类的使用和复杂的算法,但是我们相信通过一个简单的贪吃蛇游戏可以让我们对MFC得到充分的锻炼。
贪吃蛇需求规格说明书
![贪吃蛇需求规格说明书](https://img.taocdn.com/s3/m/7b4cc993856a561252d36fe0.png)
贪吃蛇需求规格说明书开发小组成员:目录一.引言-----------------------------------------------------------------------------------------------31.1编写目的-----------------------------------------------------------------------------------31.2编写原则-----------------------------------------------------------------------------------31.3参考资料-----------------------------------------------------------------------------------31.4适用范围-----------------------------------------------------------------------------------3二.系统概述----------------------------------------------------------------------------------------32.1业务背景-----------------------------------------------------------------------------------32.2用户类别与特征-------------------------------------------------------------------------32.3用户文档-----------------------------------------------------------------------------------42.4设计和实现上的限制-------------------------------------------------------------------42.5运行环境-----------------------------------------------------------------------------------4三.功能需求----------------------------------------------------------------------------------------43.1系统用例图---------------------------------------------------------------3.2项目名称-----------------------------------------------------------------------------------43.2.1功能描述----------------------------------------------------------------------------43.2.1.1进入游戏-------------------------------------------------------------------43.2.1.2玩游戏----------------------------------------------------------------------53.2.1.3游戏的退出---------------------------------------------------------------5 四.非功能需求-------------------------------------------------------------------------------------64.1系统质量要求-----------------------------------------------------------------------------64.1.1性能-----------------------------------------------------------------------------------64.1.2可靠性-------------------------------------------------------------------------------64.1.3可维护性----------------------------------------------------------------------------64.1.4可用性-------------------------------------------------------------------------------74.1.5可移植性----------------------------------------------------------------------------74.1.6可测试性----------------------------------------------------------------------------74.1.7易用性-------------------------------------------------------------------------------74.2安全性需求---------------------------------------------------------------4.3环境需求-----------------------------------------------------------------------------------74.4保密性和私密性的需求---------------------------------------------------------------74.5其他需求----------------------------------------------------------------------------------7五.外部接口需求---------------------------------------------------------------------------------85.1用户界面----------------------------------------------------------------------------------85.1.1界面布局---------------------------------------------------------------------------85.1.2界面风格---------------------------------------------------------------------------85.1.3界面规范---------------------------------------------------------------------------85.2硬件接口----------------------------------------------------------------------------------95.3软件接口----------------------------------------------------------------------------------9一、引言软件需求规格说明书记录系统或系统一部分完整软件需求。
Qt课程设计--贪吃蛇游戏设计
![Qt课程设计--贪吃蛇游戏设计](https://img.taocdn.com/s3/m/a2cbf1e2f605cc1755270722192e453610665b66.png)
Qt课程设计--贪吃蛇游戏设计Qt课程设计说明书题目: 贪吃蛇游戏设计目录功能需求 (3)界面要求 (3)其他要求 (4)设计分析 (4)操作方法及运行结果 (4)设计体会 (6)参考文献 (6)功能需求利用Qt creator制作一个贪吃蛇的小游戏,要求:(1)在窗口上显示菜单栏,帮助栏和工具栏(2)游戏含有正常模式、死亡模式、情侣模式三种(3)能够记录游戏时间,游戏成绩,游戏排行(4)能够显示英雄榜(5)能够显示帮助提示界面要求贪吃蛇游戏的游戏界面包括背景图片、工具栏图片、蛇移动范围的绘制等等。
其中贪吃蛇的身体用什么方法绘制,才可以使得其在游戏过程中可以实现“吃”的功能是很重要的。
因此在游戏界面的初始绘制时就必须考虑到游戏时可能遇到的问题。
导入位图以及菜单工具条后,游戏未开始前(win7系统下)的界面显示如图2-1所示其他要求能够注意各种异常处理,注重提高程序运行效率设计分析根据分析,贪吃蛇这个程序一共要实现如下几个功能,包括游戏方面正常模式、死亡模式以及情侣模式,游戏帮助提示与英雄榜的显示等等。
具体的程序结构如下操作方法及运行结果根据分析后的贪吃蛇结构设计出相应的贪吃蛇流程。
贪吃蛇的内容主要包括:普通模式用上下左右控制方向,随机出现食物,但是如果碰到边框,障碍物和自己都会挂掉;死亡模式用上下左右控制方向,小蛇获得了穿越边框的能力,但是得了恶性长胖病,可以通过吃减肥药来偏强控制,但是不要碰到自己排除的废物;情侣模式玩家1用上下左右控制方向,用P、O、I(或者是1、2、0)来发射子弹,可以后退,不能穿越边框玩家2用W,A,S,D来控制方向,空格键释放陷阱子弹和陷阱都需要food才能补充;英雄榜能够记录正常模式和死亡模式游戏时间,游戏成绩,游戏排行,玩家姓名;按下帮助键可获得游戏帮助说明。
设计体会我学会了用Qt编写贪吃蛇游戏,能熟练地掌握Qt语言,通过每章每节的学习让我知道了Qt的重要性,学习Qt能让我们深刻的知道在以后的工作中能用到,还有让我知道学习的重要意义,通过对Qt的学习能让我们解决很多的实际东西,QT能让我们锻炼自己的编程能力,还能处理许多别的语言处理不了的东西,我知道了学习Qt不仅能提高自己的认识,还巩固了对原来学过的其他语言的学习。
单片机课程设计贪吃蛇说明书
![单片机课程设计贪吃蛇说明书](https://img.taocdn.com/s3/m/a4ad059167ec102de3bd8990.png)
单片机课程实训作品说明书姓名:李兆基完成时间:2016年7月3日一、 作品说明介绍1. 作品名称:贪吃蛇简易游戏机2. 作品实现功能:a) 按上、下、左、右键控制蛇身改变方向;b) 蛇头与食物碰撞时“吃掉”食物,使蛇身变长; c) 复位键使游戏重新开始;d) 暂停/继续键可以暂停、继续游戏3. 选择目的:巩固单片机课程所学知识,真正做到学有所用二、 作品操作介绍1. 作品外观图① ②点阵屏:显示地图、蛇以及食物③STC12C5A60S2单片机:控制整个作品,可以烧录不同的程序 ④微动开关1:向上的按键,用于改变蛇的方向 ⑤微动开关2:向下的按键,用于改变蛇的方向 ⑥微动开关3:向左的按键,用于改变蛇的方向①②③④⑤⑥⑦ ⑧ ⑨⑩ ⑪⑫⑬⑭⑮⑦微动开关4:向右的按键,用于改变蛇的方向⑧微动开关5:复位按键,按下后游戏复位,重新开始⑨微动开关6:暂停/继续按键,控制游戏暂停/继续⑩自锁开关:实现整体的电源总控制(断负)⑪晶振、电容:用于单片机起振,单片机的最小时钟电路⑫排针:用于连接电源正负极以及RXD和TXD⑬电源指示灯:通电时点亮⑭8个1KΩ电阻:限制电流大小⑮10个0Ω电阻:做跳线用2.作品功能介绍及操作说明a)给游戏机上电①将电源正极接在排针处标有VCC的位置②将电源负极接在排针处标有GND的位置③按下自锁开关完成上电b)让贪吃蛇改变方向①按向上键:蛇身向上②按向下键:蛇身向下③按向左键:蛇身向左④按向右键:蛇身向右c)游戏暂停/继续、复位①按暂停/继续键:游戏暂停/继续②按复位键:游戏复位,重新开使三、作品制作说明1.电路原理图2.元件名称型号数量(个)单片机STC12C5A60S2 1单片机底座40引脚 1点阵屏8*8 2微动开关5*5 6晶振12MHz 1电容30pf 2电阻1KΩ8电阻10KΩ 1电阻0Ω10自锁开关3*3 1排针直针4(根)LED 红色 1杜邦线1组4(根)单面挂锡玻纤板1洞洞板10CM*14CM电池盒 1 3.PCBa)正面图(见附录1)b)F5图(见附录2)c)F6图(见附录3)四、产品控制顺序/*******************************************名称:贪吃蛇简易游戏机制作人:李兆基制作时间:2016.6.28修改时间:2016.7.1 (加入吃食物蛇身变长功能)2016.7.3 (处理程序兼容细节)*******************************************/#include<stc12c5a60s2.h>#include<stdlib.h>unsigned char map[16]; //定义一个MAP地图unsigned char line; //列unsigned char snake[45][2]; //定义蛇的大小unsigned char game_reset; //游戏复位unsigned char foodx,foody; //食物的位置sbit Key_left=P3^2; //左sbit Key_up=P3^3; //上sbit Key_down=P3^4; //下sbit Key_right=P3^5; //右sbit Key_start=P3^7; //开始/暂停sbit Key_reset=P3^6; //复位/****************按键所对应的位置***************/void CreateFood(){unsigned char i;i=0;RESET:foodx=rand()%6+1;//rand()函数随即产生食物的横坐标(1~6)foody=rand()%14+1;//rand()函数随即产生食物的纵坐标(1~14)while(!(snake[i][0]==snake[i][1]&&snake[i][0]==44)) //找蛇尾(遍历蛇){if(snake[i][0]==foodx&&snake[i][1]==foody)goto RESET;//如果产生的食物在蛇的节点上,则重新生成食物i++;}}/*********构造食物********/void ClearMap(){unsigned char i;for(i=0;i<16;i++)map[i]=0x81; //清空地图map[0]=map[15]=0xff; //构造墙}/**********初始化地图**********/void ClearSnake(){unsigned char i;for(i=0;i<45;i++)snake[i][0]=snake[i][1]=0x00; //清空蛇节点snake[0][0]=5;snake[0][1]=10; //构造蛇头snake[1][0]=5;snake[1][1]=11;snake[2][0]=5;snake[2][1]=12; //构造蛇身snake[3][0]=44;snake[3][1]=44; //构造蛇尾}/************初始化蛇节点************/void SnakeToMap(void){unsigned int i;ClearMap();i=0x80>>foodx; //获取食物的横坐标map[foody]|=i; //将其横坐标和纵坐标对应的点显示在地图上i=0;while(!(snake[i][0]==snake[i][1]&&snake[i][0]==44)){map[snake[i][1]]|=0x80>>snake[i][0];i++;} //将蛇节点全部显示在地图上}/**********************将蛇以及食物显示在地图上***********************/void Move(unsigned char fx)//fx参数(0为上,1为下,2为左,3右){unsigned char i,snakewx,snakewy;snakewx=snakewy=i=0;while(!(snake[i][0]==snake[i][1]&&snake[i][0]==44))i++;snakewx=snake[i-1][0];snakewy=snake[i-1][1]; //扫描蛇节点并且得到尾巴的位置(横纵坐标)switch(fx){case 0:while(!(snake[i][0]==snake[i][1]&&snake[i][0]==44))i++; //扫描蛇节点得到节点数for(i--;i>0;i--){snake[i][0]=snake[i-1][0];snake[i][1]=snake[i-1][1];} //后节点朝着前节点方向移动snake[0][0]--; //移动蛇头break;case 1:while(!(snake[i][0]==snake[i][1]&&snake[i][0]==44))i++; //扫描蛇节点得到节点数for(i--;i>0;i--){snake[i][0]=snake[i-1][0];snake[i][1]=snake[i-1][1]; //后节点朝着前节点方向移动}snake[0][0]++; //移动蛇头break;case 2:while(!(snake[i][0]==snake[i][1]&&snake[i][0]==44))i++;for(i--;i>0;i--){snake[i][0]=snake[i-1][0];snake[i][1]=snake[i-1][1];}snake[0][1]--;break;case 3:while(!(snake[i][0]==snake[i][1]&&snake[i][0]==44))i++;for(i--;i>0;i--){snake[i][0]=snake[i-1][0];snake[i][1]=snake[i-1][1];}snake[0][1]++;break;}if(snake[0][0]==foodx&&snake[0][1]==foody) //蛇吃食物(蛇头的坐标与食物坐标重合){while(!(snake[i][0]==snake[i][1]&&snake[i][0]==44))i++;snake[i][0]=snakewx;snake[i][1]=snakewy;snake[i+1][0]=snake[i+1][1]=44; //重新添加(定义)蛇尾CreateFood(); //创建食物}}/************************蛇的移动(按键的方向改变)************************/void delay(unsigned int i){unsigned int j;while(i--)for(j=600;j>0;j--);}/*********************延时函数(接近与1毫秒)*********************/void donghua(void){unsigned int i;for(i=0;i<16;i++){if(i<8){P2=0xff;P1=~(0x80>>i);}else{P1=0xff; //第一块点阵屏亮P2=~(0x80>>(i-8));}P0=0xff;delay(20);}P1=P2=P0=0x00;for(i=0;i<16;i++){if(i<8){P1=0xff;P2=~(0x01<<i);}else{P2=0xff;P1=~(0x01<<(i-8));} //第二块点阵屏亮P0=0xff;delay(20);}}/********开机动画********/bit IsOver(){unsigned char i;game_reset=0;i=0;while(!(snake[i][0]==snake[i][1]&&snake[i][0]==44))i++;for(i--;i>0;i--){if(snake[0][0]==snake[i][0]&&snake[0][1]==snake[i][1]){game_reset=1;break;} //遍历蛇节点是否蛇头和蛇身重合}if(snake[0][0]==0||snake[0][0]==7||snake[0][1]==0||snake[0][1]==15) //判断蛇头是否撞墙game_reset=1;return game_reset;}/*********************判断蛇的状态(死亡条件)**********************/void init(void){P0M0=0xff;P0M1=0x00;//PO为强推模式TMOD=0X01;//设定时/计数器方式EA=1; //开启中断ET0=1; //开启定时计数器0TH0=(65536-1000)/256;TL0=(65536-1000)%256; //设置计数初值为1毫秒TR0=1; //开启定时/计数软开关ClearMap(); //初始化地图ClearSnake(); //初始化蛇}/**********初始化函数**********/void main(void){unsigned char fx,i,newfx; //定义方向,新方向,以及变量iunsigned char isStart; //开始/暂停变量newfx=fx=2; //初始化方向donghua();delay(100);i=0;isStart=1;init();CreateFood();while(1){for(i=0;i<20;i++){delay(10);if(fx!=1&&!Key_up&&isStart)//蛇向下移动则向上按键无效{newfx=0;}if(fx!=0&&!Key_down&&isStart) //蛇向上移动则向下按键无效{newfx=1;}if(fx!=3&&!Key_left&&isStart) //蛇向左移动则向右按键无效{newfx=2;}if(fx!=2&&!Key_right&&isStart) //蛇向右移动则向左按键无效{newfx=3;} //按键改变newfx,默认向fx移动if(!Key_start){delay(20);if(!Key_start)if(isStart==1)isStart=0;else if(isStart==0)isStart=1; //暂停/继续改变isStart状态while(!Key_start);delay(20);}if(!Key_reset){delay(20);if(!Key_reset)game_reset=1;while(!Key_reset);delay(20);if(game_reset)return; //复位}if(!isStart)i--; //暂停状态时所执行的死循环delay(10);}if(fx==0&&newfx==1||fx==2&&newfx==3)newfx=fx;elsefx=newfx; //方向冲突时按新方向移动,避免按的太快Move(fx); //移动while(IsOver()){if(!Key_reset){delay(20);if(!Key_reset)game_reset=1;while(!Key_reset);delay(20);if(game_reset)return;}if(!isStart)i--;delay(10);} //当蛇死亡只能激活复位按钮SnakeToMap(); //将蛇显示在地图}}/******主函数******/void display(void) interrupt 1{TR0=0; //关闭软开关TH0=(65536-1000)/256;TL0=(65536-1000)%256; //计数赋值if(line<8){P2=0xff;P1=~(0x80>>line); //选列}else{P1=0xff;P2=~(0x80>>(line-8)); //选列} //两块点阵屏的对接P0=map[line]; //送行line++;if(line==16)line=0;TR0=1; //开启软开关}/********显示函数********/。
贪吃蛇开发与设计
![贪吃蛇开发与设计](https://img.taocdn.com/s3/m/57bf47fa0242a8956bece493.png)
贪吃蛇游戏的开发与设计一、需求分析1.功能需求“贪吃蛇”游戏的总体需求就是能够正常玩游戏并能够观察到自己的得分。
具体的功能性需求如下:(1)玩家只能在屏幕上固定的区域内玩游戏,区域周围用墙壁状的图形来标识;(2)蛇的身体由一个个小方块来构成,蛇头由两个小方块构成;(3)食物由一个方块构成,食物要随机出现在游戏区域(4)玩家可用键盘上的上、下、左、右四个方向键来控制蛇的运行方向;(5)当蛇向前移动过程中,碰上了食物,则蛇身增长一节,当前食物消失,并且在令一处游戏区内随机出现一个食物;(6)蛇每增长一节,则得分相应增加;(7)得分实时显示在屏幕顶部(游戏区域边框处的某个位置);(8)蛇在移动的过程中,蛇头不能撞上蛇身,蛇头也不能撞上周围墙壁,若这两种情形发生,则认为蛇已死,在游戏区域内显示“GAME OVER”信息,并在顶部显示所得分数,游戏结束;(9)在游戏过程中,玩家可随时按“ESC”键结束游戏;2.非功能需求(1)界面友好,图形界面,游戏开始前有游戏的简单使用说明,方便玩家使用;(2)具有较好的容错能力,玩家在游戏过程中,除了规定的按键外,其他按键均忽略,不予处理;(3)发布游戏时,将图形驱动加载到程序中,使系统具有良好的可扩展性和平台适应性,可在任何PC机上运行。
二、系统设计1.设计思路程序关键在于表示蛇的图形及蛇的移动。
用一个小矩形块表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用两节表示。
移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体虽蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这是,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的身体,所以将蛇的最后一节用背景色覆盖。
食物的出现与消失也是画矩形块和覆盖矩形块。
贪吃蛇项目说明书
![贪吃蛇项目说明书](https://img.taocdn.com/s3/m/33442efa81c758f5f61f67a4.png)
项目说明书项目名称:和氏蛇开发人员:沙夫都开发日期:2015.06.13目录一:引言 (1)1:编写目的 (1)2:开发背景 (1)3:定义 (3)4:参考文献 (3)二:任务概述1:目标 (3)2:用户的特点 (3)三:需求规定1.对功能的规定 (4)2.对性能的规定 (4)3.输入输出要求 (4)四:运行环境 (4)1.设备 (5)2.支持软件 (5)3.接口 (5)4.控制 (5)五:项目详细设计方案1.项目涉及知识点 (5)2.项目大体流程与思想 (5)3.控件涉及模块六:实现项目的具体方案 (7)1.第一部分 (7)2.第二部分 (7)一:引言1:编写目的此项目说明书对《和氏蛇游戏》软件做了细致的用户需求分析,明确游戏软件所具备的功能,性能及界面,让系统分析人员和软件开发人员皆能详细了解用户的需求,并在此基础上进一步提出概要设计说明书和后续开发工作。
本说明书指定读者为客户,业务人员,需求分析人员,测试人员,用户文档编写者以及该项目管理人员等。
2:开发背景随着科技进步,如今的通讯设备已经不是简单的接电话和收发短信了。
更多的用户希望在工作学习之余能够通过随身携带的手机进行娱乐休闲。
为了满足众多用户需求并适应现在手机的规模,我决定开发一款适合各阶层人士的具有很强娱乐性和交互性的小游戏。
即使现在市面存在着众多版本的贪吃蛇,但这款游戏的市场还是挺大的,因为它能深入吸引人,让人们爱不释手,而且该游戏简单易行,不论是手机,还是小游戏机,都能很顺利的运行,对于在这个快节奏时代中生活的人,他们没有时间花费在大型游戏这种娱乐中,因此贪吃蛇这样的小游戏就正好满足了他们的需求。
3:定义需求:用户解决问题或达到目的所需的条件或功能,系统或系统部件要满足标准要求,规范或其他正式规定文档所需具备的条件或权能,而且很强的交互性简单易行性,可以让人们在很短的时间内熟悉它的游戏规则,不论用户文化水平如何,都会很轻松的学会使用它。
贪吃蛇项目计划书文档.doc
![贪吃蛇项目计划书文档.doc](https://img.taocdn.com/s3/m/721dfb017cd184254b35351c.png)
项目组号 11密级公开湖南科技职业学院软件学院二○一四届毕业设计文档项目名称贪吃蛇游戏专业移动应用软件开发指导教师杨夏 ______ 项目组成员罗浩肖凇管萧2015年 1 月前言随着科技的发展,现在手机的功能已不仅仅是简单的打接电话、收发短信了。
更多的手机用户希望在工作、学习之余通过方便灵巧可随身携带的仪器休闲娱乐。
因此,为了迎合众多用户的需求并适应现在手机的规模,我们开发出一套适合各阶层人士的具有很强的娱乐性和交互性的贪吃蛇小游戏。
贪吃蛇,之所以取这样的名字,去用意还是很明显的.贪吃蛇其实并不贪,它是人不断向前追求的象征.就像现代的人只有不断努力向前才能得到自己想要的。
而食物也是随机出现的,就像现在社会存在的机会,而我们只有找好自己的目标才能成功。
虽然现在市面上存在着各种各样的游戏版本,可是贪吃蛇其市场还是相当大的。
因为它的特殊在于它能吸引人更深入,爱不释手.随着游戏速度不断加快,其刺激性也更强。
可以说该游戏的优势在于它的简单易行,不论是手机,还是小游戏机,都能很快顺利的运行。
对于在外忙碌的人,不可能花费大量时间在娱乐上,大型游戏是行不通的。
这样的小游戏刚好迎合了他们的需求目录第1章项目开发计划书 (1)1.1项目范围 (2)1.2客户资料 (2)1.3项目成果 (2)1.4资源需求 (2)1.5项目风险分析 (3)1.6分配任务 (3)第2章需求规格说明书 (4)2.1问题陈述: (5)2.2要达到的目标: (5)2.3具体的分析: (5)第1章项目开发计划书文件修改记录编号状态日期执笔人审核人批准人1 创建文档 1.5 肖凇罗浩杨夏1.1项目范围范围:对项目的功能模块的简单描述。
项目代码:自定项目设计:对项目的功能和需求做简单分析设计,制定一套可行性较高的实施方案。
项目测试:对项目做单元测试和集成测试,针对测试报告,进一步改进,减少bug数。
1.2客户资料客户名:湖南科技职业技术学院1.3项目成果序号内容日期计划时间实际时间状态1 简单分析2015.1.5 1天1天完成2 界面设计2015.1.6 2天未完成3 系统设计2015.1.8 1天未完成4 项目中期检查2015.1.9 1天未完成5 编码开发2015.1.10 4天未完成6 测试2015.1.14 1天未完成7 部署发布2015.1.15 1天未完成8 项目答辩2015.1.16 1天未完成1.4资源需求序号资源作用占用时间当前可用状态获得途径1 Eclipse安卓编程软件项目的开发贯穿整个项目的构造阶段可用学校提供2 参考资料指导项目进行占用项目中的一些环节可用购买3 Office办公软件用于写文档、PPT等贯穿整个项目的构造阶段和走查过程可用购买1.5项目风险分析序号风险概率(%)严重性(%)措施1 时间不够(因为自己在学习,没有足够多的时间)20 80 尽量的腾出时间,可能的话,晚上也加班完成项目。
c++课程设计:贪吃蛇1
![c++课程设计:贪吃蛇1](https://img.taocdn.com/s3/m/369f6b0d482fb4daa58d4bf1.png)
c++课程设计:贪吃蛇1c++课程设计:贪吃蛇1 课程设计报告课程名称:面向对象程序设计C++ 设计题目:贪吃蛇专业:计算机科学与技术姓名:学号:指导教师:李晓虹2015 年 1 月10 日 1 需求分析 1.1系统需求操作系统:由于贪吃蛇游戏运行在windows操作系统上,所以要求计算机硬件至少能够运行windows XP及以上的版本的windows 操作系统。
软件需求:贪吃蛇游戏使用控制台以字符的方式来显示画面,控制已经集成于操作系统中,无需额外的软件支持。
硬件需求:贪吃蛇游戏需要键盘作为控制命令的输入,需要显示器作为结果输出,因此需要计算机至少具备一个包含光标键的键盘,一个显示分辨率在800*600以上的显示器。
1.2功能需求根据游戏的一般玩法,游戏应该有如图1-1所示的功能:图1-1 界面绘制:包括显示游戏初始界面,显示游戏结束画面,显示游戏运行画面三个主要绘制的界面,其中以游戏运行画面显示得最为频繁。
按键响应:应该响应两个部分的按键。
一是接受用户的按键操作来控制蛇的运动方向,包括上下左右四个光标键。
二是游戏控制按键,包括ESC退出游戏,SPACE开始游戏。
吃食判定:是对随机在游戏区域内产生的食物与蛇头重合否的判断。
如果蛇头位置与食物位置重合,则判断蛇吃到食物,其身体增长一格,继而食物消失并产生新的食物,如果没有吃掉当前已经存在的食物将不会有新的食物产生。
死亡判定:即游戏失败判定。
按照一般规则,当蛇头碰到游戏区域的边界或是自身身体那么就判定游戏失败,整个游戏将结束。
2 总体设计2.1逻辑设计控制台设置:由于客户机在默认情况下的设置是不符合程序的一些假设的,所以需要进行一些必要的设置。
为使界面显示正常,应该将控制台的编码页更换为437,这样才能使用ASCII码的扩展字符。
同时应该设置显示的字符字号,减小字号有利于显示效果。
在屏幕的频繁刷新中控制台显示会出现闪烁的情况,应该使用缓冲,一次性输出以避免闪烁的出现。
贪吃蛇小游戏需求分析
![贪吃蛇小游戏需求分析](https://img.taocdn.com/s3/m/be42e2a7e87101f69e3195a2.png)
“贪吃蛇”游戏需求分析一、需求分析:贪吃蛇游戏是一个小型益智游戏,它可以锻炼人们的反应能力,尤其是在开发人的智力方面,很受人们的欢迎。
本组该次小游戏程序设计包含二维数组、鼠标操作及图形化函数等方面知识。
具体需求概要如下:1.初始化游戏界面为600*600大小,并于坐标为(250,250)处显示游戏名称“贪吃蛇”,等待鼠标响应以开始游戏;2.在程序中用格子初始蛇长及蛇的位置,用W、S、A、D控制方向为上下左右进行游戏。
游戏过程中,每吃到一次食物用For 循环使蛇移动的speed增加,分数加10,蛇长加一格;3.蛇头咬到蛇尾or蛇头接触活动区域外围则Game over,显示累计分数,游戏结束。
二、运行环境:该课程设计在设计与实验过程中需要在windows XP系统/windows 2000以上系统中进行,程序设计要求在visual C++6.0平台中进行,完成代码的编写、编译、调试、测试等工作。
本游戏对计算机硬件和操作系统要求极低,所以在这里只是把自己的电脑硬件参数和系统参数列下:操作系统:windows xp 软件环境:安装VC++6。
三、设计概要:1.初始化模块:屏幕初始化,屏幕初始化用于显示游戏信息“贪吃蛇”;2.游戏界面模块:设计绿色的边框,边框内用黑色无框格子填充作为游戏活动区域;3.游戏运行模块:运用函数控制蛇长及食物的关系,并使用键盘控制方向;4.判断模块:头咬到尾或头接触活动区域外围,则游戏结束,显示累计分数。
四、详细设计及实现:1.流程图(函数调用关系图)#include<stdio.h> #include<stdlib.h> #include<graphics.h> #include<dos.h> #include<conio.h> #include<time.h>3.数据结构 IMAGE wal; MOUSEMSG m;typedef struct {int x[40]; int y[40];int derection;int food; int foodx; int foody; int size; } snake;4.全局变量int score=0,speed=300;5.函数声明 void init(void); void wall(void); void food(void); void gameover(void); int food1(void); void snakes(void); void draw(void);6.算法设计 main 函数: 具体实现程序功能。
手机游戏模拟器之贪吃蛇游戏项目要求书(ARM环境)
![手机游戏模拟器之贪吃蛇游戏项目要求书(ARM环境)](https://img.taocdn.com/s3/m/174468e39b89680203d825e4.png)
修改履历目录1 项目概要 (4)1.1 项目名称 (4)1.2 项目要求 (4)1.3 功能描述 (4)1.4 项目目标 (4)1.5 开发环境 (5)1.6 关键技术 (5)1.7 开发体制 (5)1.8 开发阶段 (6)2 系统结构图 (6)2.1 系统结构图 (6)2.2 游戏界面 (7)3 动作要求 (7)3.1 键盘动作 (7)3.2 游戏动作 (7)4 显示要求 (8)4.1 游戏信息界面显示 (8)4.2 游戏图形界面显示 (8)5 项目设计 (8)5.1 设计框架 (8)5.2 模块要求 (9)6 设计思路 (9)6.1 设计思路 (9)6.2 数据结构 (9)7 设计要求 (10)1项目概要1.1项目名称手机游戏模拟器之Greedy Snake1.2项目要求编写C语言程序实现Greedy Snake游戏,Greedy Snake游戏是一个深受人们喜欢的游戏:一条蛇在密闭的围墙内,在围墙内(随机)出现一个食物,通过键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被吃掉,这时蛇的身体长一节,同时计1分;接着又出现食物,等待被蛇吃掉。
食物被吃掉2次后,游戏难度增加1级,蛇移动的速度变快。
如果蛇在移动过程中,撞到墙壁或身体交叉(蛇头撞到自己的身体)游戏结束。
1.3功能描述Greedy Snake游戏功能1)按键控制上、下、左、右四个方向;2)在字符显示屏上显示游戏信息,包括游戏时间、游戏分数、游戏等级;3)在图形显示屏上显示游戏界面,包括游戏名称、游戏活动区域、蛇身及其食物;4)实现蛇铺食过程,并相应的改变游戏信息。
注1:自行设计游戏界面及游戏等级,游戏等级可以通过提高蛇移动的速度或增加墙壁的数量来实现,(要求至少通过提高蛇移动的速度来增加游戏难度)。
注2:原理图上对应的模块:LCD1:显示游戏信息。
LCD2:显示游戏界面及游戏过程。
KP1 :四个方向键。
1.4项目目标1)掌握嵌入式开发流程;2)了解嵌入式开发必备知识;3)掌握uC-OS II操作系统;4)熟练应用C语言,学习嵌入式调试手法;5)培养快速学习新的知识,并在项目中使用的能力。
贪吃蛇详细设计说明书
![贪吃蛇详细设计说明书](https://img.taocdn.com/s3/m/e1a65768be23482fb4da4cb5.png)
贪吃蛇_详细设计说明书编写人:完成日期: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. 节:一条蛇可以看成由许多正方形的“小格子”拼凑成,称作节。
节是蛇身上最小的单位。
2. 链表:用来保存每一段的状态,链表的元素单位是节。
且链表的第一个元素表示蛇的头部。
3. 坐标系:以左上角那点为(0,0),向右则x递增,向下则y递增1.4参考资料1.《软件工程导论》张海藩著清华大学出版社2.《数据库系统原理教程》刘韬著人民邮电出版社3.《C程序设计》谭浩强清华大学出版社4.《成功的软件开发》(原书第二版)(蔡愉祖、邓本江等译)机械工业出版社)5.《实用软件文档写作》肖刚著清华大学出版社6.计算器的电路设计及算法研究[D]. 邱钊. 电子科技大学,2011.7.基于Java EE的网络销售系统的设计与实现[D]. 刘丹.湖南大学,20128.需求规格说明书《》软件开发小组2015/49.用户操作手册(初稿)《》软件开发小组2015/52.系统的结构2.1 每个模块的名称、标识符如下所示:1.Ground类1) private int TYPE;2) public int[][] rocks=new int[Global.WIDTH][Global.HEIGHT];3) public void setGround(int type){} 根据不同的Type值将rocks的不同下标的元素设为1,其他元素为0。
贪吃蛇设计说明书
![贪吃蛇设计说明书](https://img.taocdn.com/s3/m/da052b165f0e7cd184253610.png)
贪吃蛇设计说明书摘要本贪吃蛇(Snake)游戏仿照以往的贪吃蛇游戏,尽管在图形界面方面存在一定的缺陷,但能够基本实现游戏的功能。
本游戏分为10个级别,玩家通过方向键对蛇的运动进行控制,如果蛇吃到食物,得分加10分,并且到一定的程度级别会上升。
此外,用户可以根据需要选择速度、界面以及播放的音乐,并且在游戏中保存了以往前三名玩家的记录,供玩家参考。
关键字:主页面,快捷键,方向键,解决方案目录第一章:ATM系统概述1.1系统的主要任务1.2 基本要求1.3 主要功能1.4 设计方法及涉及知识点1.4.1 设计方法1.4.2 涉及知识点1.5 系统开发的目的第二章:系统分析2.1分析问题和定义类,给出类的定义和联系,2.2系统开发平台的选择2.3程序设计语言的选择2.4 操作平台第三章:总体设计3.1系统的结构图(总图)3.2函数模块说明(每个函数的原型、功能说明)3.3系统运行界面截图第四章:系统评价4.1系统的特点4.2系统的缺点4.3将来可能提出的要求第五章:小结第六章:参考文献第一章 ATM系统概述1.系统的主要任务本游戏主要提供给玩家进行娱乐。
2.基本要求1.要求利用面向对象的方法以及C#程序设计语言来完成该系统的设计;2.要求在设计的过程中,建立清晰的类的层次;3.在系统中建立相关的类,每个类中都要有各自的属性和方法;4.程序运行结果正确,操作方面,界面美观,逻辑层次清楚,程序结构合理,文档规范清晰。
3.主要功能该系统具备以下功能:控制蛇运动方向:用键盘上的↑、↓、←、→控制蛇的运动方向。
当蛇向一个方向运动时,它的反向键被锁定。
不能通过连续按住某个方向键而加快蛇的运动。
若在游戏中,蛇头碰了墙或是自己的身体,则游戏结束。
蛇吃食物:蛇每吃一个食物增长一节,并且得分加10分,总共为100节。
蛇每增长10节游戏上升一个级别。
游戏结束:如果在游戏过程中,蛇头碰墙或是碰到了自己的身体,则游戏结束。
如果在游戏过程中,用户选择退出游戏,则提醒用户游戏正在进行,是否要退出。
C++贪吃蛇项目:1.1.贪吃蛇游戏需求
![C++贪吃蛇项目:1.1.贪吃蛇游戏需求](https://img.taocdn.com/s3/m/cc4dfcee0242a8956bece47d.png)
读取存档: 玩家在游戏过程中可以选择保存游戏。保存后的游戏会显示在游戏存档记录中。玩家选择游戏 存档功能后,可以选择已经存档的一条游戏记录。继续游戏。
退出: 玩家选择退出菜单后,游戏保存排行榜与游戏存档到磁盘中。然后退出整个游戏。
三、游戏规则
1.游戏启动后会显示游戏地图。并在地图中显示一条长度为 4 的蛇(身子 3+蛇头 1) 2.玩家通过键盘上的上下左右光标键控制蛇的移动方向。通过空格键保存游戏 3.系统会随机在地图中生成食物供蛇来吃。 4.蛇通过不断吃食物得分。并加长蛇的身体 5.在蛇的移动过程中蛇头不能触碰蛇身子和四周墙壁 6.如果玩家得分达到一个更高级别。系统自动增加蛇的移动速度 7.当玩家赢得游戏后,会与排行榜中的前 5 名玩家的游戏记录比较,如果排名能够进入前五名,
则更新排行榜,使当前玩家成为入榜选手。 8.记分规则:累计吃掉的食物个数即为玩家最终获得的分数。
四、游戏界面效果
1、主界面
2、开始游戏界面
3、设置难度
4、游戏排行 5、读取存档
一、游戏说明贪吃蛇游戏项目源自这是一款经典的小游戏,游戏玩家通过控制蛇头方向吃米,使得蛇变长,从而获得积分。游戏玩 家还可以查看游戏排行榜、游戏存档、设置难度等 。
二、游戏功能说明
开始游戏: 用键盘上的上下左右键控制蛇的方向,寻找吃的东西,每吃一口就能得到一定的积分,而且蛇 的身子会越吃越长,身子越长玩的难度就越大,不能碰墙,不能咬到自己的身体,更不能咬自己的 尾巴,等到了一定的分数,就能过关,然后继续玩下一关。 设置难度: 在设置功能中,玩家可以自定义游戏的起始难度。共分为 10 个级别。
(完整word版)贪吃蛇实验报告
![(完整word版)贪吃蛇实验报告](https://img.taocdn.com/s3/m/e2a9048c804d2b160a4ec050.png)
《计算机程序设计》课程设计报告课题名称贪吃蛇游戏_____________ 班级_________________学号__________________姓名______________指导教师 ______________设计时间 _________ 至_______设计地点 __________________常熟理工学院计算机科学与工程学院常熟理工学院计算机科学与工程学院目录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 Poi nt n odes[MAX_LENGTH]; // 蛇身数组,MAX_LENGTH 为最大蛇长贪吃蛇是在不断的运动的,我们研究蛇的运动可以发现这样的特点:1. 蛇头由键盘控制,键盘不操作时,保持原有方向运动;(用int direction;表示)2. 运动时,蛇身后面一节移动到前面一节的位置。
当我们用nodes[0]表示蛇头的时候,nodes[1]运动到nodes[0]处;nodes[2]运动到nodes[1]处…。
贪食蛇游戏实习报告
![贪食蛇游戏实习报告](https://img.taocdn.com/s3/m/470b443483c4bb4cf7ecd1a8.png)
贪吃蛇游戏开发一、需求分析1、该贪吃蛇设计主要具有吃食、暂停、开始以及重新开始游戏。
2、主要目标:本游戏实现贪吃蛇在制定空间去吃随机出现的方块。
游戏可以暂停,如不满意这一次游戏的成果还能重新开始游戏。
二、项目设计1、流程设计程序流程图2、游戏具体设计:(1) 蛇移动的实现蛇的移动方向主要受头结点控制,所以每次画蛇时只要把前一结点的值赋给后一节点即可。
当蛇头的移动方向向右时,y 值不变x 的值不断增加。
当蛇头的移动方向向左时,y 值不变x 的值不断减少。
当蛇头的移动方向向下时,y 值增加x 的值不变。
当蛇头的移动方向向上时,y 值减小x 的值不变。
(2) 蛇死亡的判断当蛇头的值与蛇身或与墙的值相等时,蛇即算死亡.(3)蛇到达边框时从另一端出现和传送的实现当蛇头的x 或y 值达到边框的最大或最小位置时相应的给x 或y 赋以边框的最小或最大值以实现当蛇到达边框时能从另一端出来,同理当蛇头的x,y 值等于传送点位置的值时将蛇头x,y 的值赋以被传送到位置的值,这样将实现蛇的传送功能。
三、项目实现①蛇身颜色、最大长度及速度int speed;//设置蛇的速度int maxLen;//设置蛇的最大长度②随机生成食物产生随机种子:qsrand(QTime().currentTime().msec());定义食物的坐标、形状及颜色:int mx = (qrand()%(w/20))*20;int my = (qrand()%(h/20))*20;food = new QLabel(this);food->move(mx,my);food->resize(20,20);//食物大小food->setAutoFillBackground(true);//设置食物自动填充背景颜色food->setFrameShape(QFrame::Box);//设置形状food->setFrameShadow(QFrame::Sunken);food->setPalette(QPalette(QColor(qrand()%255,qrand()%110,qrand()%255)));//改变调色板的颜色return food;③方向控制及按键事件处理方向控制:switch(d){case d_up:nheady-=speed;break;case d_down:nheady+=speed;break;case d_left:nheadx-=speed;break;case d_right:nheadx+=speed;break;}按键事件处理:void snake::keyPressEvent(QKeyEvent *f){if(f->key()==Qt::Key_Up){d=d_up;}else if(f->key()==Qt::Key_Down){d=d_down;}else if(f->key()==Qt::Key_Left){d=d_left;}else if(f->key()==Qt::Key_Right){d=d_right;}}④食物的显示与蛇吃食物食物显示:data.push_back(getFood());//将吃到的食物添加在蛇身之后timer = new QTimer();//初始化时钟timer->setInterval(400);//设置时钟周期timer->start();connect(timer,SIGNAL(timeout()),this,SLOT(move()));//传递信号food = getFood();food->show();蛇吃食物:if((nheadx==foodx)&&(nheady==foody)){data.push_back(food);food = getFood();food->show();}游戏截图1游戏截图2游戏截图3游戏截图4⑤游戏结束条件if(data.size()>=10){QMessageBox msg(this);msg.setText("game over!");msg.setStandardButtons(QMessageBox::Yes|QMessageBox::No);msg.show();if(msg.exec()==QMessageBox::Yes){this->close();}}四、总结经过10天的培训,让我进一步熟悉了Linux系统下命令的使用、文件的编写与调试,更熟悉了以前所学的C++语言,让我对我所学习的计算机更加了解喜欢,也更加希望自己能学好计算机方面的设计,去设计更多有意思的游戏。
贪吃蛇功能说明书(初稿)
![贪吃蛇功能说明书(初稿)](https://img.taocdn.com/s3/m/86e85b312e60ddccda38376baf1ffc4ffe47e29a.png)
贪吃蛇功能说明书(初稿)贪吃蛇(单词版)软件功能说明书1 开发背景“贪吃蛇”这个游戏对于80,90后的⼈来说是童年的记忆,可以将其说为是⼀个时代的经典,实现了传统贪吃蛇的游戏功能;现在⼈们对英语的重视程度越来越深,现在的⼩孩⼦在幼⼉园的时候就接受了简单的英语教学,熟记较多的英语单词对英语的学习起着巨⼤的积极作⽤,市⾯上的英语单词背记软件对于初⾼中学⽣来说易于接受,但是对于⼩学及以下的学⽣来说,这些软件的使⽤普遍率不⾼,年龄较⼩的孩⼦很难使⽤这些软件保持较长时间的集中⼒背单词。
基于这样的现实情况,【探路者团队】开发了贪吃蛇(单词版)的益智游戏软件。
该软件既可以实现贪吃蛇的游戏功能,⼜在原始功能的基础上增加单词拼写功能,使⽤户在娱乐的同时进⾏英语单词的学习。
2 开发⽬标开发本软件⼀⽅⾯是为了让80,90后⽤户重温童年的美好记忆,另⼀⽅⾯也是为了增加对英语学习兴趣较弱、意志⼒薄弱的中⼩学⽣学习英语的兴趣和动⼒,在游戏中记忆单词拼写。
本软件在使⽤过程中按照提供单词的顺序,“吃掉”软件当前提供的单词,并按照拼写顺序依次“吃”相应的字母才能完成此单词的任务,不提供⽤户跳过此单词进⾏下⼀单词的功能。
本软件只⽀持蛇头进⾏上下左右四个⽅位移动,暂不⽀持360°全⽅位移动蛇头。
3 软件⽤户本软件的应⽤⼈群主要是喜欢玩贪吃蛇,并且想通过游戏记单词的⼈群。
⽬前主要⽬标是学龄前⼉童,后期我们会对词库进⾏增加,以适合更多的⼈群。
4 软件功能描述4.1 贪吃蛇游戏基本功能4.1.1 运动功能⽤户可通过使⽤键盘上的上下左右⽅位键控制蛇的移动⽅向,蛇在控制的⽅向上进⾏直线前进。
4.1.2 吃⾷物功能当界⾯任意位置出现⾷物,⽤户使⽤⽅位键控制蛇移动到⾷物周围,当蛇头碰到⾷物时则表⽰贪吃蛇吃到此⾷物,界⾯上会在任意位置出现下⼀个⾷物,⽤户再次控制蛇去吃这⼀⾷物。
4.1.3 死亡判定功能当蛇头在前进⽅向上撞到墙壁或蛇头吃到蛇⾝时,给出死亡判定,并给出⽤户本次游戏得分,在下⼀次⽤户使⽤软件进⾏游戏时会将本次成绩加⼊到成绩排名列表中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
贪吃蛇需求规格说明书开发小组成员:目录一.引言-----------------------------------------------------------------------------------------------31.1编写目的-----------------------------------------------------------------------------------31.2编写原则-----------------------------------------------------------------------------------31.3参考资料-----------------------------------------------------------------------------------31.4适用范围-----------------------------------------------------------------------------------3二.系统概述----------------------------------------------------------------------------------------32.1业务背景-----------------------------------------------------------------------------------32.2用户类别与特征-------------------------------------------------------------------------32.3用户文档-----------------------------------------------------------------------------------42.4设计和实现上的限制-------------------------------------------------------------------42.5运行环境-----------------------------------------------------------------------------------4三.功能需求----------------------------------------------------------------------------------------43.1系统用例图--------------------------------------------------------------------------------43.2项目名称-----------------------------------------------------------------------------------43.2.1功能描述----------------------------------------------------------------------------43.2.1.1进入游戏-------------------------------------------------------------------43.2.1.2玩游戏----------------------------------------------------------------------53.2.1.3游戏的退出---------------------------------------------------------------5四.非功能需求-------------------------------------------------------------------------------------64.1系统质量要求-----------------------------------------------------------------------------64.1.1性能-----------------------------------------------------------------------------------64.1.2可靠性-------------------------------------------------------------------------------64.1.3可维护性----------------------------------------------------------------------------64.1.4可用性-------------------------------------------------------------------------------74.1.5可移植性----------------------------------------------------------------------------74.1.6可测试性----------------------------------------------------------------------------74.1.7易用性-------------------------------------------------------------------------------74.2安全性需求--------------------------------------------------------------------------------74.3环境需求-----------------------------------------------------------------------------------74.4保密性和私密性的需求---------------------------------------------------------------74.5其他需求----------------------------------------------------------------------------------7五.外部接口需求---------------------------------------------------------------------------------85.1用户界面----------------------------------------------------------------------------------85.1.1界面布局---------------------------------------------------------------------------85.1.2界面风格---------------------------------------------------------------------------85.1.3界面规范---------------------------------------------------------------------------85.2硬件接口----------------------------------------------------------------------------------95.3软件接口----------------------------------------------------------------------------------9一、引言软件需求规格说明书记录系统或系统一部分完整软件需求。
以下是我们小组(TNT)的软件需求规格说明书概述。
1.1编写目的:明白用户需求,为系统设计和编码人员提供依据,方便本小组的各种后续工作。
1.2编写原则:由于我们均属于初学者,能力尚不成熟,故尽量一切从简单、基础入手编写。
1.3参考资料:胡飞《软件工程基础》高等教育出版社杨建军《Visual C#程序设计》清华大学出版社周峰《C#典型模块开发》中国铁道出版社1.4适用范围:本文档适用本小组所用成员,其中项目组长应着重阅读本文档各个部分,其他成员选择性阅读。
二、系统概述2.1业务背景:本游戏着重于在空闲时间为人们提供一点娱乐,来达到打发时间,娱乐心情的目的。
2.2用户类别与特征2.3用户文档:本游戏不需要任何用户文档,打开即玩。
2.4设计和实现上的限制:由于本项目开发人员皆为初学者,所有在各个方面都略显不足,应该会有不少错误和漏洞。
此外,在系统方面,我们也是采用较为简单的表达,并不是十分完美。
2.5运行环境:硬件方面:Pentium级处理芯片 1兆显存的兼容显卡256色,800*600的兼容显示器。
软件方面:WIN95操作系统以上。
三、功能需求3.1系统用例图3.2 项目名称——TNT版贪吃蛇3.2.1功能描述3.2.1.1进入游戏3.2.1.2玩游戏3.2.1.3游戏的退出四、非功能需求4.1系统质量需求4.1.1性能(1)系统容量:本软件由于过于简单,在系统容量上没有太大需求。
一般电脑均可使用。
(2)响应指标:进入游戏,点击“开始“后,“蛇”在0.01秒内做出反应,开始移动;在“吃到食物“以及”上“”下“等各项命令指标是反应时间均在0.01秒内。
4.1.2可靠性:经试验,在连续运行的情况下,系统可靠性在99.9999%。
并且一旦使用本软件后,可提供人工上门服务,以解决用户的问题。
4.1.3可维护性:由于本软件采取上门服务方式。
因此在可维护性方面,可谓做到极致,用户可联系技术人员,由他们亲自来解决维护问题。
4.1.4可用性:本软件无需联网,支持脱机运行。
因此,用户可以随时随地使用本软件。
4.1.5可移植性:本软件可看成独立系统,所以实现了U盘的拷贝、粘贴等行为。
4.1.6可测试性:作为一款游戏类项目,在测试方面用了大量的时间,而这项目的克测试性非常的强,因为游戏本身也算一种测试。
4.1.7易用性:软件所占容量小,游戏本身操作简单,更人性化的界面,上手极快。
4.2安全性需求(1)网络安全:由于本软件不需要联网,所以网络安全这一问题可轻松避免。