📄 shark.java
字号:
package shark;
import java.awt.*;
/**
* 实现鲨鱼的显示、移动、下潜、以及返回鲨鱼鱼鳍的顶点坐标值等功能
*/
public class Shark {
private Polygon fin = new Polygon(new int[] { 0, 0, 30 }, new int[] { 60,
30, 60 }, 3); //定义多边形,模拟鲨鱼鳍
private SharkAttack applet = null;
private int deltaX = 4; //每次位移量
public Shark(SharkAttack _applet) {
applet = _applet;
}
public void moveUp() { //上移
fin.translate(0, -6);
}
public void moveDown() { //下移
fin.translate(0, 6);
}
public void turnLeft() { //左移
fin.xpoints[1] = fin.xpoints[2];
deltaX = -Math.abs(deltaX);
}
public void turnRight() { //右移
fin.xpoints[1] = fin.xpoints[0];
deltaX = Math.abs(deltaX);
}
public void dive() { //下潜
if ((fin.ypoints[2] - fin.ypoints[1]) > 0) {
if (deltaX > 0) {
fin.xpoints[2] -= 5;
} else {
fin.xpoints[0] += 5;
}
fin.ypoints[1] += 5;
}
}
public void rise() { //上浮
if ((fin.ypoints[2] - fin.ypoints[1]) < 40) {
if (deltaX > 0) {
fin.xpoints[2] += 5;
} else {
fin.xpoints[0] -= 5;
}
fin.ypoints[1] -= 5;
}
}
public void move() { //左移或右移
if (fin.xpoints[0] > applet.getSize().width) {
turnLeft();
}
if (fin.xpoints[0] < 0) {
turnRight();
}
fin.translate(deltaX, 0);
}
/**
* 如果鲨鱼鳍完全没入水面以下,则返回鱼鳍的顶点坐标值;否则返回无效坐标值
*/
public Point getTip() {
if ((fin.ypoints[2] - fin.ypoints[1]) < 4) {
return new Point(fin.xpoints[1], fin.ypoints[1]);
} else {
return new Point(-1, -1);
}
}
/**
* 鲨鱼鳍(多边形)重绘
*/
public void paintComponent(Graphics g) {
g.setColor(Color.lightGray);
g.fillPolygon(fin);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -