摘 要
随着科技的发展,现在手机的功能不仅仅是简单的接打电话,收发短信,更多的用户希望在空座闲暇之余玩玩可随时携带的仪器休闲娱乐,因此,为了迎合众多用户的需求,并适应现在手机,我们开发出一个适合各个年龄的贪吃蛇小游戏。
贪吃蛇,之所以取这样的名字,其中用意很明显,贪吃蛇其实并不贪,他是人不断向前追求的象征,就像现代人们只有不断向前,才能得到自己想要的,而食物也是随机出现的,就像现在社会存在的机会很多,而我们要有目标才会成功。
本游戏采用JavaGUI技术来实现贪吃蛇的小游戏,主要实现蛇头获取食物,计分数,计关数等功能,使用JAVA语言,应用GUI的设计模式来设计系统,使系统结构清晰,运行速度快、稳定和安全,并且易于开发和维护。开发工具采用强大的Ecplise,从而开发出此款小游戏
关键词:JAVA 贪吃蛇 Ecplise
第一章 概 述
贪吃蛇游戏是一款经典的小游戏,由于它简单有趣,因而得到了广泛的流行,男女老少都十分适合。俄罗斯方块主要是以随机方块的生成,方块的旋转,方块的移动,方块的消除以及游戏区域的不断刷新为一体,涵盖了贪吃蛇游戏的整个运行流程。现在越来越多的游戏涌入我们的视野,丰富和影响着我们的生活。选择和做为题目的主要原因是做游戏这个流程业务比较符合我以后的学习编程的工作发展方向。从技术上来讲,贪吃蛇的设计工作复杂且富有挑战性,它包含的内容多,设计的知识广泛,与图形界面的联系大,包括界面的显示和不断刷新等,在设计的时候,要运用到各方面的知识,这对于我的编程逻辑以及专业认知是有很大帮助的。
通过该游戏,游玩者可以体验到简易又易于上手的游戏机制,同时不断加速的方块下落也在考验着游玩者的脑力,为游玩者提供娱乐的同时,可一定程度地锻炼自己的反应,是被不少人称为的一款“益智游戏”。
本次设计的贪吃蛇游戏功能齐全,包括蛇吃食物、蛇身碰撞,所得分数,所过关数,蛇碰墙壁等游戏功能,真正实现便捷的,简单的游戏。
贪吃蛇游戏需求分析
2.1主要事件的监听接口
2.2主要成员变量
2.3主要方法
贪吃蛇游戏总体设计
首先我们绘制窗口,然后我们进行所需要的网格绘制,之后我们进行准备工作,创建一个所有所需要的父类,之后是游戏工具类的编写,然后我们画出蛇的头部,然后让蛇头简单的移动,然后添加键盘监视器,用键盘控制蛇的移动,当蛇头撞墙时的越界处理,之后为蛇头添加蛇身,绘制完蛇,再来创建食物的随机生成,和当食物被蛇吃掉后的位置随机生成,当蛇吃掉食物之后蛇身体会增长,当食物被吃掉一个就会得一分,将分数面板画在窗口,然后绘制暂停和开始游戏的提示语,之后设置游戏通关的判定,由于图片是绘制的所以会闪烁,所以我们利用双缓存问题来解决,之后在添加游戏关卡,从而形成一个完整游戏其中所运用了数据类型,判断语句,循环结构,集合,简单窗口的创建,图形图片的绘制,双缓存技术,键盘监听事件,物体碰撞的判断
功能:首先进行画面设计进行绘制窗口,分为游戏界面,再然后进行蛇的构造,在进行食物的构造,在游戏的过程中,进行蛇的移动的功能,蛇吃食物,和食物的重新生成的功能,和蛇的死亡判定,和在游戏中相关提示语的绘制,和进行关数的参加,和通关条件的判断。
3.4.1整个游戏分为两个模块来设计,分为游戏主界面模块和游戏控制模块
第四章 详 细 设 计
Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——Eclipse Platform、JDT、CDT和PDE。JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,Eclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。它提供建造块和构造并运行集成软件开发工具的基础。Eclipse Platform允许工具建造者独立开发与他人工具无缝集成的工具从而无须分辨一个工具功能在哪里结束,而另一个工具功能在哪里开始。
Eclipse SDK(软件开发者包)是Eclipse Platform、JDT和PDE所生产的组件合并,它们可以一次下载。这些部分在一起提供了一个具有丰富特性的开发环境,允许开发者有效地建造可以无缝集成到Eclipse Platform中的工具。Eclipse SDK由Eclipse项目生产的工具和来自其它开放源代码的第三方软件组合而成。Eclipse项目生产的软件以GPL发布,第三方组件有各自自身的许可协议
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。
创建一个窗口方法,在其中设置长宽,设置其在中心区域,设置其是否可见,在利用if语句在窗口中画出横线与竖线,之后在窗口中形成网格的绘制
(1)相反的方向
和上一次移动的方向相反的方向成为反方向,这种输入应该忽略,这样可以防止蛇从自己的身体穿过
(2)无效方向
在蛇的这一次移动之后和下一次移动之前这个时间间隔内输入多个非相反的方向,只有最后一个是有效的,其他方向都是无效的方向
(3)添加键盘监视器,利用W,S,A,D控制蛇移动的方向
4.2.3食物的随机生成:
利用Random生成随机数,利用if语句食物随机在网格内生成,当被吃掉后,继续获取生成食物的方法,然后食物随机生成
4.2.4蛇头与蛇身体的碰撞
利用if语句判断,获取蛇头的坐标和蛇身体坐标,当蛇头与蛇身的坐标相同时,则表示蛇头与蛇身相撞,则提示游戏失败,按空格游戏重新开始
4.2.5游戏的开始暂停和提示语
添加键盘监视器,利用switch开关语句当按下空格的时候会暂停游戏并且弹出提示语,在按下空格会开始游戏
4.2.6双缓存解决画面闪烁问题
由于窗口中的元素是绘制出来的,每次重新绘制的时候要一个一个的绘制,所以我们要重新创建空的图片,将绘制的元素放在空图片由空图片一次性绘制到窗口,这样游戏窗口就会不闪烁
4.2.7 游戏越界后的处理
获取蛇头的坐标当蛇头的坐标大于窗口的坐标时,此时我们利用if语句,当坐标大于窗口的坐标时,蛇头会从相反的方向出来
4.2.8蛇的移动
蛇向前移动一步,可以看作蛇头前面增加一个节点,蛇的尾巴上少了一个节点
4.2.9存储蛇身的数据
因为由于要区分蛇头与蛇尾,因此这个数据结构是有序的,另一方面我们需要经常的获取最后一个节点,所以LinkedList最合适,因为有getLast()方法
4.2.10 吃到食物的判定
通过判定坐标是否重合来判断蛇头是否和食物重新重合就可以,因为蛇的身体都是蛇头走过的地方,蛇吃掉食物后,身体就会变长
4.2.11 测定结果
程序代码
https://mp.csdn.net/mp_download/manage/download/UpDetailed