shark.java

来自「鲨鱼攻击猎物游戏 是一个Applet程序」· Java 代码 · 共 88 行

JAVA
88
字号
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 + =
减小字号Ctrl + -
显示快捷键?