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

📄 explosion.java

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

import java.awt.Graphics;


/**
 * <p>Title: UFO_Play</p>
 *
 * <p>Description: 基于applet的攻击UFO的小游戏中的UFO爆炸类</p>
 *
 * <p>Copyright: Copyright (c) 2007</p>
 *
 * <p>Company: 鹿児島大学</p>
 *
 * @author 柴 智
 * @version 1.0
 */
public class Explosion extends Piece {
    //Explosion类的构造函数
    public Explosion(UFO_Canvas ufo_canvas, int x, int y) {
        //爆炸对象属性值的初始化
        super(ufo_canvas);
        w = 30;
        h = 30;
        px = opx = x;
        py = opy = y;
        active = true;
        img = ufo_canvas.getMissile_explosion();
    }

    int seq = 0;
    int seq2 = 0;
    //爆炸对象的绘制函数
    public void draw() {
        //设置绘制的区域
        set_draw_rectangles(ufo_canvas.getPaint_area(), ufo_canvas.getNew_area());

        // 清除旧的图像
        Graphics bkd_g = ufo_canvas.getBackdrop().getGraphics();
        bkd_g.clipRect(ufo_canvas.getPaint_area().x, ufo_canvas.getPaint_area().y, w, h);
        bkd_g.drawImage(ufo_canvas.getBgimg(), 0, 0, ufo_canvas.getWindow_size().width,
                        ufo_canvas.getWindow_size().height, ufo_canvas.getBaseApplet());

        // 由于爆炸用的图片是一个序列图,要进行剪切再使用
        //根据seq2的值选择相应的部分
        if ((++seq2 % 4) == 0) {
            seq = ++seq % 5;
        }

        // 爆炸图最后的部分显示后,将active属性值设为false,并将其清除
        if (seq == 4) {
            active = false;
        }

        // 将新的区域绘制到缓冲中
        bkd_g.clipRect(ufo_canvas.getNew_area().x, ufo_canvas.getNew_area().y, w, h);
        bkd_g.drawImage(img, ufo_canvas.getNew_area().x - w * seq, ufo_canvas.getNew_area().y, ufo_canvas.getBaseApplet());
        bkd_g.dispose();

        // 将变化绘制到缓冲中
        Graphics bg = ufo_canvas.getBuffer().getGraphics();
        bg.clipRect(ufo_canvas.getNew_area().x, ufo_canvas.getNew_area().y, w, h);
        bg.drawImage(ufo_canvas.getBackdrop(), 0, 0, ufo_canvas.getBaseApplet());
        bg.dispose();

        // 将缓冲绘制到屏幕上
        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();
    }

    //爆炸对象的清除
    public void erase() {
        //设置绘制的区域
        set_draw_rectangles(ufo_canvas.getPaint_area(), ufo_canvas.getNew_area());

        // 清除旧的图像
        Graphics bkd_g = ufo_canvas.getBackdrop().getGraphics();
        bkd_g.clipRect(ufo_canvas.getPaint_area().x, ufo_canvas.getPaint_area().y, w, h);
        bkd_g.drawImage(ufo_canvas.getBgimg(), 0, 0, ufo_canvas.getWindow_size().width,
                        ufo_canvas.getWindow_size().height, ufo_canvas.getBaseApplet());
        bkd_g.dispose();

        // 对缓冲和屏幕执行同样的操作
        super.erase();
    }
}

⌨️ 快捷键说明

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