⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 launcher.java

📁 一个完美的applet游戏
💻 JAVA
字号:


import java.awt.Graphics;


/**
 * <p>Title: UFO_Play</p>
 *
 * <p>Description: 基于applet的攻击UFO的小游戏中的导弹发射架类</p>
 *
 * <p>Copyright: Copyright (c) 2007</p>
 *
 * <p>Company: 鹿児島大学</p>
 * @author 柴 智
 * @version 1.0
 */
public class Launcher extends Piece {
    //Launcher类的构造函数
    public Launcher(UFO_Canvas ufo_canvas) {
        //导弹发射架属性值的初始化
        super(ufo_canvas);
        w = 12;
        h = 22;
        px = opx = ufo_canvas.getWindow_size().width / 2;
        py = opy = w / 2 + 1;
        active = true;
        img = ufo_canvas.getMissile();
    }

    //导弹发射架的移动函数
    public void move() {
        opx = px;
        opy = py;
        int dx = ufo_canvas.getMouse_x() - px;
        int abs_dx = Math.abs(dx);
        int step = 1;
        if (abs_dx > 10) {
            step = 5;
        } else if (abs_dx > 1) {
            step = abs_dx / 2;
        }

        if (dx != 0) {
            px += step * (dx / abs_dx);
            if (px < w / 2) {
                px = w / 2;
            } else if (px > (ufo_canvas.getWindow_size().width - w / 2)) {
                px = ufo_canvas.getWindow_size().width - w / 2;
            }
        }
    }

    //判断导弹发射架是否移动
    public boolean has_moved() {
        if ((px - opx) != 0) {
            return true;
        }
        return false;
    }

    //导弹发射架的绘制
    public void draw() {
        set_draw_rectangles(ufo_canvas.getPaint_area(), ufo_canvas.getNew_area());

        Graphics bg = ufo_canvas.getBuffer().getGraphics();
        bg.clipRect(ufo_canvas.getPaint_area().x, ufo_canvas.getPaint_area().y, w, h);
        bg.drawImage(ufo_canvas.getBackdrop(), 0, 0, ufo_canvas.getBaseApplet());
        bg.dispose();
        //根据导弹的active属性值进行相应的绘制
        if (ufo_canvas.getM().active()) {
            //导弹飞行时,发射架外观为一实心矩形
            ufo_canvas.getBuf_g().setColor(c);
            ufo_canvas.getBuf_g().fillRect(ufo_canvas.getNew_area().x, ufo_canvas.getNew_area().y, w, h);
        } else {
            //否则,发射架外观为一竖立的导弹
            bg = ufo_canvas.getBuffer().getGraphics();
            bg.clipRect(ufo_canvas.getNew_area().x, ufo_canvas.getNew_area().y, w, h);
            bg.drawImage(img, ufo_canvas.getNew_area().x, ufo_canvas.getNew_area().y, ufo_canvas.getBaseApplet());
            bg.dispose();
            // bg = null ;
        }
        //使用新的区域
        ufo_canvas.getPaint_area().add(ufo_canvas.getNew_area());
        //将缓冲绘制到屏幕上
        Graphics g = ufo_canvas.getBaseApplet().getGraphics();
        g.clipRect(ufo_canvas.getPaint_area().x, ufo_canvas.getPaint_area().y, ufo_canvas.getPaint_area().width,
                   ufo_canvas.getPaint_area().height);
        g.drawImage(ufo_canvas.getBuffer(), 0, 0, ufo_canvas.getBaseApplet());
        g.dispose();
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -