大鱼吃小鱼Java课程设计

Java实现:大鱼吃小鱼(团队)
一、团队成员
常云鹏(组长):排行榜状态栏的设计(文件)及部分界面的设计,背景音乐设计
赵昱昊:主类的实现,相关方法的设计及调用
林可嘉:定义玩家及电脑控制的鱼

二、设计目的 
 通过用Eclipse、Netbeans来设计“大鱼吃小鱼”这个游戏,来熟悉 并学会运用Eclipse、Netbeans软件的同时巩固我们专业课java知识。

三、需求分析
1.对游戏中所需类进行设计;  
2.写出源程序文件,对游戏进行调试和分析,使程序能够成功“跑起来”。

四、功能实现
窗体背景,窗体按钮的监听
鱼设计:主角鱼与电脑鱼
主角鱼:随鼠标移动,也可以用键盘操作
玩家鱼:随机在窗体两侧生成,每个鱼的坐标和速度随机生成,随机向界面中添加已有玩家鱼
背景音乐:主界面添加按钮实现音乐的开或关,吃到鱼后会有特殊音效
排行榜:玩家可以保存自己的游戏成绩,由高到底排序
碰撞检测:当玩家鱼与玩家鱼碰撞时,触发isHit函数,通过比较图片坐标是否重叠判断是否发生碰撞
游戏失败:当碰撞时,若电脑鱼等级高于主角鱼,则主角死亡,游戏结束:或者游戏时间结束,游戏也结束
升级效果:当积分达到一定程度,则改变玩家鱼等级,图片放大
状态栏:在界面显示当前得分,可吃鱼的图片,主角鱼的等级等信息;玩家可以根据喜好调整状态栏的位置
挑战模式:加快鱼的出现速度
主要功能图:
大鱼吃小鱼Java课程设计_第1张图片

五、程序分析
整体思想:开始界面、登陆界面、主角鱼、电脑鱼、背景音乐、排行榜、状态栏。
程序主要由八个类组成,分成三个包:fish(Fish[1,2,3,4,5],MyFish),fishgame(FishGame),view(Music,PlayerInfo,RankView,Start,StartManager)。
另外fish文件夹里存放着程序所需的图片和音乐。

UML类图:
大鱼吃小鱼Java课程设计_第2张图片

FishGame:
主类:继承JFrame窗口,加载开始界面的图片,同时继承KeyListener, ActionListener, MouseMotionListener接口,用鼠标和键盘同时实现对主角鱼以及按钮的监听。
1.创建几乎全部的属性,是最重要的创建之一:
大鱼吃小鱼Java课程设计_第3张图片

2.创建图片数组储存主角鱼和电脑鱼的图片,鱼的移动靠图片数组和位置的变化实现:
大鱼吃小鱼Java课程设计_第4张图片

3.设计主界面功能:
大鱼吃小鱼Java课程设计_第5张图片

4.进入游戏后重绘主角鱼,并且记录主角鱼的得分,判断主角鱼的升级:
大鱼吃小鱼Java课程设计_第6张图片

Start:
登录界面:绘制背景图片,进度条的加载调用默认方法:

RankView:
实现排行榜,排行榜也加载有自己的背景图片,通过读取储存在List集合里玩家的信息显示在排行榜中。
代码及运行截图:
大鱼吃小鱼Java课程设计_第7张图片

大鱼吃小鱼Java课程设计_第8张图片

StartManager:
显示状态栏
大鱼吃小鱼Java课程设计_第9张图片

大鱼吃小鱼Java课程设计_第10张图片

背景音乐:
大鱼吃小鱼Java课程设计_第11张图片

游戏提示:
大鱼吃小鱼Java课程设计_第12张图片

六、遇见的问题及解决办法
1.问题:刚开始在设计界面时会出现一个窗口中添加新窗口时,鼠标监听不能添加到新窗口的组件上。
解决办法:后面发现自己定义的监听方法是在同一个类中,所以鼠标监听的方法需要重写,之后就解决了。
大鱼吃小鱼Java课程设计_第13张图片

但还会出现按钮不能立即在新窗口显示出来,有开和关两个按钮,当鼠标移过去时关按钮才会显示。
2.问题:音乐无法调用mp3格式
解决办法:添加了一个jar包,方法是通过百度学习的,之后就可以成功调用mp3格式的音乐了。
3.不足:在游戏时,状态栏不能改变为透明,当鱼运动到状态栏后面的区域时会出现不能看见鱼的情况。
七、小结
本项目把程序实现的每一个具体功能作为类,然后用类来构成对象。 优点是代码可重用、系统易扩展。  
通过使用多线程,程序设计者可以分别用不同的线程完成特定的行为,提高系统的运行效率。

你可能感兴趣的:(大鱼吃小鱼Java课程设计)