看到CSDN首页有介绍Java编写的捕鱼达人的文章,于是在GitHub上搜了几个Java编写的开源的仿捕鱼达人的项目,准备学习一下编写思路。本文介绍其中比较简单的一个项目fishlord,GitHub地址为:https://github.com/tengqianan/fishlord,该项目逻辑比较简单,代码实现主要集中在一个文件中。项目下载方式参考之前写的在Eclipse中用git方式下载源码。
程序效果
首先看看程序的执行效果,如下图所示:
程序启动后,鱼在窗口右侧随机出现,从右往左游。网随着鼠标移动(简单程序,没有大炮),网的中心与鱼重叠,点击鼠标即将鱼捕到。每捕获一条鱼,左上角的积分就会变化,同时在窗口右侧会随机位置出现相同类型的一条鱼。
程序分析
从程序效果可以看出,本项目是捕鱼达人游戏的极度简化版,鱼没有那么多,也没有大炮等刀具。程序主要就四个类,如下图所示:
- Fishlord:main函数所在类,主要作用就是创建程序窗口,加载Pool控件。
- Pool:该类继承自jpanel控件,主要用途有:1)显示背景图片;2)显示网(Net类),网随鼠标移动;3)显示鱼(fish),程序默认初始化9条鱼;4)处理鼠标进入、进出、移动和点击事件;5)在鼠标点击事件中处理捕鱼动作;6)在控件左上角显示积分;7)每80毫秒触发重绘事件。
- fish:该类继承自thread类。程序资源中有多种类型的鱼,但是程序只用了前9种鱼,每种鱼有9种动作图片,保存在fishimages属性中,然后没50毫秒切换鱼的动作图片,当前动作图片保存在fishimage属性中,并在Pool的paint事件中绘制。鱼的初始x坐标是固定的,在窗口右侧,y坐标和移动速度在fish类的构造函数中随机产生。每当鱼被捕获或是游到了窗口左侧,则重新生成鱼的移动速度和y坐标,x坐标依旧在窗口右侧,鱼的种类不变。
- Net:主要记录网的图片及网的中心坐标。
本程序的实现比较简单,距离真正的捕鱼达人的功能还有差距。后续会接着分析功能比较齐全的项目代码。