贪吃蛇测试分析报告
- 格式:doc
- 大小:352.00 KB
- 文档页数:13
C语言程序设计报告题目:贪吃蛇游戏的程序设计院系:西语学院英语教育6班姓名:学号:1.1题目:设计贪吃蛇小游戏1.2题目的要求:玩家通过键盘控制蛇在地图上寻找食物,蛇吃下食物,可以加分,碰到四壁游戏结束。
1.3设计的步骤:分析设计题目的要求,即需求分析。
总体设计,确定所需模块及模块间调用关系,定义系统中使用的数据类型。
详细设计,确定每个模块的功能,绘制主要函数的流程图。
编写程序代码,调试程序使其能正确运行。
要求书写规范,注意采用缩进格式。
函数名、变量名要见文晓意,注释要简而不失、详而不缀。
设计完成的软件要便于操作和使用。
程序测试,发现程序中存在的错误并改正。
完成报告。
2详细设计说明2.1课程设计的要求:通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。
收集资料,分析课题,分解问题,形成总体设计思路;对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍;上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行;完成课程设计报告。
2.2程序的功能:贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。
2.3课程设计的思想:程序关键在于表示蛇的图形及蛇的移动。
用一个小圆点来表示蛇的一节身体,身体每长一节,增加一个圆点,蛇头用四节来表示。
移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,如果按与蛇运动方向相反的方向键,此游戏就会暂停,再按想前的方向键才能继续游戏,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。
汇编语言与接口课程实验报告实验编号__________实验六______________实验名称__________贪吃蛇程序__________实验室名称________软件机房____________班级______________软件93______________学号______________*******___________姓名_______________*******_____________实验日期___2011__年___06__月___15___日评分教师实验报告成绩__________ 评分日期________年_______月________日软件学院汇编与接口综合实验选题表一、实验目的:熟练掌握汇编的各种指令,综合运用汇编的各种指令编写一个贪吃蛇程序。
在贪吃蛇程序的编写过程中深刻理解汇编语言,深刻理解汇编语言与其他语言的不同。
二、实验环境Masm for Windows集成环境2011。
三、实验内容1、回顾书中关于汇编语言的基础知识,利用彩色图形程序设计、发声系统的程序设计的知识,实现贪吃蛇的可视化及声音。
2、实验思路:贪吃蛇程序,利用不同的颜色形状的字符分别表示贪吃蛇蛇身,食物,以及障碍物。
在dos界面下,有25行80列,第0行设置游戏进行的分数及关卡信息,在1~24行为蛇的活动范围。
游戏设置4关,过三关游戏及通关成功。
否则挑战失败,可以重新挑战或者退出。
因为此贪吃蛇程序是利用字符完成的,所以始终要对指定的行和指定的列进行读、写字符操作。
所以在程序开始以前编写read和write宏命令是非常必要的。
贪吃蛇移动的过程中,方向是随时可能改变的,所以这里就利用的中断。
把9号中断向量给重新定义为:把键盘读紧的字符都存放在adrs中,再判断adrs是不是指定的上下左右键。
蛇的移动过程始终伴随有各种的判断过程,首先判断是否进入下一个关卡,如果是则进入下一关,如果不是则继续判断蛇是否撞到自身、墙壁、障碍物。
贪吃蛇java实验报告篇一:JAVA贪吃蛇课程设计报告《Java应用开发》课程设计报告题目:指导老师:姓名:专业:班级:日期:JAVA小游戏 - 贪吃蛇目录一、系统总体设计 ................................. 1 (一)设计目标及完成功能 ........................ 1 (二)系统结构设计 .............................. 1 二、详细设计 ..................................... 2(一) 界面设计 ................................... 2 (二) 系统设计 ................................... 4 (三) 关键技术及算法 ............................. 6 四、测试 ......................................... 7五、安装使用说明 ................................. 7总结(体会) ..................................... 8参考文献 .. (8)一、系统总体设计(一)设计目标及完成功能本软件是针对贪吃蛇小游戏的JAVA程序,利用上、下、左、右方向键来改变蛇的运动方向,长按某个方向键后,蛇的运动速度会加快,在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常进行游戏,在到达固定的分数后,游戏速度会加快。
1.窗口功能说明:设计了三个窗口,分别是游戏主窗口,成绩窗口,游戏帮助和关于作者窗口。
2.菜单栏分别为:游戏菜单和帮助菜单其中,游戏菜单包括开始游戏和退出游戏两项;帮助菜单包括游戏帮助和关于作者两项。
(二)系统结构设计图1-1 系统结构图二、详细设计(一) 界面设计贪吃蛇游戏的基本运行界面(1)生成初始界面:图2-1 初始界面(2)游戏菜单栏:图2-2 游戏菜单(2)积分排行菜单栏:图2-3 积分排行菜单(3)进行游戏界面:点击“游戏”,进入游戏菜单,选择“开始游戏”,或者使用快捷键“Ctrl+O”来开始游戏。
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关于SNAKE3.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;3.3游戏界面设计3.3.1游戏初始化游戏初始蛇体长度为3,颜色为灰色,食物标志为1,因为此时没有显示出食物,需要随机生成后,才置为0;void CSNAKEView::OnInitialUpdate(){CView::OnInitialUpdate();Snake[0].x=10;Snake[0].y=10;Snake[1].x=11;Snake[1].y=10;Snake[2].x=12;Snake[2].y=10;Snake[0].direct=3;Snake[0].len=3;Food.isfood=1;//初始化贪吃蛇起初有3个节点,长度为3,起始坐标;食物默认为1无0有// TODO: Add your specialized code here and/or call the base class }void CSNAKEView::oninit(){CDC *pDC=GetDC();CBrush DrawBrush=(RGB(100,100,100));CBrush *Drawbrush=pDC->SelectObject(&DrawBrush);for(int i=0;i<=Snake[0].len-1;i++)pDC->Rectangle(Snake[i].x*20,Snake[i].y*20,(Snake[i].x+1)*20,(Snake[i].y+1)*2 0);pDC->SelectObject(DrawBrush);}3.3.2游戏开始点击游戏开始菜单后,出现一个对话框,提示一秒后,将开始游戏。
三、实验步骤1、编程环境的选择本程序采用Microsoft Visual C++6.0的英文版本进行编译。
VisualC++6.0是Microsoft公司推出的基于Windows操作系统的可视化C++编程工具,尽管Microsoft公司推出了.NET平台的集成开发环境,但由于其良好的界面和可操作性,加上支持标准C/C++规范,但仍有相当多的编程人员使用Vi sualC++6.0进行应用系统的开发。
2、概要设计2.1软件主要功能设计2.1.1程序结构的设计根据分析,贪吃蛇这个程序一共要实现如下几个功能,包括游戏方面开始游戏、暂停游戏以及停止游戏,音乐音效的添加与控制,游戏帮助提示与英雄榜的显示等等。
具体的程序结构如下面的图2-1所示。
图2-1 贪吃蛇结构图2.1.2程序流程根据分析后的贪吃蛇结构设计出相应的贪吃蛇流程。
贪吃蛇的内容主要包括:游戏开始,随机出现食物;按下ToolBar中的暂停按钮或Space键可以实现暂停功能;按下帮助键或ToolBar中的“?”键可获得游戏帮助说明;可播放背景音乐和音效并可通过菜单以及ToolBar控制其播放或停止等等。
图2-2 贪吃蛇流程图3 、软件实现3.1变量函数及资源的声明根据程序的结构,将贪吃蛇需要实现的功能细化成为相应的函数。
3.1.1函数声明void CYuShuoView::OnDraw(CDC* pDC)//在OnDraw函数中绘制游戏背景、游戏文字以及控制蛇的样式颜色。
void CYuShuoView::YsInitFood() //初始化贪吃蛇的食物,使其随机生成void CYuShuoView::YsInitGame() //初始化贪吃蛇游戏参数void CYuShuoView::YsReDisplay(CPoint ysPoint) //重绘游戏窗口void CYuShuoView::OnYsBegin() //开始游戏(菜单响应消息)void CYuShuoView::OnYsPause() //暂停游戏(菜单响应消息)void CYuShuoView::OnYsStop() //停止游戏(菜单响应消息)void CYuShuoView::OnYsExit() //退出游戏(菜单响应消息)void CYuShuoView::OnYsEffect() //控制游戏音效void CYuShuoView::OnYsMusicbkg() //控制游戏背景音乐void CYuShuoView::OnYsLevel1() //控制游戏等级为初级void CYuShuoView::OnYsLevel2() //控制游戏等级为中级void CYuShuoView::OnYsLevel3() //控制游戏等级为高级void CYuShuoView::OnYsHelpgame() //游戏帮助void CYuShuoView::OnYsBest() //英雄榜的显示3.1.2变量声明CArray<CPoint,CPoint> m_ysBody; //定义点数组作为蛇的身体CPoint m_ysFood; //食物出现的点int m_ysTime; //显示时间int m_ysTime1; //满10则进一位使时间增加1秒int m_ysDirect; //方向控制变量int m_ysScore; //玩家成绩变量int m_yspausectrl; //暂停控制变量int m_yslevelctrl; //等级控制变量CString m_ysPlayer; //玩家姓名int m_yseffectctrl; //音效控制变量int m_ysmusicctrl; //背景音乐控制变量3.1.3资源1、对话框IDD_YS_HELPGAME //游戏帮助说明IDD_YS_BEST //英雄榜IDD_YS_RETRY //停止游戏确认IDD_ABOUTBOX //关于游戏版本2、音乐IDR_YS_BKGMUSIC //游戏背景音乐IDR_YS_EAT //贪吃蛇吃到食物的音乐IDR_YS_LOWSCORE //游戏结束后得低分音乐IDR_YS_HIGHSCORE //游戏结束后得高分音乐3、位图IDB_YS_BITMAP //游戏背景图4、菜单/工具栏IDR_MAINFRAME //系统自带菜单IDR_YS_TOOLBAR //自己创建的工具条5、头文件mmsystem.h //播放音乐的相应文件fstream.h //文件流文件3.2主要功能的实现3.2.1游戏界面贪吃蛇游戏的游戏界面包括背景图片、蛇身体的绘制、蛇移动范围的绘制等等。
贪吃蛇实验报告201221143049 信计1212 许圣1.概述此次课程设计我利用MFC制作了一个贪吃蛇游戏,用户可以通过上下左右控制蛇的移动方向,游戏会根据贪吃蛇身体的长度自动增加难度。
在游戏过程中,会记录运行时间和所得分数,我还添加了bmp格式的图片作为游戏背景。
2.功能描述2.1设计思路本软件主要由三个模块构成,它们分别是蛇运行模块,初始化处理模块和显示模块。
它们的作用分别是,初始化处理:初始化蛇头位置与第一个点位置;蛇运行模块:控制蛇的上下左右运行,并对蛇的运行状态进行判断,根据(吃点、未吃点、死亡等)状态进行不同的子程序模块处理以及游戏者是否能晋级的判断;显示模块:根据对蛇和点子的当前状态进行动画显示。
主要有以下步骤:1.定义蛇类和食物类,初始化贪吃蛇各项成员变量,包括图像的出现在屏幕的初始位置,长度,以及蛇的行走方向。
食物类的定义包括出现的初始位置,以及食物是否被吃掉的判断。
2.用数组初始化长度为4的贪吃蛇,并且默认出现一个食物。
3.在CView类上运用MFC提供的Windows消息中WM_TIMER消息,运用OnTimer()函数让系统提供一个时钟节拍,更新游戏4.具体游戏实现,包括蛇撞到自己和围墙都将使游戏结束,判断吃豆等,其中还包括根据蛇的长度来进行游戏难度的改变。
5.具体键盘游戏操作运用到Windows消息响应中的WM_KEYDOWN,用OnKeyDown()来响应玩家的实际操作。
6.添加了bmp格式的图片作为游戏背景。
整体流程图如下图1。
图1:系统流程图2.2功能介绍⑴运行程序,出现围墙界面,一条蛇在密闭的围墙内,在围墙内随机出现一个食物,出现bmp格式图片的背景。
⑵点击“游戏->游戏开始”,游戏开始。
还可暂停游戏继续⑶游戏开始后,界面右下角会同步游戏得分。
⑷通过四个方向键控制蛇的运动方向,吃掉随机出现的豆子,若不小心碰到墙壁或者与自身相交,则该轮游戏结束。
⑸游戏会根据蛇身的长度自动调节难易程度。
一、实训目的本次实训旨在通过设计并实现贪吃蛇游戏,巩固和加深学生对C语言程序设计的基本知识,提高学生的编程能力和实际动手操作能力。
通过实训,使学生能够熟练掌握C语言编程技巧,理解程序设计的基本思想和流程,同时培养学生的团队协作和问题解决能力。
二、实训内容1. 游戏规则贪吃蛇是一款经典的电脑游戏,玩家通过键盘控制蛇在游戏区域中移动,吃掉随机出现的食物。
蛇在吃掉食物后,长度会增加,得分增加。
如果蛇头撞到墙壁或自己的身体,游戏结束。
2. 游戏界面游戏界面由一个矩形区域组成,代表游戏区域。
蛇用一系列方块表示,食物用不同的颜色表示。
游戏开始时,蛇的长度为3,随机生成食物。
游戏过程中,蛇会根据玩家的输入移动。
3. 游戏逻辑(1)初始化:设置游戏区域大小、蛇的初始位置和方向、食物的初始位置等。
(2)游戏循环:不断检测玩家输入,更新蛇的位置,判断蛇是否吃到食物、撞到墙壁或自己的身体。
(3)游戏结束:当蛇撞到墙壁或自己的身体时,游戏结束。
4. 程序设计(1)数据结构:定义蛇、食物和游戏区域的数据结构。
(2)函数设计:设计初始化函数、移动函数、判断是否吃到食物函数、判断是否撞到墙壁或自己的身体函数等。
(3)主函数:调用相关函数,实现游戏循环。
三、实训过程1. 设计阶段首先,根据游戏规则和界面设计,确定游戏的数据结构和函数。
然后,编写程序代码,实现游戏的基本功能。
2. 编码阶段根据设计阶段的设计,使用C语言编写程序代码。
在编写过程中,注意代码的可读性和可维护性。
3. 调试阶段在编写代码过程中,不断调试程序,修复出现的错误。
调试过程中,注意观察程序运行情况,分析问题原因,并找出解决方案。
4. 测试阶段完成程序编写后,进行测试,确保程序能够正常运行。
测试过程中,注意观察游戏效果,确保游戏规则和界面设计符合预期。
四、实训成果通过本次实训,成功设计并实现了贪吃蛇游戏。
游戏运行稳定,功能完整,达到了实训目的。
五、实训心得1. 理解程序设计的基本思想和流程,掌握C语言编程技巧。
第1篇一、项目背景随着计算机技术的发展和普及,编程教育越来越受到重视。
为了提高学生的编程能力和逻辑思维,许多高校和培训机构都开设了编程实践课程。
贪吃蛇游戏作为经典的编程学习项目,因其简单易懂、趣味性强而广受欢迎。
本报告旨在记录一次基于Python语言的贪吃蛇游戏软件实践过程,分析项目实现中的关键技术,并总结实践经验。
二、项目目标1. 掌握Python编程基础,熟悉Python图形界面库Tkinter的使用。
2. 理解贪吃蛇游戏的基本原理,包括游戏逻辑、数据结构、事件处理等。
3. 培养编程实践能力,提高问题解决能力。
4. 实现一个功能完善、界面友好的贪吃蛇游戏软件。
三、项目实施1. 需求分析贪吃蛇游戏的核心功能包括:- 游戏界面:显示蛇的移动轨迹、食物、分数等信息。
- 蛇的移动:通过键盘或鼠标控制蛇的上下左右移动。
- 食物生成:在游戏区域内随机生成食物。
- 分数统计:记录玩家得分,并在游戏结束后显示最高分。
- 游戏结束:当蛇碰到墙壁或自身时,游戏结束。
2. 技术选型- 编程语言:Python- 图形界面库:Tkinter- 数据结构:列表(用于存储蛇的身体节点)3. 项目实现(1)初始化游戏界面使用Tkinter库创建游戏窗口,设置窗口大小和标题。
在窗口内创建一个画布(Canvas),用于绘制蛇、食物和分数等信息。
```pythonimport tkinter as tk创建游戏窗口root = ()root.title("贪吃蛇游戏")canvas = tk.Canvas(root, width=400, height=400)canvas.pack()```(2)绘制蛇和食物定义蛇和食物的形状、颜色等属性,使用画布的create_rectangle()方法绘制。
```pythondef draw_snake(snake):for x, y in snake:canvas.create_rectangle(x, y, x+10, y+10, fill="green")def draw_food(food):canvas.create_oval(food[0], food[1], food[2], food[3], fill="red")```(3)控制蛇的移动使用键盘事件绑定函数bind(),监听键盘按键事件,根据按键方向更新蛇的移动方向。
C语言程序设计报告题目:贪吃蛇游戏的程序设计院系:西语学院英语教育6班姓名:学号:1.1题目设计贪吃蛇小游戏1.2题目的要求:玩家通过键盘控制蛇在地图上寻找食物,蛇吃下食物,可以加分,碰到四壁游戏结束。
1.3设计的步骤:分析设计题目的要求,即需求分析。
总体设计,确定所需模块及模块间调用关系,定义系统中使用的数据类型。
详细设计,确定每个模块的功能,绘制主要函数的流程图。
编写程序代码,调试程序使其能正确运行。
要求书写规范,注意采用缩进格式。
函数名、变量名要见文晓意,注释要简而不失、详而不缀。
设计完成的软件要便于操作和使用。
程序测试,发现程序中存在的错误并改正。
完成报告。
2详细设计说明2.1课程设计的要求:通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。
收集资料,分析课题,分解问题,形成总体设计思路;对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍;上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行;完成课程设计报告。
2.2 程序的功能:贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10 分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。
2.3 课程设计的思想:程序关键在于表示蛇的图形及蛇的移动。
用一个小圆点来表示蛇的一节身体,身体每长一节,增加一个圆点,蛇头用四节来表示。
移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,如果按与蛇运动方向相反的方向键,此游戏就会暂停,再按想前的方向键才能继续游戏,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。
Java-贪吃蛇报告第xx小组:贪吃蛇游戏项目小组成员及分工一、实验环境操作系统:Windows 7编程环境:Eclipse、JDK二、实验内容与完成情况(主要介绍项目总体功能分析与说明。
)贪吃蛇小游戏的JAVA程序是利用上↑、下↓、左←、右→方向键来改变蛇的运动方向,按空键暂停游戏,按enter键重新开始。
长按某个方向键后,蛇的运动速度会加快,在随机的地方产生食物,吃到食物就变成新的蛇体,碰到壁或自身则游戏结束,否则正常进行游戏。
以不同的速度和不同方向吃到食物所获得的分数也不相同。
窗口功能说明:设计了三个窗口,分别是游戏主窗口,主菜单窗口,模式选择窗口。
菜单栏分别为:游戏菜单(重新开始)和帮助菜单以及返回(返回主菜单)。
其中,按返回菜单按钮后会显示主菜单,其包括游戏开始、设置、退出游戏三项按钮选择;如果按“设置”按钮会进入“模式选择”窗口。
而模式选择窗口菜单包括了初级、中级、高级、返回按钮。
1、功能1(主菜单窗口)(1)主菜单窗口主要是提供“游戏开始”、“设置”和“退出”按钮。
“游戏开始”按钮按下后会进入“游戏主窗口”开始游戏;“设置”按钮是调用“模式选择”窗口对游戏贪吃蛇的速度进行设置;“退出”按钮按下则会直接退出游戏。
(2)功能1实现的流程图实现的效果图如下:(3)功能1(主菜单窗口)代码:package Swing;import class setMenu extends JFrame {private int speed1 = 200;public static int speed = 200;*/public static void main(String[] args) {(new Runnable() {public void run() {try {setMenu frame = new setMenu(speed);(frame);(true);} catch (Exception e) {();}}});}/*** Create the frame.*/public setMenu(int speed2){speed1=speed2;}public void SsetMenu(final setMenu frame) { setTitle("主菜单");setDefaultCloseOperation;setBounds(100, 100, 250, 350);contentPane = new JPanel();(new Color(102, 204, 102)); (new EmptyBorder(5, 5, 5, 5)); setContentPane(contentPane); (null);*/public static void main(String[] args) {(new Runnable() {public void run() {try {setMenu frame = new setMenu(speed);(frame);(true);} catch (Exception e) {();}}});}/*** Create the frame.*/public setMenu(int speed2){speed1=speed2;}public void SsetMenu(final setMenu frame) { setTitle("主菜单");setDefaultCloseOperation;setBounds(100, 100, 250, 350);contentPane = new JPanel();(new Color(102, 204, 102));(new EmptyBorder(5, 5, 5, 5));setContentPane(contentPane);(null);dd(labelScore, ;(this);();(false);tart();}}// main():主函数public static void main(String[] args) {G ame gs = new Game(200);}@Overridepublic boolean imageUpdate(Image arg0, int arg1, int arg2, int arg3, int arg4, int arg5) {// TODO Auto-generated method stubreturn false;}}// Node:结点类class Node {int x;int y;Node(int x, int y) {= x;= y;}}// SnakeModel:贪吃蛇模型class SnakeModel implements Runnable {Game gs;boolean[][] matrix;// 界面数据保存在数组里LinkedList nodeArray = new LinkedList();Node food;int maxX;// 最大宽度int maxY;// 最大长度int direction = 2;// 方向boolean running = false;int timeInterval = 200;// 间隔时间(速度)double speedChangeRate = ;// 速度改变程度boolean paused = false;// 游戏状态int score = 0;int countMove = 0;// UP和DOWN是偶数,RIGHT和LEFT是奇数public static final int UP = 2;public static final int DOWN = 4;public static final int LEFT = 1;public static final int RIGHT = 3;// GreedModel():初始化界面public SnakeModel(Game gs, int maxX, int maxY,int speed_snake) { t imeInterval = speed_snake;//速度= gs;= maxX;= maxY;matrix = new boolean[maxX][];for (int i = 0; i < maxX; ++i) {matrix[i] = new boolean[maxY];(matrix[i], false);// 没有蛇和食物的地区置false}// 初始化贪吃蛇int initArrayLength = maxX > 20 10 : maxX / 2;//蛇头位置,长度 // for (int i = 0; i < initArrayLength; ++i) {int x = maxX / 2 + i;// int y = maxY / 2;// (new Node(x, y));matrix[x][y] = true;// 蛇身处置true}food = createFood();matrix[][] = true;// 食物处置true}// changeDirection():改变运动方向public void changeDirection(int newDirection) {if (direction % 2 != newDirection % 2) {// 检查方向冲突direction = newDirection;}}// moveOn():贪吃蛇运动函数public boolean moveOn() {Node n = (Node) ();//获取蛇头的位置int x = ;int y = ;// // switch (direction) {case UP:y--;break;case DOWN:y++;break;case LEFT:x--;break;case RIGHT:x++;break;}if ((0 <= x && x < maxX) && (0 <= y && y < maxY)) { //"asd");if (matrix[x][y]) {// 吃到食物或者撞到身体if (x == && y == {// 吃到食物"eat");(food);// 在头部加上一结点// 计分规则与移动长度和速度有关int scoreGet = (10000 - 200 * countMove) / timeInterval; score += scoreGet > 0 scoreGet : 10;countMove = 0;food = createFood();matrix[][] = true;return true;} elsereturn false;// 撞到身体} else {// 什么都没有碰到(new Node(x, y));// 加上头部matrix[x][y] = true;n = (Node) ();// 去掉尾部matrix[][] = false;countMove++;return true;}}return false;// 越界(撞到墙壁)}// run():贪吃蛇运动线程public void run() {running = true;while (running) {try {(timeInterval);} catch (Exception e) {break;}if (!paused) {if (moveOn()) {// 未结束();} else {// 游戏结束(null, "GAME OVER", "Game Over", ; break;}}}running = false;}// createFood():生成食物及放置地点private Node createFood() {int x = 0;int y = 0;do {Random r = new Random();x = (maxX);y = (maxY);} while (matrix[x][y]);return new Node(x, y);}// speedUp():加快蛇运动速度public void speedUp() { timeInterval *= speedChangeRate; }// speedDown():放慢蛇运动速度public void speedDown() { timeInterval /= speedChangeRate; }// changePauseState(): 改变游戏状态(暂停或继续)public void changePauseState() {paused = !paused;}}三、功能测试对系统的所有功能模块进行测试并截图显示,并对出现的问题(及其现象)和解决办法予以记录。
.C语言程序设计报告题目:贪吃蛇游戏的程序设计院系:西语学院英语教育6班:学号:1.1题目:设计贪吃蛇小游戏1.2题目的要求:玩家通过键盘控制蛇在地图上寻找食物,蛇吃下食物,可以加分,碰到四壁游戏结束。
1.3设计的步骤:●分析设计题目的要求,即需求分析。
●总体设计,确定所需模块及模块间调用关系,定义系统中使用的数据类型。
●详细设计,确定每个模块的功能,绘制主要函数的流程图。
●编写程序代码,调试程序使其能正确运行。
要求书写规,注意采用缩进格式。
函数名、变量名要见文晓意,注释要简而不失、详而不缀。
设计完成的软件要便于操作和使用。
●程序测试,发现程序中存在的错误并改正。
●完成报告。
2详细设计说明2.1课程设计的要求:通过游戏程序设计,提高编程兴趣与编程思路,巩固C语言中所学的知识,合理的运用资料,实现理论与实际相结合。
●收集资料,分析课题,分解问题,形成总体设计思路;●对于设计中用到的关键函数,要学会通过查资料,弄懂其用法,要联系问题进行具体介绍;●上机调试,查错,逐步分析不能正常运行的原因,确保所设计的程序正确,并且能正常运行;●完成课程设计报告。
2.2程序的功能:贪吃蛇游戏是一个经典小游戏,一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键控制蛇向上下左右四个方向移动,蛇头撞倒食物,则食物被吃掉,蛇身体长一节,同时记10分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或身体交叉蛇头撞倒自己身体游戏结束。
2.3课程设计的思想:程序关键在于表示蛇的图形及蛇的移动。
用一个小圆点来表示蛇的一节身体,身体每长一节,增加一个圆点,蛇头用四节来表示。
移动时必须从蛇头开始,所以蛇不能向相反的方向移动,如果不按任意键,蛇自行在当前方向上前移,如果按与蛇运动方向相反的方向键,此游戏就会暂停,再按想前的方向键才能继续游戏,但按下有效方向键后,蛇头朝着该方向移动,一步移动一节身体,所以按下有效方向键后,先确定蛇头的位置,而后蛇的身体随蛇头移动,图形的实现是从蛇头新位置开始画出蛇,这时,由于未清屏的原因,原来的蛇的位置和新蛇的位置差一个单位,所以看起来蛇多一节身体,所以将蛇的最后一节用背景色覆盖。
*****************实验报告实验名称: 网络编程基础实训教程(贪吃蛇)指导教师:姓名:学号:班级:提交日期:1.实验目的通过开发一款贪吃蛇游戏程序, 熟练掌握C#编程语言、和面向对象程序设计方法, 独立完成一个游戏程序的开发。
2.实验题目使用C#编程语言, 开发一款贪吃蛇游戏, 如下图所示。
3.功能描述a)游戏场地是一片矩形区域的草坪。
b)一条蛇由蛇头和蛇身组成。
c)当游戏开始之后, 草坪中出现一颗豆和一条蛇, 并且蛇不停地移动, 蛇移动方向与蛇头一致。
d)当游戏暂停之后, 蛇停止移动。
e)当蛇移动时, 玩家使用“↑”、“↓”、“←”和“→”四个键控制蛇的移动方向。
f)当蛇头与豆的位置重合时, 豆被蛇吃掉, 同时在草坪中再生成一颗新的豆, 蛇身增加一节。
当蛇头碰到蛇身时, 则咬断蛇身, 后半部分的蛇身消失。
当蛇头碰到草坪四周时, 蛇立即毙命, 游戏结束。
4.需求分析根据功能描述可知, 贪吃蛇游戏的系统结构图如下所示。
1)定义数据字典如下:2)草坪(Lawn): 草坪是贪吃蛇游戏的场地。
豆和蛇只能存在于草坪范围之内。
草坪具有大小和颜色等属性。
蛇(Snake):在贪吃蛇游戏中, 蛇由若干节组成, 其中第一节是蛇头, 其余是蛇身。
在游戏过程中, 有且仅有一条蛇, 并且蛇在不停地移动。
如果蛇吃了豆, 则蛇生长一节。
如果蛇头碰到蛇身, 则咬断蛇身, 后半部分的蛇身消失。
如果蛇头离开草坪, 则蛇死亡游戏结束。
蛇具有长度、颜色、运动方向、每一节的位置等属性。
豆(Bean):在贪吃蛇游戏中, 豆是蛇的食物。
在游戏过程中, 有且仅有一颗豆。
如果蛇吃了豆, 则重新生成一颗豆。
豆具有位置、大小和颜色等属性。
5.设计说明根据需求分析可知, Snake的每一节都有位置和大小等属性。
而Bean也具有这两个属性。
抽象出二者的共同特征, 抽象出一般类Block, 用于描述一个块。
Block派生出Bean和SnakeBlock两个类, 其中SnakeBlock类用于描述蛇的一节。
贪吃蛇
测试分析报告
开发小组成员:
目录
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):块
一条蛇可以看成由许多正方形的“小格子”拼凑成,称作块。
块
是蛇身上最小的单位。
2)b locklist:
用来保存每一段的状态,顺序表的元素单位是块。
且顺序表的第一个元素表示蛇的头部。
3)坐标系:
以左上角那点为(15,15),向右则x递增,向下则y递增。
1.4参考资料:
TNT版贪吃蛇需求规格说明书
TNT版贪吃蛇设计说明书
高伟峰英等《软件工程与项目实践教程》科学
建军《Visual C#程序设计》清华大学
周峰《C#典型模块开发》中国铁道
胡飞《软件工程基础》高等教育
2.测试概要
1)、测试人员:朱青林王延川
2)、软件说明
3)、名称标示符:功能测试
进度安排:三天
容:对游戏的开始、暂停、继续、初级、中级、高
级等进行调试,以得到预期的效果。
3.测试结果及发现
3.1 游戏方面:
1)开始:程序运行后,会出来只有十节的蛇和一个红色的食物。
2)暂停/继续:当程序正在运行时,点击暂停/继续按钮,蛇停在当前的位置,再次点击蛇又从当前位置继续运动。
3)重新开始:当游戏结束或想重新开始一局时,点击此按钮,游戏又回到最初的状态,一个食物,一个运动着的蛇块,
且游戏积分清零。
所以重新开始功能能够实现。
4)退出:点击退出按钮,游戏窗口关闭,回到程序界面。
所以退出功能可以实现。
5)游戏失败:蛇碰到自身或碰到边界
3.2界面菜单测试
等级设置:
1)游戏等级设置:当在游戏还没开始时点击了菜单上的不同等级选项后,再点击开始按钮,蛇会以不同的速度运动。
从初级到高级蛇的速度逐渐加大。
所以等级设置正确,此游戏能够实现不同速度的运动。
2)游戏帮助:打开此项菜单,包括游戏等级设置说明和蛇颜色设置说明两项。
3)积分:当蛇吃了一块食物后,积分文本框会相应的实现加10分的功能,并且当游戏结束之后会弹出过关成功的对话框。
4.对软件功能的结论
4.1游戏运行方面
4.1.1能力
根据多次测试,达到预期效果。
每吃一个食物,舍身长度加一,积分加十分。
4.1.2限制
积分累积到300分,出现“恭喜你闯关成功”对话框,游戏结束。
4.2界面设置方面
4.2.1能力
根据多次测试,设置方面可以达到预期效果,进行设置初级、中级、高级设置时,速度变化明显。
4.2.2限制
高级设置后速度过快,操作不容易进行。
5.分析摘要
5.1能力
1).本款游戏在界面设计上清晰明了、美观大方;在操作上简单、易懂。
有效率高,不易出错的优点。
2).本游戏着重于娱乐大众,并且有锻炼反应速度的特点。
5.2缺陷和限制
暂未发现缺陷,实际运行环境上没有任何限制,在兼容性没有任何问题。
5.3建议
(1):可以在给出分数的前提下,再加入时间的因素。
(2):当主界面出现时,可以在界面上显示暂停的蛇以及食物,点击开始蛇开始运动。
(3):添加一图片使得界面方面更加美观,可以添加背景音乐。
5.4评价
该项目的开发已达到预期目标,在测试开始、暂停、继续、初级、高级等方面都符合要求,可以交付使用。
6.测试资源消耗
由于测试人员水平有限,电脑配置等原因,本次测试耗时三天完成。