반응형
package javaapplication31; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; class Ex6 extends JFrame{ GamePanel panel; ImageIcon icon = new ImageIcon("airplane.jpg"); Ex6(){ this.setTitle("버블 게임"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); panel = new GamePanel(); this.add(panel); this.setLocationRelativeTo(null); this.setSize(300,300); this.setVisible(true); panel.requestFocus();//게임 패널에 포커스를 맞춤 } class GamePanel extends JPanel{ GamePanel(){ this.setLayout(null); this.addMouseListener(new MouseListener(){ @Override public void mouseClicked(MouseEvent me) { } @Override public void mousePressed(MouseEvent me) { //클릭한 곳의 위치를 알아내고, 그 위치에 대한 스레드 객체를 생성하고 실행 int x=me.getX(); int y=me.getY(); BalloonThread bt= new BalloonThread(x,y); bt.start(); } @Override public void mouseReleased(MouseEvent me) { } @Override public void mouseEntered(MouseEvent me) { } @Override public void mouseExited(MouseEvent me) { } }); } } class BalloonThread extends Thread{ int x,y; //마우스 리스너를 통해 입력된 좌표를 받는다. BalloonThread(int x, int y){ this.x=x; this.y=y; } public void run(){ //좌표에 대한 이미지를 생성한다. JLabel la= new JLabel(icon); la.setSize(30,30); la.setLocation(x, y); la.setOpaque(true); panel.add(la); while(true){ int x=la.getX(); int y=la.getY()-5;//5픽셀씩 위로 올라간다. //레이블이 프레임 밖으로 나가면 스레드를 종료 if(la.getHeight()+30<=0) return; //아니면 계속 올라간다. else la.setLocation(x, y); try{ sleep(20);//0.02초에 5픽셀이동 } catch(Exception e){ return; } } } } } public class JavaApplication31 { public static void main(String[] args) { new Ex6(); } }
<결과>
2016/11/23 - [자바] - 자바 소스코드: 움직이는 물체를 맞추는 사격 게임
2016/11/14 - [자바] - 자바 소스코드: 아무거나 빨리 눌러 바 채우기
2016/11/14 - [자바] - 자바 소스코드: 스레드 충돌 예제
#자바 #자바 소스코드 #명품자바 프로그래밍 13장 6번 #실습문제 #스레드 #버블게임 #마우스 리스너 #이게 왜 게임이지?
반응형
'자바' 카테고리의 다른 글
자바 소스코드: 369게임 둘이서 하기 (0) | 2016.11.23 |
---|---|
자바 소스코드: 369게임 혼자하기 (0) | 2016.11.23 |
자바 소스코드: 움직이는 물체를 맞추는 사격 게임 (3) | 2016.11.23 |
자바 소스코드: 아무거나 빨리 눌러 바 채우기 (0) | 2016.11.14 |
자바 소스코드: 스레드 충돌 예제 (0) | 2016.11.14 |