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

📄 piece.java

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


import java.awt.Rectangle;
import java.awt.Image;
import java.awt.Color;
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 Piece {
    UFO_Canvas ufo_canvas;

    int px, py; //新位置的x、y坐标
    int opx, opy; //旧位置的x、y坐标
    int w, h; //宽度,高度
    int vx, vy; //x和y方向的速度
    Color c; //颜色
    boolean active = false; //活动性
    Image img = null; //外观

    public Piece(UFO_Canvas ufo_canvas){
        this.ufo_canvas = ufo_canvas;
    }
    //位置的设定
    public void set_pos(int x, int y) {
        px = opx = x;
        py = opy = y;
    }

    //速度的设置
    public void set_vel(int x, int y) {
        vx = x;
        vy = y;
    }

    //高度和宽度的设置
    public void set_size(int x, int y) {
        w = x;
        h = y;
    }

    //颜色的设置
    public void set_color(Color c) {
        this.c = c;
    }

    //绘制区域的设置
    public void set_draw_rectangles(Rectangle o, Rectangle n) {
        int sh = ufo_canvas.getWindow_size().height;
        int x = px - w / 2;
        int y = (sh - py) - h / 2;

        int ox = opx - w / 2;
        int oy = (sh - opy) - h / 2;

        o.reshape(ox, oy, w, h);
        n.reshape(x, y, w, h);
    }

    //获取active属性值
    public boolean active() {
        return active;
    }

    //设置active属性值
    public void active(boolean s) {
        active = s;
    }

    //物体间的碰撞的监测
    public boolean collision(Piece p) {
        int dpx = Math.abs(px - p.px);
        int dpy = Math.abs(py - p.py);

        if ((dpx < (Math.max(w / 2, p.w / 2)) + 1) &&
            (dpy < (Math.max(h / 2, p.h / 2) + 1))) {
            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();
        //填充缓冲区
        ufo_canvas.getBuf_g().setColor(c);
        ufo_canvas.getBuf_g().fillRect(ufo_canvas.getNew_area().x, ufo_canvas.getNew_area().y, w, h);
        //使用新的区域
        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();
    }

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

        // 将背景幕拷到缓冲中
        Graphics bg = ufo_canvas.getBuffer().getGraphics();
        bg.clipRect(ufo_canvas.getPaint_area().x, ufo_canvas.getPaint_area().y, ufo_canvas.getPaint_area().width,
                    ufo_canvas.getPaint_area().height);
        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();
    }
}

⌨️ 快捷键说明

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