下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java编写贪吃蛇游戏思路一、需求分析:游戏以典型贪吃蛇默认规则设计需要蛇可以按照给定日勺方向每隔一段时 间自动移动;方向键“、I”、“一”、“”可以控制蛇移动勺方向, 蛇每吃到一种食物后身体长度增长一格,原有食物消失,再随机生成一 种不再石头上勺新食物;石头即为地图,蛇吃到石头后游戏结束。为了使游戏更加具有娱乐性和挑战性,增设关卡,随着关卡级别勺升高, 蛇移动速度加快,蛇吃到食物勺难度加大,吃到一定数量勺食物即可过 关进入下一种关卡;为蛇吃到食物后添加声音效果,增设背景音乐,可 以控制背景音乐勺开关;为了区别与典型模式勺不同,游戏增长新勺规则模式,新勺模式规则中, 初始化勺蛇长度一定,蛇吃到
2、食物后,食物随机产生一种新勺食物,本 来勺食物通过蛇勺消化后变为石头固定在原处不能移动。二、设计思路:一方面考虑所需要勺总体框架贪吃蛇游戏主题应为蛇,需要创立蛇这个类命名为Snake,还要有食物 类命名为Food,石头类命名为Stone,显示面板类命名为DisplayPanel, 逻辑解决类命名为Logic以及主函数类命名为MainOfGreedySnake。搭建类与类之间勺关系蛇吃食物,食物在被蛇吃到后随机产生新勺食物,食物不能在石头上生 成,关系复杂,我们可以将这些关系在逻辑解决类Logic中搭建,这样即 减少了上面三个类之间勺耦合性,又以便后来对辅助功能勺添加。蛇,食物,石头需要在显示面
3、板中显示出来,而三者又在逻辑解决这个 类Logic中做逻辑关系运算,我们可创立自己勺显示面板类DisplayPanel, 用逻辑解决类Logic创立对象作为参数传递给显示面板,使得蛇,食物, 石头以及显示面板直接日勺关系更加简朴。添加简朴勺测试功能一方面需要创立主函数,主函数中创立逻辑解决类Logic勺实例对象,创 立自定义勺显示面板对象DisplayPanel,将逻辑解决类Logic勺实例对象 作为参数传递给显示面板DisplayPanel勺实例对象中,显示面板需要寄 托在Frame框架上,这就需要在主函数中创立一种JFrame对象,然后将 自定义勺显示面板添加到JFrame对象上。接着是在
4、每个类中添加一种测试用勺功能函数,简朴勺打印一条输出语 句,在蛇类Snake中,创立一种功能函数打印“蛇类被加载”,食物类, 石头类,逻辑解决类,显示面板类中添加同样勺功能,在逻辑解决类中 定义蛇,食物,石头对象,创立构造函数参数传入蛇,食物,石头类型 勺对象;自定义勺显示面板继承JPanel类,定义逻辑解决类勺对象,创 立构造函数传入逻辑解决类勺对象。通过调用类中勺功能函数来测试,保证她们之间已经建立联系。类中填充功能及参数一方面分析蛇:打的貌戚I一图 2-4.1我们把显示面板划分为格子,每个单位日勺蛇身占一种格子,食物,石头同样,通过抽取定义一种格子类命名为Square;蛇勺身体由多种格
5、子构成,需要一种链表集合存储,定义一种LinkedList类型勺集合命名为 snakeBody,存储类型为格子类型Square勺对象;蛇有一种长度,定义 一种int型勺变量Length存储长度,定义一种int型勺direction变量控制 蛇移动勺方向;定义一种boolean类型勺变量iseatfood,来标记蛇与否 吃到食物;定义一种boolean类型勺变量iseatstone来标记蛇与否吃到石 头;蛇勺功能有移动功能,创立功能函数move (),有关蛇移动,我们 可以让存储蛇身体勺集合snakeBody添加一种蛇头,去掉一种尾巴来实 现,蛇头添加勺位置又应当由蛇移动勺方向控制,因此在添加蛇
6、头之前 应当判断蛇头勺方向,如果蛇向上移动,direction应为1,我们让变化 之前勺snakeBody调用addFirst ()功能添加蛇头,里面勺参数应为变化 之前日勺蛇头日勺纵坐标减一种格子,向下,向左,向右原理相似。蛇已更改具有变化方向日勺功能,以便于背面控制蛇移动日勺时候变化方向,定义函数changeDirection (),传入int型日勺方向值。蛇还应当有判断与否吃到食物勺功能,定义功能函数isEatFood (), 判断蛇与否吃到食物只需判断蛇头勺坐标与否和食物勺坐标相似,这里 有一种小问题,蛇类中没有定义食物Food类型勺引用,判断时还要有食 物类型勺对象,为了减少蛇与食物
7、之间勺联系,不得不传入一种Food类型日勺参数。图:2-4.2蛇应当有判断与否吃到石头勺功能,由于石头是一种比较大勺集合, 若沿用判断与否吃到食物勺措施必将挥霍大量勺资源,在背面设计石头 勺时候我们可以用一种boolean类型勺二维数组来存储一组石头命名为 map,是石头设立这个坐标为true,不是则设为false,这样判断蛇与 否吃到食物就较为简朴,只需判断蛇头勺坐标作为石头数组时与否为 treu 即可。如图2-4.2 所示,也即是直接反回 mapsnakeBody.getfirst().getx()snakeBody.getfirst().getx()即 可。蛇勺另一种功能是判断蛇与否吃到
8、自己勺身体,需要定义一种功能 函数isEatBoody ()判断蛇与否吃到身体同判断与否吃到食物相似,只 需判断蛇头日勺坐标与蛇身日勺坐标与否相似,为了减少CPU日勺工作量,可 以稍微优化一点,判断蛇头与蛇身日勺坐标与否相似时从第4截身体开始 判断即可,由于不管蛇怎么移动都不会与第二截、第三截身体相撞。蛇要在显示面板中显示,按照面向对象勺思想,蛇要在面板中显示 身体,设计到勺两个对象,蛇、面板,显然显示这个动作蛇自身应当最 具权威性,蛇对自己勺属性最理解,就应当把显示蛇这个功能定义在蛇 这个类中,创立功能函数drawMe ()给它传递一种画笔Graphics g,从 蛇头到蛇身依次画出每个格子
9、。最后考虑到后来重新开始游戏,以及多种关卡勺问题,这里先定义 好一种蛇初始化勺功能函数init ()。有关蛇勺分析先到这里。另一方面是对食物勺分析:食物在游戏中自始至终只会有一种,只需定义一种Square对象即可, 命名为food;由于背面蛇吃到食物后要随机生成一种新勺食物,需要用 到Random类中日勺随机函数,这里事先定义好一种Random ran;拟定好参数后拟定功能函数,一方面应当是判断食物与否被吃掉,定义函数 isFoodEaten ();同 isEatFood 相似。另一方面食物被吃掉之后会随机产生一种新勺食物,定义函数 setFood (),产生新食物勺瞬间,旧食物已经消失,没有必要在去创立 一种food对象,只需将f
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年河北省邢台市桥西区三年级数学下学期期末教学质量检测试题(含解析)
- XF-T 3024-2026电动自行车充电及停放场所消防安全管理标准深度解读
- 2025年河北省廊坊市安次区数学三下期中联考试题含答案解析
- 年产12万吨功能性粉体材料及6万吨油田压裂砂生产线项目可行性研究报告模板-立项备案
- 2025年卫星导航抗干扰天线设计
- DB61-T 1869-2024小麦种质资源保存技术规范
- DB43-T 3466-2025辣椒品种耐徒长性鉴定技术规程
- 深度剖析弯道超车试题及答案
- 海底捞综合试题及参考答案分享
- MC考试常见题目及答案解析
- 新苏教版科学六年级上册1.2《燃烧与空气》教学设计
- 2026年春人教版小学六年级数学上册第2单元《分数乘法》完整教案
- 小学盲校英语三年级上册《Unit 3 This is my father》教学设计
- 2026年食品企业食品安全管理人员知识试题及答案
- 2026-2030中国汽车检测行业市场深度分析及竞争格局与发展前景展望研究报告
- 2026年海南中考(数学)真题试卷附答案
- 外墙涂料工程实施方案
- 2026年公安监管场所辅警考试试题(附答案)
- 员工职业素养提升与行为规范培训
- 2026年注册安全工程师化工实务真题及答案
- 解读2026年新修订《国有企业领导人员廉洁从业规定》全文
评论
0/150
提交评论