📄 spritecanvas.java
字号:
/**
@author j.n.magee 14/08/98
*/
package concurrency.sprite;
import java.awt.*;
import java.applet.*;
import java.util.*;
import concurrency.time.*;
/**************************************************************/
public class SpriteCanvas extends Canvas implements Timed {
Image backdrop;
ImmutableList sprites = null;
boolean ended= false;
Font ff = new Font("Serif",Font.BOLD,36);
private Dimension dc;
public SpriteCanvas(Image backdrop) {
this.backdrop = backdrop;
}
// clear all shapes
public void reset() {
ended = false;
sprites = null;
}
void addSprite(Sprite p) {
sprites = ImmutableList.add(sprites,p);
}
void removeSprite(Sprite p ){
sprites = ImmutableList.remove(sprites,p);
}
public void pretick() throws TimeStop{
repaint();
}
public void tick() {}
public void paint(Graphics g) {
update(g);
}
public void endGame(){
ended=true;
repaint();
}
Image offscreen;
Dimension offscreensize;
Graphics offgraphics;
public void update(Graphics g){
dc = getSize();
if ((offscreen == null) || (dc.width != offscreensize.width)
|| (dc.height != offscreensize.height)) {
offscreen = createImage(dc.width, dc.height);
offscreensize = dc;
offgraphics = offscreen.getGraphics();
offgraphics.setFont(ff);
}
offgraphics.drawImage(backdrop,0,0,this);
if (ended) {
offgraphics.setColor(Color.red);
offgraphics.drawString("The End",200,150);
} else {
// Display sprites
Enumeration e = ImmutableList.elements(sprites);
while(e.hasMoreElements()) {
Sprite s = (Sprite)e.nextElement();
s.paint(offgraphics);
}
}
g.drawImage(offscreen, 0, 0, null);
}
}
/**************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -