贪吃蛇小游戏实验报告[

合集下载

贪吃蛇游戏_实习报告

贪吃蛇游戏_实习报告

课程设计报告贪吃蛇游戏设计专业信息工程系学生姓名王洪松班级信息类101班学号100810518时间2011-03-28—2011-04-01课程设计任务书题目贪吃蛇系(部) 信息工程系专业信息类班级2010级1班学生姓名王洪松学号10081051803 月28 日至04 月01 日共 1 周指导教师(签字)系主任(签字)年月日贪吃蛇游戏设计摘要:贪吃蛇是一款经典的休闲游戏,操作小蛇不停的朝食物的方向前进,直到吃掉了食物。

每吃一个食物,小蛇都会长长一节,随之而来的难度加大;当小蛇的头撞到墙时或者小蛇的头与身体相撞时,小蛇就会死亡;当然,小蛇的速度越快,每一个食物的分数就越高。

进程安排3月28日:规划程序需要调用的各个函数,根据要求要实现的内容 3月29日:图形驱动函数 3月30日:开始画面函数3月31日:控制玩游戏过程的函数4月1日: 图形结束函数组装程序,及其调试020406080100第一季度第三季度东部西部北部开发环境概述Visual C++是微软公司的重要产品之一, 是一种功能强大行之有效的可视化编程工具。

它提供了MFC 类库,使用户可以方便的开发自己想实现的功能。

Visual C++6.0的主要特点:(1)自动化和宏功能。

(2)可以灵活地定制工具栏和菜单。

(3)可以直接运行和调试程序,还可以使用宏语言来自动操作调试器。

(4)支持Internet 连接。

(5)一个新的便捷的项目系统可以允许一个工作区内包含多个不同的项目类型。

(6)在工作区内可以包含多个并列的工程文件。

(7)可以在对话框中使用WizardBar 将程序同可视化元素联系起来。

(8)Find in File 命令支持两个独立的输出窗格,可以保存上一次搜索的结果。

这些新特性可以更好地利用Visual C++开发工具进行Windows 应用程序开发。

目录1、概述1.1、用C类环境设计程序的方法 (1)1.2、简要说明., (1)2、设计要求 (1)3、系统分析与模块设计 (2)3.1、算法设计3.2、数据结构3.3、模块设计3.4、模块枝干图4、程序流程图4.1、图形驱动 (3)4.2、开始画面 (4)4.3、显示食物 (5)4.4、蛇向前移动 (6)4.5、判蛇死 (7)4.6、吃到食物后处理 (8)4.7、判蛇反向移动 (9)4.8、游戏结束 (10)4.9、图形结束 (10)5、程序设计及源代码……………………………………………………10-176、运行结果分析…………………………………………………………18-207、实习心得 (21)贪吃蛇游戏的设计1 .概述1.1、用TC设计程序的方法首先应了解设计要求,然后按照功能设计模块,每个模块完成特定的功能,要使模块间的耦合性小,内聚性高;设计模块是相当重要的一个环节。

贪吃蛇游戏的开发报告

贪吃蛇游戏的开发报告

基于VC#.NET的贪吃蛇游戏的开发与设计目录1.实验目的 (3)2.实验任务与要求 (3)2.1实验内容 (3)2.2实验要求 (3)2.3实验环境 (3)3.设计方案 (3)3.1程序功能 (4)3.2设计思想 (4)3.3设计总体流程图 (4)3.4设计的具体实现 (4)4.程序测试 (15)4.1测试内容与结果 (15)4.2程序运行效果图 (17)5.实验总结 (17)参考文献 (17)附录 (18)附录A:主要源程序 (18)附录B:软件使用说明书 (23)一、实验目的(1)复习、巩固VC#.NET的基础知识,进一步加深对VC#.NET技术的理解和掌握;(2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。

(3)培养学生在项目开发中团队合作精神、创新意识及能力二、实验任务与要求(1)实验内容贪吃蛇游戏开发,首先它可以为大家提供一种当前比较流行的休闲小游戏。

贪吃蛇游戏开发的最后一部分就是游戏的模块划分,根据分析,贪吃蛇这个程序一共要实现如下几个功能,包括游戏方面开始游戏、暂停游戏以及停止游戏,游戏设置(蛇的颜色、食物的颜色),游戏结束时的积分。

(2)实验要求●对系统进行功能模块分析、控制模块分析正确,符合课题要求,实现相应功能;可以加以其他功能或修饰,使程序更加完善、合理;●系统设计要实用,采用模块化程序设计方法,编程简练、可用,功能全面;●说明书、流程图要清楚;●记录设计情况(备查,也为编写设计说明书作好准备);(3)实验环境WindowsXP操作系统,2005开发环境。

三、设计方案(1)程序功能一条蛇在封闭围墙里,围墙里随机出现一个食物,通过按键盘四个光标键或A,D,W,S控制蛇向上下左右四个方向移动,蛇头撞到食物,则食物被吃掉,蛇身体长一节,同时记1分,接着又出现食物,等待蛇来吃,如果蛇在移动中撞到墙或蛇头撞倒自己身体游戏结束。

JAVA开放性实验报告贪吃蛇

JAVA开放性实验报告贪吃蛇

JAVA开放性实验报告贪吃蛇实验目的:本实验旨在利用Java语言实现一个经典的贪吃蛇游戏,通过实践提升对面向对象程序设计的理解和应用能力,加深对Java语言的熟练程度,并提高解决问题的能力和编程实践经验。

实验内容:1.设计游戏界面:通过Java中的Swing库实现游戏窗口的设计,包括游戏区域、游戏开始按钮、得分显示等。

2.实现游戏逻辑:设计贪吃蛇的移动规则,食物的生成和吃掉判定,碰撞检测等游戏逻辑。

同时实现游戏的主循环,控制游戏的进行。

3.实现键盘控制:通过监听键盘事件,实现玩家控制贪吃蛇的移动方向。

4.设计游戏机制:设置游戏的难度等级,增加贪吃蛇的移动速度、食物生成间隔等参数,使游戏更具挑战性。

5.设计游戏结束逻辑:当贪吃蛇头碰到墙壁或自身时,游戏结束并显示得分。

玩家可以选择重新开始游戏或退出。

实验步骤:1.设计游戏界面:创建一个JFrame窗口,在窗口中添加游戏画布,开始按钮和得分显示等组件。

2.实现游戏逻辑:设计Snake类和Food类,表示贪吃蛇和食物。

通过ArrayList存储贪吃蛇的身体节点,并实现移动、吃食物等方法。

3.实现键盘控制:通过实现KeyListener接口来监听键盘事件,根据按键控制贪吃蛇的移动方向。

4.设计游戏机制:设置贪吃蛇的移动速度、食物生成间隔等参数,根据难度级别逐步增加,使游戏更具挑战性。

5.设计游戏结束逻辑:当贪吃蛇头碰到墙壁或自身时,游戏结束并显示得分。

提供重新开始游戏和退出游戏的选项。

实验结果:经过实验设计和编码实现,成功完成了Java贪吃蛇游戏的开发。

游戏界面美观,操作流畅,游戏逻辑完整,玩家能够通过控制贪吃蛇吃到食物并获得得分。

随着游戏的进行,贪吃蛇会不断变长,玩家需要避开障碍,控制蛇头移动,体验游戏的乐趣和挑战。

实验总结:通过本次实验,我深入学习了Java语言的面向对象编程思想和应用,掌握了Swing库的使用方法,加深了对Java语言的理解和应用。

贪吃蛇报告完整版

贪吃蛇报告完整版

贪吃蛇报告完整版课程设计基础课程设计贪吃蛇游戏设计院系:,,,,,,,,,,,班级:,,,,,,,,,,,姓名:,,,,,,,,,,,合作者:,,,,,,,,,,,指导教师:,,,,,,,,,,,时间 _____年____月____日课程设计课程设计目录1(1概述 ..................................................................... ................................错误~未定义书签。

1.1.1研究的背景与意义 ..................................................................... ...错误~未定义书签。

1.1.2 设计的任务和需要的知识点...................................................错误~未定义书签。

1. 生成设计主要完成的任务 ......................................................错误~未定义书签。

2. 需要掌握和应用的知识点 ......................................................错误~未定义书签。

1.1.3 具体完成的设计内容.................................................................错误~未定义书签。

1.2需求分析...................................................................... ...........................错误~未定义书签。

1.2.1 功能需求 ..................................................................... .................错误~未定义书签。

贪吃蛇的实训报告

贪吃蛇的实训报告

一、实训目的本次实训旨在通过设计并实现贪吃蛇游戏,巩固和加深学生对C语言程序设计的基本知识,提高学生的编程能力和实际动手操作能力。

通过实训,使学生能够熟练掌握C语言编程技巧,理解程序设计的基本思想和流程,同时培养学生的团队协作和问题解决能力。

二、实训内容1. 游戏规则贪吃蛇是一款经典的电脑游戏,玩家通过键盘控制蛇在游戏区域中移动,吃掉随机出现的食物。

蛇在吃掉食物后,长度会增加,得分增加。

如果蛇头撞到墙壁或自己的身体,游戏结束。

2. 游戏界面游戏界面由一个矩形区域组成,代表游戏区域。

蛇用一系列方块表示,食物用不同的颜色表示。

游戏开始时,蛇的长度为3,随机生成食物。

游戏过程中,蛇会根据玩家的输入移动。

3. 游戏逻辑(1)初始化:设置游戏区域大小、蛇的初始位置和方向、食物的初始位置等。

(2)游戏循环:不断检测玩家输入,更新蛇的位置,判断蛇是否吃到食物、撞到墙壁或自己的身体。

(3)游戏结束:当蛇撞到墙壁或自己的身体时,游戏结束。

4. 程序设计(1)数据结构:定义蛇、食物和游戏区域的数据结构。

(2)函数设计:设计初始化函数、移动函数、判断是否吃到食物函数、判断是否撞到墙壁或自己的身体函数等。

(3)主函数:调用相关函数,实现游戏循环。

三、实训过程1. 设计阶段首先,根据游戏规则和界面设计,确定游戏的数据结构和函数。

然后,编写程序代码,实现游戏的基本功能。

2. 编码阶段根据设计阶段的设计,使用C语言编写程序代码。

在编写过程中,注意代码的可读性和可维护性。

3. 调试阶段在编写代码过程中,不断调试程序,修复出现的错误。

调试过程中,注意观察程序运行情况,分析问题原因,并找出解决方案。

4. 测试阶段完成程序编写后,进行测试,确保程序能够正常运行。

测试过程中,注意观察游戏效果,确保游戏规则和界面设计符合预期。

四、实训成果通过本次实训,成功设计并实现了贪吃蛇游戏。

游戏运行稳定,功能完整,达到了实训目的。

五、实训心得1. 理解程序设计的基本思想和流程,掌握C语言编程技巧。

贪吃蛇总结报告

贪吃蛇总结报告

贪吃蛇设计综合实验总结报告课程名称:程序设计实践选题名称:贪吃蛇小组长姓名:方娟 200911211056小组成员姓名:邹甜 200911211004杜家萱 200911211066任课老师:伊乾报告递交时间:2009.6.9一系统功能说明贪食蛇游戏是一个深受人们喜爱的游戏:一条蛇在密闭的围墙内,在围墙内出现食物,通过按键控制蛇向上下左右四个方向移动,蛇撞到食物,则食物被吃掉,蛇的身体增加一节。

如果蛇在移动的过程中,撞到墙壁或身体的交叉(蛇头撞到自己的身体)游戏结束。

现要求利用Turbo C2.0来实现该游戏。

功能要求如下:一、基本功能1.提供一个图形模式下的界面。

2.开始游戏:空格键或回车键;退出游戏:Esc键。

3.支持用键盘的方向键来控制蛇的移动,蛇可以向上、下、左、右四个方向移动。

4.当蛇头碰到食物时,食物被吃掉,蛇的身体增长一节。

5.初始场景内随即出现1个食物,当食物被吃掉时,再随机出现一个食物。

6.要有记分机制,没吃掉一个食物,增加相应的分数。

7.蛇碰到墙壁或是自己身体的一部分则游戏结束。

二、高级功能1.暂停功能:能随时通过按键来暂停游戏,再按一次则继续游戏。

2.速度调节功能:当分数达到某个值后,对蛇的移动速度进行一定的提升,但会有一个速度上限。

3.奖励机制:增加另一种的奖励食物,蛇吃到该种食物后蛇的身体减少一节(最短不能少于2节),但不增加分数。

该种食物的颜色要区别与普通食物的颜色。

奖励食物有时间限制,在一定时间内没有吃掉则会消失。

4.音效功能:在游戏开始、吃掉食物、撞墙、撞到自己时提供不同的音效。

二程序结构(2)重要数据说明基本思路:首先设计主界面,主界面是一个密封的围墙,并在屏幕最右面留一部分用来显示分数、计时等其他信息。

围墙直接画一个矩形来表示,四面围成密闭的矩形来作为围墙。

接着是初始化蛇与食物的位置并将他们用图形表示出来。

然后进行一个循环,将蛇按当前的方向移动,并处理键盘的方向按键信息,调整蛇的移动方向。

《贪吃蛇游戏课程设计》报告

《贪吃蛇游戏课程设计》报告

贪吃蛇游戏程序设计一、课程设计任务贪吃蛇小游戏程序设计二、设计要求通过游戏程序设计,提高编程兴趣与编程思路,巩固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()主界面是一个封闭的围墙,用两个循环语句分别在水平和垂直方向输出连续的宽度和高度均的矩形方块,表示围墙,为了醒目,设置为白色。

贪吃蛇设计报告

贪吃蛇设计报告

目录1. 课题分析与方案选择 (3)2.总体设计 (4)2.1 理论分析 (5)2.1.1 算法设计分析 (5)2.1.2 数据结构分析 (8)2.1.1 流程框图 (9)2.2 代码编写 (9)2.2.1 工具类 (9)2.2.2 载入类 (11)2.2.3 蛇类 (12)2.2.4 食物类 (13)2.2.5 地图类 (14)2.2.6 运行类 (15)3. 游戏测试 (15)3.1 载入界面测试 (16)3.2 简单模式测试 (16)3.3 普通模式测试 (16)3.4 困难模式测试 (17)4. 问题分析与解决 (19)5. 总结 (20)摘要贪吃蛇游戏作为一款简单游戏,是手机游戏的代表,在十多年前风靡全世界,时至今日,贪吃蛇游戏任然活跃的网络的各个角落。

本次编写的便是一款经典的贪吃蛇游戏,任务确定为实现贪吃蛇游戏过程。

作为游戏的组成,通过必要的图形,文字界面来引导游戏者参与到这款游戏中,更有效的吸引游戏者的兴趣,为了拓展游戏者对高分和刺激的追求,设定各种难度的关卡也成为了游戏的必需品,贪吃蛇游戏的编写共有八个类,其中,主要包括游戏的控制与游戏界面的建立两个方面,对于前者,需要通过控制台来获取输入,而对于后者,要求应用合适的数据结构和算法,通过编写本次课程设计,对理论知识与实际作品之间的关系有了更加深刻影响。

关键字:贪吃蛇,界面,难度控制,数据结构1 课题析与方案选择1.1课题分析本次设计为贪吃蛇游戏,一款游戏就必须要与使用者拥有良好的交互界面,使用C++对DOS界面显示的处理需要细致和精细,在游戏过程中,那么就会有游戏载入界面,游戏进行界面,和结束界面,在输入方面,这款游戏采用上下左右四个按键进行控制,需要用到回车键进行选择确定,而游戏的目标,则是获取更高分数,挑战更高难度。

功能设计框图1.2方案选择1.1.1软件选择本次编写软件为CODEBLOCKS 16.011.1.2设计选择通过分析,将游戏分为输入,游戏运行,输出三大部分,对于每个部分需要用不同的类进行实现和联系,大概将其分为五个类,分别为工具类,载入类,蛇体类,游戏界面类和运行类。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
图3-2蛇与食物的相接
3.2.3
开始游戏后的重点是如何用键盘来控制蛇的移动并传递到函数中去以及判断蛇是否死亡。
如图3-3所示。
(1)左(2)下(3)右(4)上
图3-3键盘的上下左右键的效果
其次来解释一下如何判断蛇的死亡,由于蛇的身体是由点坐标数组构成的,因此判断蛇是否死亡其本质就是判断蛇头的坐标是否与游戏边框相同或者蛇头坐标是否与蛇自己的身体相同。
if(table.GetSnake()->IsHeadTouchBody(table.GetSnake()->GetPos()[0].x,table.GetSnake()->GetPos()[0].y) &&
table.GetSnake()->GetStateArray()[0] != M_NONE)
void SheelDraw(HDC hdc)//绘制墙,白色底平面,绘制分数板,绘制分数打印墙
蛇的函数:
CSnake::CSnake(int x_pos,int y_pos,int len)//蛇的构造函数
int CSnake::ChangeDirect(MoveState d)//改变蛇的运动方向
{
uGameState = GAME_STATE_END;
::KillTimer(hWnd,0);
}
DrawGame();
}
死亡界面
图3-4贪吃蛇的死亡
3.2.5
这里的游戏设置主要是指游戏的等级的控制。前面在变量声明中已经看到,关于这三个量,我们已经予以了定义,只需要在按下相应键盘或鼠标消息的时候,将变量值进行改变,再利用这些值控制相应功能的运行。
1.3
本程序经过调试,可以在XP系统下编译运行,也可以在Vista下运行,界面稍有不同,但不影响运行结果。

2.1
2.1.1
根据分析,贪吃蛇这个程序一共要实现如下几个功能,包括游戏方面开始游戏、停止游戏,设置游戏级别(速度),设置图片等。具体的程序结构如下面的图1-1所示。
图2-1贪吃蛇结构图
2.1.2
3.2
3.2.1
贪吃蛇游戏的游戏界面包括背景图片、蛇身体的绘制、蛇移动范围的绘制等等。其中贪吃蛇的身体用什么方法绘制,才可以使得其在游戏过程中可以实现“吃”的功能是很重要的。因此在游戏界面的初始绘制时就必须考虑到游戏时可能遇到的问题。
导入位图以及菜单工具条后,游戏开始一段时间后(XP系统下)的界面显示如图3-1所示
}
其中在构造函数CYuShuoView::CYuShuoView()中已经将m_yseffectctrl的初值设置为1。

4.1
程序开始运行后会进入游戏界面,但是不会立即进行游戏,单击菜单的“开始”才会开始游戏。在游戏开始前,玩家可以根据自己的喜好,通过菜单或者工具栏设置游戏等级等。
case IDM_PRIMARY:
g_iTime = 50;
g_iCount = 1;
iScore = 0;
g_NoFood = TRUE;
g_hBlock = TRUE;
StartGame();
g_hTimer = SetTimer(hWnd,0,g_iTime,NULL);
}
break;
case IDM_HARD:
{
if(g_hTimer != 0)
void CSnake::Move()//保存蛇身体各部分的形状、根据新旧状态特性取正确的状态
void CSnake::AddBody(int n)//保存位置、保存蛇的状态信息、创建并初始化增长后的蛇的存储数据空间
void CSnake::SetHeadPos(int x,int y)//设置蛇头的位置
{
KillTimer(hWnd,0);
}
g_bStart = TRUE;
g_bKey = TRUE;
g_bMove = false;
g_iTime = 50;
g_iCount = 2;
iScore = 0;
g_NoFood = TRUE;
g_hBlock = TRUE;
StartGame();
g_hTimer = SetTimer(hWnd,0,g_iTime,NULL);
if(table.GetData(table.GetSnake()->GetPos()[0].x,table.GetSnake()->GetPos()[0].y) ==TB_STATE_SBLOCK)
{
uGameState = GAME_STATE_END;
::KillTimer(hWnd,0);
}
2.在链接过程中,出现了nonincremental update requires all .SBRfiles的错误提示,经上网搜索后,得到的解决方法是:将debuge文件夹删除后再重新编译链接一次,问题解决。
}
break;
四.心得体会
错误调试与分析
1.在编写代码的过程中,我们遇到了一个问题,在函数int CSnake::ChangeDirect(MoveState d)中,开始我们是把此函数写成一个空函数,但是出现了问题,但是改成了Int返回值后,问题不再出现,原因是ChangeDirect在定义是就定义为了一个int型的,所以若在此处用空的返回值,则不匹配。
bool CTable::AddFood(int x,int y)//添加食物
bool CTable::ClearFood(int x,int y)//清除食物
CSnake *CTable::GetSnake()//获得蛇
int CTable::GetData(int x,int y)//活得数据
void CTable::SnakeMove()//蛇的运动
根据分析后的贪吃蛇结构设计出相应的贪吃蛇流程。贪吃蛇的内容主要包括:游戏开始,随机出现食物。
图2-2贪吃蛇流程图

3.1
根据程序的结构,将贪吃蛇需要实现的功能细化成为相应的函数。
3.1.1
主函数:
void StartGame()//开始游戏
void GameAreaDraw(HDC hdc)//绘制游戏空间,包括空地,水果和毒果等
{
if(g_hTimer != 0)
{
KillTimer(hWnd,0);
}
g_bStart = TRUE;
g_bKey = TRUE;
g_bMove = false;
g_iTime = 100;
g_iCount = 1;
iScore = 0;
g_NoFood = TRUE;
g_hBlock = TRUE;
(1)应用MFC单文档制作
(2)能够记录游戏成绩
(3)可根据玩家要求设置游戏速度(级别):初级,中级,高级
(4)可以根据个人喜好更换背景图片,食物图片,障碍物图片,结束图片等
1.1.2
贪吃蛇是家喻户晓的益智类小游戏,选择这个题目一是为了将自己的所学知识加以运用,二是一直以来贪吃蛇这个游戏就深深地吸引着我们,它的制作方法对于以前的我们而言都是很神秘的。我们希望通过自己的所学知识把它剖析开来,真真正正的了解它的本质和精髓。虽然我们的编程能力不是很强,但是我们有信心,在这次学习中我们将从实践和实际的项目中提高自己的编程能力。因此我们选定了这个题目。
StartGame();
g_hTimer = SetTimer(hWnd,0,g_iTime,NULL);
}
break;
case IDM_MIDDLE:
{
if(g_hTimer != 0)
{
KillTimer(hWnd,0);
}
g_bStart = TRUE;
g_bKey = TRUE;
g_bMove = false;
{
//刚开始设置为首尾在一起,故由此判断,要第二次与身体碰撞才失败
uGameState = GAME_STATE_END;
::KillTimer(hWnd,0);
}
if(table.GetData(table.GetSnake()->GetPos()[0].x,table.GetSnake()->GetPos()[0].y) == TB_STATE_BLOCK)
软件设计报告
学院:
华北电力大学科技学院
专业班级:
软件10K1
学生姓名:
张飞
学生学号:
101909020122
指导教师:
乔玲玲
提交时间:
成绩:
设计题目:贪吃蛇
目录
一.需求分析
二.概要设计
三.详设计
四.心得体会
一.需求分析
1.1
1.1.1
利用MicrosoftVisual C++制作一个贪吃蛇的小游戏,要求:
图3-1游戏初始界面显示
3.2.2
确定用点数组存储贪吃蛇以后,贪吃蛇的食物如何达到随机出现,并且能够按照网格式与蛇头无偏差相接就是一个亟待解决的问题。
随机出现应采用rand()函数来实现,而食物与蛇头无偏差相接则利用坐标来解决。再由食物坐标(X,Y)与蛇头坐标是否相同判断蛇是否“吃”到了食物。
在下面的图3-2中,我们可以看到,蛇的身体是与出现的食物在一条直线上的,完全可以达到相接的目的。
void CSnake::Initial()//蛇的初始化(坐标位置、运动状态、位图显示状态
桌面函数:
CTable::CTable()//桌面的构造函数
void CTable::InitialTable(int w,int h)//初始化桌面函数
bool CTable::AddBlock(int x,int y)//添加障碍物
相关文档
最新文档