贪吃蛇报告完整版
北邮计算机实习贪吃蛇游戏编写报告
北邮计算机实习贪吃蛇游戏编写报告计算机实习报告姓名:班级:学号:⼩班序号:指导⽼师:题⽬:贪吃蛇⼩游戏邮箱:贪吃蛇⼩游戏实验报告⼀.功能说明1.1总体功能说明该软件主要实现的是贪吃蛇的基本功能,达到简单的娱乐效果。
⾸先,完成的是贪吃蛇的移动和转弯,通过上下左右四个按键来实现蛇的移动和转弯。
其次还能实现蛇的吃⾷过程,游戏过程中会在游戏区域内随即产⽣⼀个⾷物,玩家通过控制蛇的移动使蛇的头部通过⾷物,则完成进⾷过程,⾷物消失,蛇的⾝体增长⼀截,并在此随机产⽣新的⾷物。
最后还可以完成蛇的死亡过程,即游戏结束的控制过程,如果蛇的头部碰到了墙壁或是⾃⼰的⾝体就会死亡,游戏结束。
此外还在游戏中加了⾳效,使得玩家玩游戏的过程中能够更加放松。
具有操作简单,易于控制,易学易玩的特点。
1.2⽤户界⾯本图为游戏的主界⾯,其中外⾯的⼀圈紫⾊“■”为边界,边界内连成⼀串的“■”是蛇的⾝体,“●”形状的图标即为⾷物。
该界⾯⽤于玩家与计算机的交流,使玩家能够通过图形界⾯来控制蛇的⾏为,进⽽实现游戏过程。
1.3使⽤⽅法分别使⽤“↑↓←→”四个按键来实现对蛇的上下左右的控制,随着蛇的长度的增加,虽然蛇移动的速度没有变化,但是由于空间⼤⼩有限,⽽蛇的长度在逐渐增加,故使得游戏的难度组建增⼤。
⼆.程序设计说明2.1 总体设计框架int main(){ 播放声⾳定义数组记录蛇的横纵坐标定义变量记录蛇的长度定义变量记录⾷物⽬标的位置定义变量判定游戏是否结束init(snakeLocation_x,snakeLocation_y,snakeLength); createObject(object_x,object_y); //初始化while(select为真){ switch(choice){case KEY_UP:do {将蛇的末尾擦除后⼀节赋值给前⼀节判断游戏是否结束蛇头转向转弯后的位置}case KEY_DOWN:{将蛇的末尾擦除后⼀节赋值给前⼀节判断游戏是否结束蛇头转向转弯后的位置}case KEY_RIGHT:{将蛇的末尾擦除后⼀节赋值给前⼀节判断游戏是否结束蛇头转向转弯后的位置}case KEY_LEFT:{将蛇的末尾擦除后⼀节赋值给前⼀节判断游戏是否结束蛇头转向转弯后的位置}case KEY_ESC :程序将会停⽌}}}2.2 关键算法描述算法1:voidinit(int* snakeLocation_x,int* snakeLocation_y,int&snakeLength)该算法的功能是⽤来进⾏初始化实现,实现游戏边界的设计、贪吃蛇⾝体的初始化、贪吃蛇⾝体长度的初始化、在⽆输⼊的情况下蛇的移动。
(完整word版)贪吃蛇实验报告
《计算机程序设计》课程设计报告课题名称贪吃蛇游戏班级学号姓名指导教师设计时间至设计地点常熟理工学院计算机科学与工程学院常熟理工学院计算机科学与工程学院目录1需求解析 (1)2系统解析和设计 (1)数据构造的设计和选择的原因 (1)系统模块区分和模块构造 (2)流程图 (2)数据种类、全局变量和函数说明 (3)3程序测试和运转结果 (4)4课程报告小结 (5)分数重叠显示 (5)速度太快 (5)食品可能出此刻蛇身上 (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];// 蛇身数组,保留每节蛇身的坐标。
贪吃蛇课程设计报告
本科课程设计贪吃蛇游戏设计摘要 (3)Abstract (3)一.详细设计 (4)1.属性解释 (4)2.初始化坐标: (4)3.调用线程 (4)4.具体功能实现: (5)4.1.移动功能的实现: (5)4.2.吃食物功能实现: (6)4.3.判断游戏是否结束的功能实现: (8)4.4.画图方法的实现 (9)4.5.监听键盘动作: (10)5.界面的设计: (11)5.1进入程序界面设计 (11)5.2第2个界面的设计: (12)5.3第3个界面设计: (12)6.把程序植入手机中 (13)二.字符设备驱动程序实现 (13)三.总结: (14)四.参考文献: (14)五.致谢 (15)摘要程序核心思想:运行程序首界面(进入游戏,退出游戏)进入游戏后选择难度(简单,普通,高难)根据不同的难度设置相应的属性。
进入游戏界面。
首先初始化蛇的坐标,食物的坐标,和障碍物的坐标。
然后获取当前屏幕的大小为将来的边界判断做准备。
然后创建并执行线程。
线程基本流程:判断是否是暂停阶段,如果没有暂停就执行:eatFood();move(direction); repaint();如果游戏结束了就重新游戏或者退出。
AbstractCore of the process: first running the program interface (into the game, withdraw from the game) into the game after the difficult choice of (simple, ordinary, highly difficult) depending on the difficulty of setting the corresponding attribute. Into the game interface. First initialize the coordinates of the snake, coordinates food, and the coordinates of obstructions. And access to the size of the current screen for the future of the border to prepare for judgement. And then create and execution threads. Thread the basic process: determine whether the stage is suspended, if not the moratorium on the implementation of: eatFood (); move (direction); repaint (); game to an end if the game or out on the re.一.详细设计1.属性解释用1个2维数组snake[200][2]存放蛇身坐标,第2维是0的时候代表横坐标,为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操作系统,2008开发环境下进行运行测试,检查错误,最终设计出可行的程序。
2、贪吃蛇游戏说明游戏操作要尽可能的简单,界面要尽可能的美观。
编写程序实现贪吃蛇游戏,贪吃蛇游戏是一个深受人们喜欢的游戏:一条蛇在密闭的围墙内,在围墙内随机出现一个食物,通过键盘上的四个光标键控制蛇向上下左右四个方向移动,蛇头撞到食物,则表示食物被吃掉,这时蛇的身体长一节,同时计10分;接着又出现食物,等待被蛇吃掉,如果蛇在移动过程中,撞到墙壁、障碍物或身体交叉(蛇头撞到自己的身体),则游戏结束。
游戏结束时输出相应得分。
具体要求有以下几点:(1)对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;(2)系统设计要实用,采用模块化程序设计方法,编程简练、可用,功能全面;(3)说明书、流程图要清楚;二、实验目的及设计要求1、实验目的.NET课程设计是教学实践环节中一项重要内容,进行此课程设计旨在掌握基础知识的基础上,进一步加深对VC#.NET技术的理解和掌握;提高和加强学生的计算机应用及软件开发能力,使学生具备初级程序员的基本素质;培养学生独立分析问题、解决问题、查阅资料以及自学能力,以适应信息管理行业日新月异的发展形势;本次课程设计是以学生独立思考解决问题为主,教师指导为辅,结合上机操作,完成指定的任务,做出设计报告。
《贪吃蛇游戏课程设计》报告
贪吃蛇游戏程序设计一、课程设计任务贪吃蛇小游戏程序设计二、设计要求通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。
(1).收集资料,分析课题,分解问题,形成总体设计思路;(2).对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍;(3).上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行;(4).完成课程设计报告,并进行答辩三、需求分析3.1、程序功能贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。
3.2、设计思想程序关键在于表示蛇的图形及蛇的移动。
用一个小矩形快表示蛇的一节身体,身体每长一节,增加一个矩形块,蛇头用俩节表示。
移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏 的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将 蛇的最后一节用背景色覆盖。
食物的出现与消失也是画矩形块和覆盖矩形块。
为了便于 理解,定义两个结构体:食物与蛇。
3.3、流程图蛇吃到食?YN蛇死亡?继续?N开始初始化界面和蛇身放置食物蛇开始运动蛇长大退出界面NYY 游戏者按键选择四、设计的具体实现(1)函数定义函数定义是对各个基础函数的定义,并且设置需要运用的信息,便于调用#define N200#define M200#include"graphics.h"#include<stdlib.h>#include<stdio.h>#include<string.h>#include<iostream.h>#include<dos.h>#include<conio.h>#include <windows.h>#define LEFT 97//A#define RIGHT100//D#define DOWN115//S#define UP119//W#define Esc0x011bint i,key;int score=0;int gamespeed=250;//游戏速度可根据实际情况自行调整struct Food{(2)主函数main( )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();//图形驱动void Close();//图形结束void DrawK();//开始画面void GamePlay();//玩游戏的具体过程void GameOver();//游戏结束void PrScore();//输出成绩主函数是程序的主流程,首先定义使用到的常数、全局变量及函数原型说明,然后初始化图形系统,调用函数DrawK()画出开始画面,调用函数GamePlay(),即玩游戏的具体过程,游戏结束后调用Close()关闭图形系统,结束程序void main()//主函数{Init();//图形驱动DrawK();//开始画面GamePlay();//玩游戏的具体过程Close();//图形结束}void Init()//图形驱动{int gd=DETECT,gm;initgraph(&gd,&gm," ");/*此处为turboc的路径,读者可以根据自己的电脑而改*/cleardevice();}(3)画界面函数DrawK()主界面是一个封闭的围墙,用两个循环语句分别在水平和垂直方向输出连续的宽度和高度均的矩形方块,表示围墙,为了醒目,设置为白色。
《贪吃蛇游戏课程设计》报告(可打印修改)
{ snake.x[i]=snake.x[i-1]; snake.y[i]=snake.y[i-1];
5
} switch(snake.direction)//1,2,3,4 表示上下左右四个方向,通过这个判断 来移动蛇头 {
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);//右边 } }
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;
贪吃蛇代码实验报告
一、实验目的1. 掌握Python编程语言的基本语法和常用库。
2. 理解贪吃蛇游戏的基本原理和算法。
3. 提高编程实践能力,培养团队协作精神。
二、实验环境1. 操作系统:Windows 102. 编程语言:Python3.83. 开发工具:PyCharm三、实验内容1. 游戏界面设计2. 蛇的移动3. 食物的生成4. 分数的计算5. 游戏结束条件四、实验步骤1. 导入相关库```pythonimport randomimport curses```2. 初始化屏幕```pythons = curses.initscr()curses.curs_set(0) # 隐藏光标sh, sw = s.getmaxyx() # 获取屏幕宽度和高度w = curses.newwin(sh, sw, 0, 0) # 创建新的窗口w.keypad(1) # 接受键盘输入w.timeout(100) # 设置超时时间,单位为毫秒```3. 绘制游戏界面```pythons = 'Score : ' + str(score)w.addstr(sh//2, sw//2 - len(s)//2, s) # 显示分数w.border(0) # 绘制边框```4. 初始化蛇和食物```pythonsnk_x = sw//4snk_y = sh//2snake = [[snk_y, snk_x],[snk_y, snk_x-1],[snk_y, snk_x-2]]food = [sh//2, sw//2]w.addch(int(food[0]), int(food[1]), curses.ACS_PI) # 在食物位置显示符号```5. 初始化蛇的移动方向```pythonkey = curses.KEY_RIGHT```6. 游戏循环```pythonwhile True:next_key = w.getch()key = key if next_key == -1 else next_key # 检查蛇是否撞墙或撞到自己if snake[0][0] in [0, sh] or \snake[0][1] in [0, sw] or \snake[0] in snake[1:]:curses.endwin()quit()# 计算蛇的新头部位置new_head = [snake[0][0], snake[0][1]]if key == curses.KEY_DOWN:new_head[0] += 1if key == curses.KEY_UP:new_head[0] -= 1if key == curses.KEY_LEFT:new_head[1] -= 1if key == curses.KEY_RIGHT:new_head[1] += 1# 将新头部添加到蛇的头部snake.insert(0, new_head)# 检查蛇是否吃到食物if snake[0] == food:score += 1food = Nonewhile food is None:nf = [random.randint(1, sh-1),random.randint(1, sw-1)]food = nf if nf not in snake else Nonew.addch(food[0], food[1], curses.ACS_PI)else:# 移动蛇tail = snake.pop()w.addch(int(tail[0]), int(tail[1]), ' ')# 在蛇的新头部位置显示蛇w.addch(int(snake[0][0]), int(snake[0][1]), curses.ACS_CKBOARD) ```7. 输出最终分数```pythons = 'Score : ' + str(score)w.addstr(sh//2, sw//2 - len(s)//2, s) # 显示分数```五、实验总结通过本次实验,我们成功地实现了贪吃蛇游戏。
贪吃蛇-实验报告
实验报告课程名称:Windows程序设计实验名称:贪吃蛇设计成员:漆咏康彭哲李佩东程焱桥康勇周涛高志奇专业年级:2011级软件工程填写时间:2012/12/24贪吃蛇一所要实现贪吃蛇的功能:1、点击“上”、“下”、“左”、“右”,蛇想相应的方向移动;每吃到一个豆子,蛇的长度增加一个,然后又生成一个食物;当蛇撞界或者吃到自己时,游戏结束并显示“GAME OVER”;蛇每吃一个食物,右边得分就增加;2、在右边区域显示此游戏的作者姓名;3、去掉工具栏,将应用程序的图标和名称改变;4、当点击游戏菜单下的“新游戏”、“游戏开始”、“游戏暂停”、“游戏继续”相关按钮时,就会执行相应的功能;5、当点击音效菜单下的“开启声音”、“关闭声音”时,就会响起声音或者关闭声音;6、当在难度设置菜单下设置了难度后,游戏的难度就会做相应的变化;7、当不了解游戏规则时,单击帮助菜单下的“游戏规则说明”就会弹出一个消息框;相关界面如下:二贪吃蛇的设计思想:1、界面布局的实现:采用图形工具(位图、画笔、文本文字)在单文档上显示出来;装载应用程序图标及修改应用程序图标;修改菜单栏以及去掉工具栏并固定应用程序窗口大小,取消最大化;2、在视类源文件定义一个蛇类和食物类的结构体变量,并初始化蛇的各项成员变量,包括蛇出现在客户区的初始位置、长度以及蛇的行驶方向;同时也要初始化食物类:食物出现的初始位置以及食物是否被吃掉的判断;用初始化长度为3的蛇,并且默认食物为0,未出现;3、为视类添加一个公共成员变量,用来存放分数;在视类源文件处定义一个静态变量,用来存放时间time1;4、给视类添加一个WM_TIMER消息,用OnTimer()函数不断更新游戏;同时也要添加一个WM_KEYDOWN,用OnKeyDown()来响应玩家的实际操作;另外,也要添加一个WM_RBUTTONDOWN消息,此消息只是为了获取客户区相应位置的位置,用于显示文字而用;5、具体游戏实现,还要包括蛇撞到墙或吃到自己都会结束游戏并输出“GAME OVER”,显示得分,还有判断吃豆以及通过时间来改变游戏的难度。
贪吃蛇实验报告实验心得(3篇)
第1篇一、实验背景随着科技的不断发展,计算机编程已成为现代教育的重要组成部分。
贪吃蛇游戏作为一款经典的编程学习项目,不仅能够帮助学生掌握编程基础,还能提高学生的逻辑思维能力和编程实践能力。
本次实验,我选择了使用C语言编写贪吃蛇游戏,通过实验过程,我收获颇丰。
二、实验目的1. 熟悉C语言编程环境,掌握基本的语法和编程技巧。
2. 学习并应用数组和结构体等数据结构,提高编程能力。
3. 理解并实现贪吃蛇游戏的算法,提高逻辑思维能力。
4. 掌握游戏开发的基本流程,提高编程实践能力。
三、实验过程1. 需求分析:在实验开始前,我首先对贪吃蛇游戏进行了需求分析,明确了游戏的基本规则和功能。
游戏规则包括:蛇的移动、食物的生成、蛇的吃食、蛇的生长、游戏结束等。
2. 设计思路:根据需求分析,我制定了以下设计思路:- 使用二维数组表示游戏界面,数组中的每个元素代表一个格子,蛇、食物、墙壁等都在数组中用特定的值表示。
- 使用结构体表示蛇的各个部分,包括蛇头的位置、方向、长度等。
- 通过键盘输入控制蛇的移动方向。
- 使用循环和条件语句实现蛇的移动、食物的生成、蛇的吃食、蛇的生长等功能。
- 判断游戏结束的条件,如蛇头撞墙、撞到自己等。
3. 编程实现:在确定了设计思路后,我开始编写代码。
首先,我定义了二维数组表示游戏界面,并初始化蛇和食物的位置。
然后,编写了蛇的移动、食物的生成、蛇的吃食、蛇的生长等功能。
最后,编写了游戏结束的判断条件。
4. 调试与优化:在编程过程中,我遇到了一些问题,如数组越界、蛇头移动方向错误等。
通过查阅资料和调试,我逐步解决了这些问题。
在实验过程中,我还对代码进行了优化,提高了程序的运行效率。
四、实验心得1. 编程基础的重要性:通过本次实验,我深刻体会到编程基础的重要性。
只有掌握了基本的语法和编程技巧,才能在编程过程中游刃有余。
2. 逻辑思维能力:在编写贪吃蛇游戏的过程中,我需要不断思考如何实现游戏的各个功能,这锻炼了我的逻辑思维能力。
贪吃蛇小游戏实验报告[
- 0 -软件设计报告设计题目: 贪吃蛇 目录一. 需求分析 二. 概要设计 三. 详细设计四. 心得体会一. 需求分析1.1关于题目 1.1.1题目要求(1)利用MicrosoftVisualC++制作一个贪吃蛇的小游戏, 要求:(2)应用MFC 单文档制作(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 -1.3关于兼容性本程序经过调试, 可以在XP系统下编译运行, 也可以在Vista下运行, 界面稍有不同, 但不影响运行结果。
二. 概要设计2.1软件主要功能设计2.1.1程序结构根据分析, 贪吃蛇这个程序一共要实现如下几个功能, 包括游戏方面开始游戏、停止游戏, 设置游戏级别(速度), 设置图片等。
具体的程序结构如下面的图1-1所示。
- 2 -图2-1 贪吃蛇结构图2.1.2程序流程根据分析后的贪吃蛇结构设计出相应的贪吃蛇流程。
贪吃蛇游戏报告书
贪吃蛇游戏报告书青岛⼤学软件技术学院交互式游戏设计实践实训题⽬名称贪吃蛇姓名专业数字媒体艺术班级 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语⾔的开发⼯具包JDKJDK(Java Development Kit)是Java语⾔的开发⼯具包,⼯具包⾥除了包含Java语⾔编译器、调试器以及演⽰程序以外,⼀般还会包含Java运⾏环境(Java Runtime Environment,JRE)。
贪食蛇游戏实习报告
贪吃蛇游戏开发一、需求分析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++语言,让我对我所学习的计算机更加了解喜欢,也更加希望自己能学好计算机方面的设计,去设计更多有意思的游戏。
贪吃蛇游戏实验报告
游戏过程界面:进行游戏
2008 年 8 月 22 日 2
2008 年计算机实习报告
游戏结束界面:选择是否重新游戏
1.3 使用方法 [比如:可以是什么键控制游戏?是否可以划分那难度?游戏是否可配置,界面风格是 否可选等等] 用方向键控制蛇的移动,输入 1,2,3,选择难度,游戏中按除方向键其他键暂停,结束 界面 y 重新游戏,n 退出游戏
一个元素取代前一个位置,蛇头向前移动一,如有按键,则跳出内循环,根据按键寻则蛇的 运动
伪代码: while 循环 检测是否有按键,若有,进入相应循环 休眠 原来蛇位置变为空白 蛇身数组后一个元素取代前一个元素位置 根据按键改变蛇头位置 显示蛇身 若有按键,跳出内循环
算法 2:水果的产生 使用结构表示水果,当水果被蛇吃掉后,随机产生一个水果 伪代码:if 蛇头位置与水果位置重合
While 循环 随机产生水果的坐标 If 坐标在框图内 { If 水果坐标不与蛇每一个坐标重合 跳出循环 } 算法 3:判断蛇的死亡 While a=0 For 取遍蛇身每一个元素 { If 蛇头出了框图或蛇头与蛇身重合 a=1 }(a=1 则循环停止) 2.3 程序设计的难点和关键点 :1 随机产生水果的位置,要保证水果在框图内且水果与蛇身不重和, 2,判断蛇的死亡 3,控制蛇的颜色变换 4,对于分数的储存和导入 2.4 调试的方法
2008 年 8 月 22 日 3
2008 年计算机实习报告
二.程序设计说明
2.1 总体设计框架 [包括程序执行流程,模块划分等,需要有文字说明和框图表示] 开始
界面 界面
选择难度
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
贪吃蛇报告完整版课程设计基础课程设计贪吃蛇游戏设计院系:,,,,,,,,,,,班级:,,,,,,,,,,,姓名:,,,,,,,,,,,合作者:,,,,,,,,,,,指导教师:,,,,,,,,,,,时间 _____年____月____日课程设计课程设计目录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 功能需求程序运行后显示动画、音乐,按<Eas>键推出欢迎的界面,进入游戏的界面后,左边有一个矩形区,为游戏区域,在矩形区中有食物和贪吃蛇,上方有统计分数和关数的显示区。
蛇在封闭的墙里用用矩形表示,围墙里随机的出现一个食物,通过按键盘的四个光标键控制蛇向上、下、左、右四个方向移动,蛇头撞到食物,食物就被吃掉,蛇本身长一节,接着又出现了食物,等待蛇来吃。
食物用另一种颜色的矩形表示,并且每次食物的位置是随机出现的。
游戏中要使蛇的长度尽可能的长,但是不能使蛇撞到四周的墙壁,且蛇的身体不能撞到一起,否则游戏结束。
游戏中每吃掉一个食物就会有积分,随着分数的增加可以进入下一关,及速度会加快。
游戏结束的时候,还能进行排名,输入自己的名字即可。
1.2.2 操作方法1. 进入游戏进入游戏后,首先出现的是游戏的片头,在这里,可以看到一个同步播放的动画音乐和在屏幕不断的变换字体等等,此时,可以按回车键跳出游戏的画面。