📄 piece.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 + -