# Big-Fish-Eat-Small-Fish-Java-Version
**Repository Path**: ttz_ztt/Big-Fish-Eat-Small-Fish-Java-Version
## Basic Information
- **Project Name**: Big-Fish-Eat-Small-Fish-Java-Version
- **Description**: easy game
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: main
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-01-26
- **Last Updated**: 2022-01-26
## Categories & Tags
**Categories**: Uncategorized
**Tags**: Java, Bash
## README
##
运行方法 ##
进入FINAL目录下,使用shell命令:
```bash
./run.sh
```
来运行整个程序,由于脚本执行需要可执行权限,所以在shell内部添加了chmod命令:以下是run.sh的部分内容:
```shell
echo "脚本需要管理员密码来获取可执行权限,若已获得请忽略!"
sudo chmod a+x run.sh
```
## 项目依赖环境 ##
- 所需包
```java
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.*;
import java.awt.*;
import java.util.List;
import java.util.ArrayList;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.WindowConstants;
import javax.swing.event.MouseInputAdapter;
```
## 项目实现细节 ##
> 整体使用图片的方式进行显示,众所周知,所有的视频皆是由一张一张图片的快速切换所构成。
- 窗口使用的是JFrame建立,图像使用Image来创建,使用Graphics来创建画笔,来创建图像。
- 不断遍历各个资源借助Graphics添加在Image上,然后将Image添加在JFrame,当我们不断构图,则静态的图片达到了动态的效果。
- 使用JFrame内置的按键监听的内置方法addKeyListener,然后重写了keyPressed方法。来进行按键监听。
- 使用内置addMouseListener方法进行鼠标监听。然后重写了mouseClicked方法,进行鼠标监听。
- 所有的资源数据均存放在Common类中,左右移动的鱼是头朝向左右的两张图片,用户控制的鱼则有上下左右四张照片。
- 敌方鱼的生成,获取左右随机数,屏幕高度随机数,以及鱼种类随机数。来生成敌方鱼。
- 我方鱼采用按键监听来获取鱼的移动方向。然后加减移动速度来使得鱼的图片移动。
- 碰撞检测:遍历敌方鱼,然后检测敌方鱼与我方鱼所在矩阵是否有相交的部分,若是相交则进行判断。
- 若敌方鱼等级大于我方鱼 : 游戏结束
- 若敌方鱼等级小于我方鱼 : 吃掉
- 敌方鱼的死亡,当被我方鱼吃掉或者自动移动出范围,鱼从列表中被删除。
- 我方鱼的转向:通过改变Myfish类的Image的图片来实现鱼的转向。
- 然后构建不同的底图来实现游戏开始或者暂停以及游戏结束的图片。