1、贪食蛇游戏贪食蛇游戏 Java 程序设计程序设计 贪食蛇游戏 Java程序设计 姓名 小明 完成时间 2014-10-31 Version 1.0 目录 一、项目目的 3 二、功能描述 3 三、功能细化 3 四、具体实现 4 五、程序调试 8 六、风险点分析 10 七、其他备注 10 下面附上程序文件 10 一、项目目的 通过实现贪食蛇游戏程序设计,来回顾 Java编程的一些基本方法和思想,复习一些基础语法的使用,另外,本程序设计还涉及到部分的算法,兼顾了算法的学习。通过本程序设计,复习 Java编程,打好基础。二、功能描述 1.开始游戏 2.查看历史成绩 3退出游戏 三、功能细化 1.开始游
2、戏:点击主界面的“开始游戏”按钮,进入游戏界面,通过方向键来控制蛇头的移动,游戏界面中随机初始化一个食物,蛇头每吃一个食物会增加一节身长,另外吃到食物后还会随机再出现一个不与蛇身重叠的食物,蛇每吃到五个食物移动速度要提升一个等级,当蛇碰到蛇身或者蛇碰到四周边界的时候,游戏结束。2.查看历史成绩:每进行一次有效的游戏(指不在游戏途中关闭),就会记录一次玩家的姓名和成绩,通过读写文本和排序,将历史成绩按得分从高到低排列显示在成绩排行界面中。玩家可以直接在游戏开始前就查看之前玩家的历史成绩排行。也可以在进行游戏后输入自己的名字,查看自己在榜中的排行。3退出游戏 点击退出游戏按钮,退出游戏窗口,结束整
3、个程序。四、具体实现 1.各个类的介绍以及类图 1)MainFrame类:程序启动时进入的第一个界面,其包括了三个内部类:MyActionListener,MyActionListener_che,PanelImageTest.其中,前两个类继实现 ActionLiestener 接口,唯一的目的是为了传参,以实现在各个窗口跳转时对前一个窗口的控制。而 PanelImageTest继承自 JPanel 类,是为了在主界面上设置一张背景图片。2)GameFrame类:在主界面中点击“开始游戏”按钮,就会实例化该游戏界面,这个类是整个游戏程序的核心,贪食蛇游戏的算法和具体实现就写在该类中。本程序中
4、,采用“画布”来画蛇,另 MyCanvas 继承 Canvas 类并重写其方法来实现游戏画图。3)OverFrame类:当在游戏界面进行游戏失败的时候,就会实例化这个类,这就是跳出来的一个提示窗,提示玩家游戏结束,并让玩家输入姓名,输入完毕后单击“确定”按钮,就会实例化 ScoreFrame,即成绩排行界面,玩家可以在该界面中看到自己的成绩和排名。另外,还实现了重新开始游戏的功能。4)ScoreFrame类:这是历史成绩排行的界面,可以从主界面或者游戏界面跳转过来,也可以从该界面跳转回主界面,通过读写文本以及排序,实现了保存玩家成绩并排名的功能。5)类图:如图 4.1所示为类图结构 图 4.1
5、类图 2.游戏界面跳转 图 4.2游戏界面跳转示意图 如图 4.2所示,为游戏界面跳转的示意图,其中,MainFrame,GameFrame,ScoreFrame 分别表示程序主界面,游戏界面,和分数排行界面。另外 OverFrame指的是游戏失败时候跳出的窗口界面,programe exit 指的是结束程序运行。3.关键代码 1).GameFrame中实现蛇身增长以及蛇身跟着蛇头移动的算法 2).MainFrame中实现参数传递的内部类(为在窗口跳转时控制之前窗口)3).MainFrame里面为实现添加背景图片而重写 JPanel 类的内部类 五、程序调试 1.主界面示意图如图 5.1所示
6、图 5.1程序主界面 2游戏界面如图 5.2 所示 图 5.2游戏界面 3.游戏失败时如图 5.3所示 图 5.3游戏失败跳出边框的界面 4.历史成绩排名界面如图 5.4所示 图 5.4成绩排行界面 其中,本次游戏玩家的信息行会显示为红色。六、风险点分析 1.整个程序各个界面都是采用固定的 size和 location,这样当移动窗口时,界面之间的跳转就显得很突兀。并且改变窗口大小就会破坏原来的感观。这样设计导致不够灵活。2.调试过程中,有时候有小概率会出现游戏屏幕闪烁,造成不愉快的用户体验,具体原因还未发现。闪屏问题已经通过双缓存技术解决.3.成绩排行是由简单的 IO流写的,由于对 IO流不够熟悉,所以做得比较粗糙,不能输入中文字符,必须是英文字符否则会报错,另外可能还存在一些隐藏的尚未发现的问题。4.游戏功能过于单一,可以设置一些其他游戏功能,例如选择游戏场景,这在后续改进的时候是可以实现的。七、其他备注 下面附上程序文件
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1