# JavaFishlordGame **Repository Path**: gaopengfei/JavaFishlordGame ## Basic Information - **Project Name**: JavaFishlordGame - **Description**: Java语言实现的简易捕鱼达人游戏,实现了鱼的游动、捕鱼,计分等功能。 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 50 - **Forks**: 29 - **Created**: 2015-04-12 - **Last Updated**: 2025-06-16 ## Categories & Tags **Categories**: games **Tags**: None ## README # Java项目——捕鱼达人 # ## 需求分析 ## - 在鱼池中有很多鱼,鱼各自游动。 - 有一张渔网,随鼠标移动,点击鼠标可以抓取渔网中的鱼。 - 抓到鱼进行计分。 ## 功能分析 ## 业务对象模型(“找对象”,理清对象之间的关系)---->数据模型(用合理的数据模型描述对象)----->类的设计(根据对象关系和数据模型设计类)。 ### 业务对象模型——找对象 ### 窗口、鱼池、多条鱼、渔网。 ![对象之间的关系](http://i.imgur.com/4d4ZsyU.jpg) 这种关联关系可以使用类的属性来描述。 ## 数据模型 ## ![绘图的位置](http://i.imgur.com/gIlntWk.jpg) 鱼在屏幕上移动实际上就是矩形的左上角的坐标发生了变化。 **如何实现捕鱼?** 渔网的范围和鱼的范围重叠。——判断一个点是否在矩形范围之内即可。同理:打飞机的游戏也可以依照这种算法实现。 ![怎样判断是否捕鱼成功](http://i.imgur.com/wrEmKPz.jpg) ## 类的设计 ## ![类模型](http://i.imgur.com/CrxpLnr.jpg) - 由于每条鱼的行为不一样,所以要继承线程类,实现并发——屏幕上有多条鱼各自移动。 - 鱼池继承JPannel,并引入自己的新的属性:鱼和鱼池。 ## 类的详细设计 ## ![鱼类的详细设计](http://i.imgur.com/2cdfwgh.jpg) 各个属性的说明如下: - step:鱼的移动速度 - Images:鱼图片的数组 - Image:当前正在显示的鱼的图片 - Index:帧 **如何实现诸如鱼的摆尾这样的动画效果?** 我们只需要将鱼的所有运动的帧放入到一个图片数组,逐帧改变背景图片,由于人眼的视觉暂留,就会产生动画效果。 **如何循环显示不同的图片** 不断对Index进行自增取余运算,就类似于数据结构中的循环队列那样处理即可。