import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;
public class java3_03_sprite extends Applet
implements Runnable, KeyListener
{
Thread clock; // 기준되는 시계
Image off; // 메모리 상의 가상화면
Graphics offG;
Image bgImage; // 배경 이미지
Image ufo; // ufo 이미지
int x, y; // ufo의 x,y좌표
public void init()
{
// 메모리 상에 가상화면 만들기
off= createImage(500, 500);
offG= off.getGraphics();
// 이미지 로드
MediaTracker myTracker= new MediaTracker(this);
bgImage= getImage(getCodeBase(), "map.gif");
myTracker.addImage(bgImage,0);
ufo= getImage(getCodeBase(), "ufo.gif");
myTracker.addImage(ufo,0);
try{
myTracker.waitForAll();
}catch(InterruptedException ie){}
while((myTracker.statusAll(true) & MediaTracker.COMPLETE)==0){}
x=100; y=100; // ufo의 시작위치
addKeyListener(this);
}
public void start()
{
if(clock==null){
clock= new Thread(this);
clock.start(); // 시계 시작
}
}
public void paint(Graphics g)
{
// 가상화면을 실제화면에 출력
g.drawImage(off, 0, 0, this);
}
public void update(Graphics g)
{
paint(g);
}
public void run()
{
while(true)
{
try{
clock.sleep(50);
}catch(InterruptedException ie){}
offG.setColor(Color.white);
offG.fillRect(0,0,500,500);
offG.drawImage(bgImage, 0, 0, this);
offG.drawImage(ufo, x, y, this); // 가상화면에 출력
repaint(); // paint() 호출
}
}
public void stop()
{
if((clock!=null)&&(clock.isAlive())){
clock=null; // 시계 정지(없앰)
}
}
public void destroy()
{
// 종료 루틴
}
public void keyPressed(KeyEvent e)
{
if(e.getKeyCode()==39)
{
x = x+1;
}
if(e.getKeyCode()==37)
{
x = x-1;
}
if(e.getKeyCode()==40)
{
y = y+1;
}
if(e.getKeyCode()==38)
{
y = y-1;
}
}
public void keyReleased(KeyEvent e)
{
}
public void keyTyped(KeyEvent e)
{
}
}