관리 메뉴

취미개발 블로그와 마음수양

자바 우주선, 미사일, 적 코드 본문

Language/java소스

자바 우주선, 미사일, 적 코드

아라한사 2014. 4. 16. 23:06

재밌네?ㅋ  천인국님, 하상호님 공저의 파워 자바를 참고했습니다 ~ ㅎ




package 챕23스레드;

import java.awt.Graphics;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.swing.JFrame;
import javax.swing.JPanel;

class GraphicObject{
	BufferedImage img = null;
	int x=0, y=0;
	
	public GraphicObject(String name){
		try{
			img = ImageIO.read(new File(name));
		}catch(IOException e){
			System.out.println(e.getMessage());
			System.exit(0);
		}
	}
	public void update(){}
	public void draw(Graphics g){
		g.drawImage(img, x, y, null);
	}
	
	public void keyPressed(KeyEvent event){}
}

class Missile extends GraphicObject{
		boolean launched = false;
		public Missile(String name){
			super(name);
			y = -200;
		}
		
		public void update(){
			if(launched) y-=1;
			if(y<-100) launched = false;
		}
		
		public void keyPressed(KeyEvent event, int x, int y){
			if(event.getKeyCode()==KeyEvent.VK_SPACE){
				launched = true;
				this.x =x;
				this.y = y;
		}
	}
}
	
	
class Enermy extends GraphicObject{
		int dx = -10;
		public Enermy(String name){
			super(name);
			x = 500;
			y = 0;
		}
		
		public void update(){
			x+=dx;
			if(x<0) dx = +10; 
			if(x>500) dx =-10;
		}
}

class SpaceShip extends GraphicObject{
	public SpaceShip(String name){
		super(name);
		x = 150;
		y = 350;
	}
	
	public void keyPressed(KeyEvent event){
		if(event.getKeyCode()==KeyEvent.VK_LEFT) { x-=10;}
		if(event.getKeyCode()==KeyEvent.VK_RIGHT) { x+=10;}
		if(event.getKeyCode()==KeyEvent.VK_UP) { y-=10;}
		if(event.getKeyCode()==KeyEvent.VK_DOWN) { y+=10;}
			
	}
}

class MyPanel extends JPanel implements KeyListener{
	Enermy enermy;
	SpaceShip spaceship;
	Missile missile;
	public MyPanel(){
		super();
		this.addKeyListener(this);
		this.requestFocus();
		setFocusable(true);
		enermy = new Enermy("enermy.png");
		spaceship = new SpaceShip("spaceship.png");
		missile = new Missile("missile.png");
		
		class MyThread extends Thread{
			public void run(){
				while(true){
					enermy.update();
					spaceship.update();
					missile.update();
					repaint();
					try{Thread.sleep(50);}
					catch(InterruptedException e){}
				}
			}
		}
		
		Thread t = new MyThread();
		t.start();
	}
	public void paint(Graphics g){
		super.paint(g);
		enermy.draw(g);
		spaceship.draw(g);
		missile.draw(g);
	}
	
	public void keyPressed(KeyEvent event){
		spaceship.keyPressed(event);
		missile.keyPressed(event, spaceship.x, spaceship.y);
	}
	
	public void keyReleased(KeyEvent arg0){	}
	public void keyTyped(KeyEvent arg0){	}
}

public class MyFrame extends JFrame{
	public MyFrame(){
		setTitle("My game");
		add(new MyPanel());
		setSize(500, 500);
		setVisible(true);
	}
	public static void main(String[] args) {
		new MyFrame();
	}

}


만약 여기서.. 미사일과 부딪히면 사라지게 하고 싶다고 한다면 대충 이런 식으로~


if(!(enermy.x 

        spaceship.