Java

[Java] 윈도우 창 만들기 <응용> - 로봇 움직이기

소댓 2023. 3. 22. 23:07

Q01

 
package day15;
// 로봇
import java.awt.Button;
import java.awt.Frame;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Day15Q004 extends Frame{
	
	Button btnhead, btnarml, btnarmr, btnlegl, btnlegr, btnbody;
	
	Day15Q004() {
		// 배치 관리자 사용 안함
		setLayout(null);
		
		// 컴포넌트 초기화
		btnhead = new Button("^^");
		btnarml = new Button();
		btnarmr = new Button();
		btnlegl = new Button();
		btnlegr = new Button();
		btnbody = new Button();
		
		// 버튼 크기, 위치 지정
		btnhead.setBounds(300, 270, 150, 100);
		btnarml.setBounds(240, 400, 50, 100);
		btnarmr.setBounds(460, 400, 100, 50);
		btnlegl.setBounds(320, 570, 50, 100);
		btnlegr.setBounds(380, 570, 50, 100);
		btnbody.setBounds(300, 400, 150, 150);
		
		// 컴포넌트 부착
		add(btnhead);
		add(btnarml);
		add(btnarmr);
		add(btnlegl);
		add(btnlegr);
		add(btnbody);
		
		addWindowListener (new WindowAdapter() { 
			@Override
			public void windowClosing(WindowEvent e) {
				System.out.println("종료합니다.");
				System.exit(0);
		}
		});
		
		// 창 생성
		setBounds(200, 10, 1200, 900);
		setVisible(true);
		
	}
	
	public static void main(String[] args) {
		Day15Q004 mw = new Day15Q004();
	}
}
 

 

Q02

4번문제에서 키보드 asdw를 누르면 상하좌우로 움직일수 있는 기능을 추가해보세요

package day15;
// 로봇 이동(asdw키)
import java.awt.Button;
import java.awt.Frame;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Day15Q005 extends Frame implements KeyListener{
	
	Button btnhead, btnarml, btnarmr, btnlegl, btnlegr, btnbody;
	
	Day15Q005() {
		// 배치 관리자 사용 안함
		setLayout(null);
		
		// 컴포넌트 초기화
		btnhead = new Button("^^");
		btnarml = new Button();
		btnarmr = new Button();
		btnlegl = new Button();
		btnlegr = new Button();
		btnbody = new Button();
		
		// 이벤트 처리
		// 1. 이벤트 소스 : btn~
		// 2. 리스너 추가 : KeyListener(키보드 감지)
		btnhead.addKeyListener(this);
		btnarml.addKeyListener(this);
		btnarmr.addKeyListener(this);
		btnlegl.addKeyListener(this);
		btnlegr.addKeyListener(this);
		btnbody.addKeyListener(this);
		
		// 버튼 크기, 위치 지정
		btnhead.setBounds(300, 270, 150, 100);
		btnarml.setBounds(240, 400, 50, 100);
		btnarmr.setBounds(460, 400, 100, 50);
		btnlegl.setBounds(320, 570, 50, 100);
		btnlegr.setBounds(380, 570, 50, 100);
		btnbody.setBounds(300, 400, 150, 150);
		
		// 컴포넌트 부착
		add(btnhead);
		add(btnarml);
		add(btnarmr);
		add(btnlegl);
		add(btnlegr);
		add(btnbody);
		
		addWindowListener (new WindowAdapter() { 
			@Override
			public void windowClosing(WindowEvent e) {
				System.out.println("종료합니다.");
				System.exit(0);
		}
		});
		
		// 창 생성
		setBounds(200, 10, 1200, 900);
		setVisible(true);
		
	}
	
	public static void main(String[] args) {
		Day15Q005 mw = new Day15Q005();
	}

	@Override
	public void keyTyped(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void keyPressed(KeyEvent e) {
		// key code 가져오기
		int code = e.getKeyCode();
		System.out.println(code);
		
		int headx = btnhead.getX();
		int heady = btnhead.getY();
		int arm1x = btnarml.getX();
		int arm1y = btnarml.getY();
		int armrx = btnarmr.getX();
		int armry = btnarmr.getY();
		int leglx = btnlegl.getX();
		int legly = btnlegl.getY();
		int legrx = btnlegr.getX();
		int legry = btnlegr.getY();
		int bodyx = btnbody.getX();
		int bodyy = btnbody.getY();
		
		// 버튼 a > 왼쪽 이동
		if(code == 65) {
			headx -= 10;
			arm1x -= 10;
			armrx -= 10;
			leglx -= 10;
			legrx -= 10;
			bodyx -= 10;
		// 버튼 d > 오른쪽 이동
		} else if (code == 68) {
			headx += 10;
			arm1x += 10;
			armrx += 10;
			leglx += 10;
			legrx += 10;
			bodyx += 10;
		// 버튼 w > 위로 이동
		} else if (code == 87) {
			heady -= 10;
			arm1y -= 10;
			armry -= 10;
			legly -= 10;
			legry -= 10;
			bodyy -= 10;
		// 버튼 s > 아래로 이동
		} else if (code == 83) {
			heady += 10;
			arm1y += 10;
			armry += 10;
			legly += 10;
			legry += 10;
			bodyy += 10;
		}
			
		btnhead.setLocation(headx, heady);
		btnarml.setLocation(arm1x, arm1y);
		btnarmr.setLocation(armrx, armry);
		btnlegl.setLocation(leglx, legly);
		btnlegr.setLocation(legrx, legry);
		btnbody.setLocation(bodyx, bodyy);
	}

	@Override
	public void keyReleased(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}
}
 

 

Q03

5번 문제에서 asdw대신 화살표 방향키로 움직일수 있도록 변경합니다.

package day15;
// 로봇 이동(화살표 방향키)
import java.awt.Button;
import java.awt.Frame;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Day15Q006 extends Frame implements KeyListener{
	
	Button btnhead, btnarml, btnarmr, btnlegl, btnlegr, btnbody;
	
	Day15Q006() {
		// 배치 관리자 사용 안함
		setLayout(null);
		
		// 컴포넌트 초기화
		btnhead = new Button("^^");
		btnarml = new Button();
		btnarmr = new Button();
		btnlegl = new Button();
		btnlegr = new Button();
		btnbody = new Button();
		
		// 이벤트 처리
		// 1. 이벤트 소스 : btn~
		// 2. 리스너 추가 : KeyListener(키보드 감지)
		btnhead.addKeyListener(this);
		btnarml.addKeyListener(this);
		btnarmr.addKeyListener(this);
		btnlegl.addKeyListener(this);
		btnlegr.addKeyListener(this);
		btnbody.addKeyListener(this);
		
		// 버튼 크기, 위치 지정
		btnhead.setBounds(300, 270, 150, 100);
		btnarml.setBounds(240, 400, 50, 100);
		btnarmr.setBounds(460, 400, 100, 50);
		btnlegl.setBounds(320, 570, 50, 100);
		btnlegr.setBounds(380, 570, 50, 100);
		btnbody.setBounds(300, 400, 150, 150);
		
		// 컴포넌트 부착
		add(btnhead);
		add(btnarml);
		add(btnarmr);
		add(btnlegl);
		add(btnlegr);
		add(btnbody);
		
		addWindowListener (new WindowAdapter() { 
			@Override
			public void windowClosing(WindowEvent e) {
				System.out.println("종료합니다.");
				System.exit(0);
		}
		});
		
		// 창 생성
		setBounds(200, 10, 1200, 900);
		setVisible(true);
		
	}
	
	public static void main(String[] args) {
		Day15Q006 mw = new Day15Q006();
	}

	@Override
	public void keyTyped(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void keyPressed(KeyEvent e) {
		// key code 가져오기
		int code = e.getKeyCode();
		System.out.println(code);
		
		int headx = btnhead.getX();
		int heady = btnhead.getY();
		int arm1x = btnarml.getX();
		int arm1y = btnarml.getY();
		int armrx = btnarmr.getX();
		int armry = btnarmr.getY();
		int leglx = btnlegl.getX();
		int legly = btnlegl.getY();
		int legrx = btnlegr.getX();
		int legry = btnlegr.getY();
		int bodyx = btnbody.getX();
		int bodyy = btnbody.getY();
		
		// 왼쪽 방향키 > 왼쪽 이동
		if(code == 37) {
			headx -= 10;
			arm1x -= 10;
			armrx -= 10;
			leglx -= 10;
			legrx -= 10;
			bodyx -= 10;
		// 오른쪽 방향키 > 오른쪽 이동
		} else if (code == 39) {
			headx += 10;
			arm1x += 10;
			armrx += 10;
			leglx += 10;
			legrx += 10;
			bodyx += 10;
		// 위쪽 방향키 > 위로 이동
		} else if (code == 38) {
			heady -= 10;
			arm1y -= 10;
			armry -= 10;
			legly -= 10;
			legry -= 10;
			bodyy -= 10;
		// 아래쪽 방향키 > 아래로 이동
		} else if (code == 40) {
			heady += 10;
			arm1y += 10;
			armry += 10;
			legly += 10;
			legry += 10;
			bodyy += 10;
		}
			
		btnhead.setLocation(headx, heady);
		btnarml.setLocation(arm1x, arm1y);
		btnarmr.setLocation(armrx, armry);
		btnlegl.setLocation(leglx, legly);
		btnlegr.setLocation(legrx, legry);
		btnbody.setLocation(bodyx, bodyy);
	}

	@Override
	public void keyReleased(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}
}
 

Q04

엔터키를 누르면 주먹이 발사되어 일정한 거리까지 앞으로 이동한후에 다시 돌아오도록 코드를 추가합니다.

package day15;
// 로봇 팔 발사
import java.awt.Button;
import java.awt.Frame;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Day15Q007 extends Frame implements KeyListener{
	
	Button btnhead, btnarml, btnarmr, btnlegl, btnlegr, btnbody;
	
	Day15Q007() {
		// 배치 관리자 사용 안함
		setLayout(null);
		
		// 컴포넌트 초기화
		btnhead = new Button("^^");
		btnarml = new Button();
		btnarmr = new Button();
		btnlegl = new Button();
		btnlegr = new Button();
		btnbody = new Button();
		
		// 이벤트 처리
		// 1. 이벤트 소스 : btn~
		// 2. 리스너 추가 : KeyListener(키보드 감지)
		btnhead.addKeyListener(this);
		btnarml.addKeyListener(this);
		btnarmr.addKeyListener(this);
		btnlegl.addKeyListener(this);
		btnlegr.addKeyListener(this);
		btnbody.addKeyListener(this);
		
		// 버튼 크기, 위치 지정
		btnhead.setBounds(300, 270, 150, 100);
		btnarml.setBounds(240, 400, 50, 100);
		btnarmr.setBounds(460, 400, 100, 50);
		btnlegl.setBounds(320, 570, 50, 100);
		btnlegr.setBounds(380, 570, 50, 100);
		btnbody.setBounds(300, 400, 150, 150);
		
		// 컴포넌트 부착
		add(btnhead);
		add(btnarml);
		add(btnarmr);
		add(btnlegl);
		add(btnlegr);
		add(btnbody);
		
		addWindowListener (new WindowAdapter() { 
			@Override
			public void windowClosing(WindowEvent e) {
				System.out.println("종료합니다.");
				System.exit(0);
		}
		});
		
		// 창 생성
		setBounds(200, 10, 1200, 900);
		setVisible(true);
		
	}
	
	public static void main(String[] args) {
		Day15Q007 mw = new Day15Q007();
	}

	@Override
	public void keyTyped(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void keyPressed(KeyEvent e) {
		// key code 가져오기
		int code = e.getKeyCode();
		System.out.println(code);
		
		// 버튼 위치 설정
		int headx = btnhead.getX();
		int heady = btnhead.getY();
		int arm1x = btnarml.getX();
		int arm1y = btnarml.getY();
		int armrx = btnarmr.getX();
		int armry = btnarmr.getY();
		int leglx = btnlegl.getX();
		int legly = btnlegl.getY();
		int legrx = btnlegr.getX();
		int legry = btnlegr.getY();
		int bodyx = btnbody.getX();
		int bodyy = btnbody.getY();
		
		// 왼쪽 방향키 > 왼쪽 이동
		if(code == 37) {
			headx -= 10;
			arm1x -= 10;
			armrx -= 10;
			leglx -= 10;
			legrx -= 10;
			bodyx -= 10;
		// 오른쪽 방향키 > 오른쪽 이동
		} else if (code == 39) {
			headx += 10;
			arm1x += 10;
			armrx += 10;
			leglx += 10;
			legrx += 10;
			bodyx += 10;
		// 위쪽 방향키 > 위로 이동
		} else if (code == 38) {
			heady -= 10;
			arm1y -= 10;
			armry -= 10;
			legly -= 10;
			legry -= 10;
			bodyy -= 10;
		// 아래쪽 방향키 > 아래로 이동
		} else if (code == 40) {
			heady += 10;
			arm1y += 10;
			armry += 10;
			legly += 10;
			legry += 10;
			bodyy += 10;
		// 엔터키 누르면 팔 발사
		} else if (code == 10) {
			for (int i = 0; i <30; i++) {
				armrx += 20;
				btnarmr.setLocation(armrx, armry);
				
				// 잠시 멈췄다가 실행되는 기능
				try {
					Thread.sleep(10);
				} catch (InterruptedException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				} // 1000분의 1초
			}
			
			// 하강
			for (int i =0; i < 30; i++) {
				armrx -= 20;
				btnarmr.setLocation(armrx, armry);
			
				// 잠시 멈췄다가 실행되는 기능
				try {
					Thread.sleep(10);
				} catch (InterruptedException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				} // 1000분의 1초
			}
		} // 엔터키 end
			
		btnhead.setLocation(headx, heady);
		btnarml.setLocation(arm1x, arm1y);
		btnarmr.setLocation(armrx, armry);
		btnlegl.setLocation(leglx, legly);
		btnlegr.setLocation(legrx, legry);
		btnbody.setLocation(bodyx, bodyy);
	}

	@Override
	public void keyReleased(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}
}
 

Q05 스페이스바를 누르면 점프 할수 있도록 기능을 추가하세요

 

package day15;
// 로봇 이동(스페이스바 누르면 점프)
import java.awt.Button;
import java.awt.Frame;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Day15Q008 extends Frame implements KeyListener{
	
	Button btnhead, btnarml, btnarmr, btnlegl, btnlegr, btnbody;
	
	Day15Q008() {
		// 배치 관리자 사용 안함
		setLayout(null);
		
		
		// 컴포넌트 초기화
		btnhead = new Button("^^");
		btnarml = new Button();
		btnarmr = new Button();
		btnlegl = new Button();
		btnlegr = new Button();
		btnbody = new Button();
		
		// 이벤트 처리
		// 1. 이벤트 소스 : btn~
		// 2. 리스너 추가 : KeyListener(키보드 감지)
		btnhead.addKeyListener(this);
		btnarml.addKeyListener(this);
		btnarmr.addKeyListener(this);
		btnlegl.addKeyListener(this);
		btnlegr.addKeyListener(this);
		btnbody.addKeyListener(this);
		
		// 버튼 크기, 위치 지정
		btnhead.setBounds(300, 270, 150, 100);
		btnarml.setBounds(240, 400, 50, 100);
		btnarmr.setBounds(460, 400, 100, 50);
		btnlegl.setBounds(320, 570, 50, 100);
		btnlegr.setBounds(380, 570, 50, 100);
		btnbody.setBounds(300, 400, 150, 150);
		
		// 컴포넌트 부착
		add(btnhead);
		add(btnarml);
		add(btnarmr);
		add(btnlegl);
		add(btnlegr);
		add(btnbody);
		
		addWindowListener (new WindowAdapter() { 
			@Override
			public void windowClosing(WindowEvent e) {
				System.out.println("종료합니다.");
				System.exit(0);
		}
		});
		
		// 창 생성
		setBounds(200, 10, 1200, 900);
		setVisible(true);
		
	}
	
	public static void main(String[] args) {
		Day15Q008 mw = new Day15Q008();
	}

	@Override
	public void keyTyped(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void keyPressed(KeyEvent e) {
		// key code 가져오기
		int code = e.getKeyCode();
		System.out.println(code);
		
		// 버튼 위치 설정
		int headx = btnhead.getX();
		int heady = btnhead.getY();
		int arm1x = btnarml.getX();
		int arm1y = btnarml.getY();
		int armrx = btnarmr.getX();
		int armry = btnarmr.getY();
		int leglx = btnlegl.getX();
		int legly = btnlegl.getY();
		int legrx = btnlegr.getX();
		int legry = btnlegr.getY();
		int bodyx = btnbody.getX();
		int bodyy = btnbody.getY();
		
		// 왼쪽 방향키 > 왼쪽 이동
		if(code == 37) {
			headx -= 10;
			arm1x -= 10;
			armrx -= 10;
			leglx -= 10;
			legrx -= 10;
			bodyx -= 10;
		// 오른쪽 방향키 > 오른쪽 이동
		} else if (code == 39) {
			headx += 10;
			arm1x += 10;
			armrx += 10;
			leglx += 10;
			legrx += 10;
			bodyx += 10;
		// 위쪽 방향키 > 위로 이동
		} else if (code == 38) {
			heady -= 10;
			arm1y -= 10;
			armry -= 10;
			legly -= 10;
			legry -= 10;
			bodyy -= 10;
		// 아래쪽 방향키 > 아래로 이동
		} else if (code == 40) {
			heady += 10;
			arm1y += 10;
			armry += 10;
			legly += 10;
			legry += 10;
			bodyy += 10;
		// 엔터키 누르면 팔 발사
		} else if (code == 10) {
			for (int i = 0; i <30; i++) {
				armrx += 20;
				btnarmr.setLocation(armrx, armry);
				
				// 잠시 멈췄다가 실행되는 기능
				try {
					Thread.sleep(10);
				} catch (InterruptedException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				} // 1000분의 1초
			}
			
			// 팔 돌아오기
			for (int i =0; i < 30; i++) {
				armrx -= 20;
				btnarmr.setLocation(armrx, armry);
			
				// 잠시 멈췄다가 실행되는 기능
				try {
					Thread.sleep(10);
				} catch (InterruptedException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				} // 1000분의 1초
			}
		// 스페이스 바 누르면 점프
		} else if (code == 32) {
			for (int i = 0; i <20; i++) {
				heady -= 10;
				arm1y -= 10;
				armry -= 10;
				legly -= 10;
				legry -= 10;
				bodyy -= 10;
				
				btnhead.setLocation(headx, heady);
				btnarml.setLocation(arm1x, arm1y);
				btnarmr.setLocation(armrx, armry);
				btnlegl.setLocation(leglx, legly);
				btnlegr.setLocation(legrx, legry);
				btnbody.setLocation(bodyx, bodyy);
				
				// 잠시 멈췄다가 실행되는 기능
				try {
					Thread.sleep(10);
				} catch (InterruptedException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				} // 1000분의 1초
			}
			
			// 하강
			for (int i =0; i < 20; i++) {
				heady += 10;
				arm1y += 10;
				armry += 10;
				legly += 10;
				legry += 10;
				bodyy += 10;
				
				btnhead.setLocation(headx, heady);
				btnarml.setLocation(arm1x, arm1y);
				btnarmr.setLocation(armrx, armry);
				btnlegl.setLocation(leglx, legly);
				btnlegr.setLocation(legrx, legry);
				btnbody.setLocation(bodyx, bodyy);
			
				// 잠시 멈췄다가 실행되는 기능
				try {
					Thread.sleep(10);
				} catch (InterruptedException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				} // 1000분의 1초
			
		}
			
		btnhead.setLocation(headx, heady);
		btnarml.setLocation(arm1x, arm1y);
		btnarmr.setLocation(armrx, armry);
		btnlegl.setLocation(leglx, legly);
		btnlegr.setLocation(legrx, legry);
		btnbody.setLocation(bodyx, bodyy);
		}
	}

	@Override
	public void keyReleased(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}
}
 

 

Q6  8번 문제에서 스페이스바를 누르면 앞으로 점프하도록 코드를 수정하세요

package day15;
// 로봇 이동(스페이스바 누르면 앞으로 점프)
import java.awt.Button;
import java.awt.Frame;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Day15Q009 extends Frame implements KeyListener{
	
	Button btnhead, btnarml, btnarmr, btnlegl, btnlegr, btnbody;
	
	Day15Q009() {
		// 배치 관리자 사용 안함
		setLayout(null);
		
		
		// 컴포넌트 초기화
		btnhead = new Button("^^");
		btnarml = new Button();
		btnarmr = new Button();
		btnlegl = new Button();
		btnlegr = new Button();
		btnbody = new Button();
		
		// 이벤트 처리
		// 1. 이벤트 소스 : btn~
		// 2. 리스너 추가 : KeyListener(키보드 감지)
		btnhead.addKeyListener(this);
		btnarml.addKeyListener(this);
		btnarmr.addKeyListener(this);
		btnlegl.addKeyListener(this);
		btnlegr.addKeyListener(this);
		btnbody.addKeyListener(this);
		
		// 버튼 크기, 위치 지정
		btnhead.setBounds(300, 270, 150, 100);
		btnarml.setBounds(240, 400, 50, 100);
		btnarmr.setBounds(460, 400, 100, 50);
		btnlegl.setBounds(320, 570, 50, 100);
		btnlegr.setBounds(380, 570, 50, 100);
		btnbody.setBounds(300, 400, 150, 150);
		
		// 컴포넌트 부착
		add(btnhead);
		add(btnarml);
		add(btnarmr);
		add(btnlegl);
		add(btnlegr);
		add(btnbody);
		
		addWindowListener (new WindowAdapter() { 
			@Override
			public void windowClosing(WindowEvent e) {
				System.out.println("종료합니다.");
				System.exit(0);
		}
		});
		
		// 창 생성
		setBounds(200, 10, 1200, 900);
		setVisible(true);
		
	}
	
	public static void main(String[] args) {
		Day15Q009 mw = new Day15Q009();
	}

	@Override
	public void keyTyped(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void keyPressed(KeyEvent e) {
		// key code 가져오기
		int code = e.getKeyCode();
		System.out.println(code);
		
		// 버튼 위치 설정
		int headx = btnhead.getX();
		int heady = btnhead.getY();
		int arm1x = btnarml.getX();
		int arm1y = btnarml.getY();
		int armrx = btnarmr.getX();
		int armry = btnarmr.getY();
		int leglx = btnlegl.getX();
		int legly = btnlegl.getY();
		int legrx = btnlegr.getX();
		int legry = btnlegr.getY();
		int bodyx = btnbody.getX();
		int bodyy = btnbody.getY();
		
		// 왼쪽 방향키 > 왼쪽 이동
		if(code == 37) {
			headx -= 10;
			arm1x -= 10;
			armrx -= 10;
			leglx -= 10;
			legrx -= 10;
			bodyx -= 10;
		// 오른쪽 방향키 > 오른쪽 이동
		} else if (code == 39) {
			headx += 10;
			arm1x += 10;
			armrx += 10;
			leglx += 10;
			legrx += 10;
			bodyx += 10;
		// 위쪽 방향키 > 위로 이동
		} else if (code == 38) {
			heady -= 10;
			arm1y -= 10;
			armry -= 10;
			legly -= 10;
			legry -= 10;
			bodyy -= 10;
		// 아래쪽 방향키 > 아래로 이동
		} else if (code == 40) {
			heady += 10;
			arm1y += 10;
			armry += 10;
			legly += 10;
			legry += 10;
			bodyy += 10;
		// 엔터키 누르면 팔 발사
		} else if (code == 10) {
			for (int i = 0; i <30; i++) {
				armrx += 20;
				btnarmr.setLocation(armrx, armry);
				
				// 잠시 멈췄다가 실행되는 기능
				try {
					Thread.sleep(10);
				} catch (InterruptedException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				} // 1000분의 1초
			}
			
			// 하강
			for (int i =0; i < 30; i++) {
				armrx -= 20;
				btnarmr.setLocation(armrx, armry);
			
				// 잠시 멈췄다가 실행되는 기능
				try {
					Thread.sleep(10);
				} catch (InterruptedException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				} // 1000분의 1초
			}
		// 스페이스 바 누르면 점프
		} else if (code == 32) {
			for (int i = 0; i <20; i++) {
				// 위로 점프
				heady -= 10;
				arm1y -= 10;
				armry -= 10;
				legly -= 10;
				legry -= 10;
				bodyy -= 10;
				
				// 뛰면서 앞으로 이동
				headx += 10;
				arm1x += 10;
				armrx += 10;
				leglx += 10;
				legrx += 10;
				bodyx += 10;
				
				btnhead.setLocation(headx, heady);
				btnarml.setLocation(arm1x, arm1y);
				btnarmr.setLocation(armrx, armry);
				btnlegl.setLocation(leglx, legly);
				btnlegr.setLocation(legrx, legry);
				btnbody.setLocation(bodyx, bodyy);
				
				// 잠시 멈췄다가 실행되는 기능
				try {
					Thread.sleep(10);
				} catch (InterruptedException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				} // 1000분의 1초
			}
			
			// 하강
			for (int i =0; i < 20; i++) {
				
				// 내려옴
				heady += 10;
				arm1y += 10;
				armry += 10;
				legly += 10;
				legry += 10;
				bodyy += 10;
				
				// 내려오면서 앞으로 이동
				headx += 10;
				arm1x += 10;
				armrx += 10;
				leglx += 10;
				legrx += 10;
				bodyx += 10;
				
				btnhead.setLocation(headx, heady);
				btnarml.setLocation(arm1x, arm1y);
				btnarmr.setLocation(armrx, armry);
				btnlegl.setLocation(leglx, legly);
				btnlegr.setLocation(legrx, legry);
				btnbody.setLocation(bodyx, bodyy);
			
				// 잠시 멈췄다가 실행되는 기능
				try {
					Thread.sleep(10);
				} catch (InterruptedException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				} // 1000분의 1초
			
		}
			
		btnhead.setLocation(headx, heady);
		btnarml.setLocation(arm1x, arm1y);
		btnarmr.setLocation(armrx, armry);
		btnlegl.setLocation(leglx, legly);
		btnlegr.setLocation(legrx, legry);
	
 
 

Q07 8번문제의 기능을 버튼 배열로 처리해서 풀어보세요

 

package day15;
// 로봇 이동(스페이스바 누르면 점프) > 배열
import java.awt.Button;
import java.awt.Frame;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class Day15Q011 extends Frame implements KeyListener{
	
	Button[] btn = new Button[6];
	
	Day15Q011() {
		// 배치 관리자 사용 안함
		setLayout(null);
		
		// btn[0] 컴포넌트 초기화, 부착, 이벤트 처리
		btn[0] = new Button("^ ^");
		add(btn[0]);
		btn[0].addKeyListener(this);

		// 반복문으로 컴포넌트 초기화, 부착, 이벤트 처리
		for(int i=1; i<btn.length; i++) {
			btn[i] = new Button();
			add(btn[i]);
			btn[i].addKeyListener(this);
		}
		
		
		// 버튼 크기, 위치 지정
		btn[0].setBounds(300, 270, 150, 100);
		btn[1].setBounds(240, 400, 50, 100);
		btn[2].setBounds(460, 400, 100, 50);
		btn[3].setBounds(320, 570, 50, 100);
		btn[4].setBounds(380, 570, 50, 100);
		btn[5].setBounds(300, 400, 150, 150);
		
		addWindowListener (new WindowAdapter() { 
			@Override
			public void windowClosing(WindowEvent e) {
				System.out.println("종료합니다.");
				System.exit(0);
		}
		});
		
		// 창 생성
		setBounds(200, 10, 1200, 900);
		setVisible(true);
		
	}
	
	public static void main(String[] args) {
		Day15Q011 mw = new Day15Q011();
	}

	@Override
	public void keyTyped(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public void keyPressed(KeyEvent e) {
		// key code 가져오기
		int code = e.getKeyCode();
//		System.out.println(code);
		
		// 반복문 : 왼쪽 방향키 > 왼쪽 이동
		if(code == 37) {
			for(int j=0; j<20; j++) {
				for(int i=0; i<btn.length; i++) {
					int x = btn[i].getX();
					int y = btn[i].getY();
					x -= 10;
					btn[i].setLocation(x,y);
				}
			}
		// 오른쪽 방향키 > 오른쪽 이동
		} else if (code == 39) {
			for(int j=0; j<20; j++) {
				for(int i=0; i<btn.length; i++) {
					int x = btn[i].getX();
					int y = btn[i].getY();
					x += 10;
					btn[i].setLocation(x,y);
				}
			}
		// 위쪽 방향키 > 위로 이동
		} else if (code == 38) {
			for(int j=0; j<20; j++) {
				for(int i=0; i<btn.length; i++) {
					int x = btn[i].getX();
					int y = btn[i].getY();
					y -= 10;
					btn[i].setLocation(x,y);
				}
			}
		// 아래쪽 방향키 > 아래로 이동
		} else if (code == 40) {
			for(int j=0; j<20; j++) {
				for(int i=0; i<btn.length; i++) {
					int x = btn[i].getX();
					int y = btn[i].getY();
					y += 10;
					btn[i].setLocation(x,y);
				}
			}
		// 엔터키 누르면 팔 발사
		} else if (code == 10) {
			for (int i = 0; i < 30; i++) {
				int x = btn[2].getX();
				int y = btn[2].getY();
				x += 20;
				btn[2].setLocation(x,y);
				
				// 잠시 멈췄다가 실행되는 기능
				try {
					Thread.sleep(10);
				} catch (InterruptedException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				} // 1000분의 1초
			}
			
			// 팔 돌아옴
			for (int i = 0; i < 30; i++) {
				int x = btn[2].getX();
				int y = btn[2].getY();
				x -= 20;
				btn[2].setLocation(x,y);
			
				// 잠시 멈췄다가 실행되는 기능
				try {
					Thread.sleep(10);
				} catch (InterruptedException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				} // 1000분의 1초
			}
		// 스페이스 바 누르면 점프
		} else if (code == 32) {
			for(int j=0; j<20; j++) {
				for(int i=0; i<btn.length; i++) {
					int x = btn[i].getX();
					int y = btn[i].getY();
					y -= 20;
					btn[i].setLocation(x,y);
				
				// 잠시 멈췄다가 실행되는 기능
				try {
					Thread.sleep(10);
				} catch (InterruptedException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				} // 1000분의 1초
			}
			}
			// 하강
			for(int j=0; j<20; j++) {
				for(int i=0; i<btn.length; i++) {
					int x = btn[i].getX();
					int y = btn[i].getY();
					y += 20;
					btn[i].setLocation(x,y);
				
				// 잠시 멈췄다가 실행되는 기능
				try {
					Thread.sleep(10);
				} catch (InterruptedException e1) {
					// TODO Auto-generated catch block
					e1.printStackTrace();
				} // 1000분의 1초
			
				} // i for문 end
		} // j for 문 end
		} // if end
	} // event end

	@Override
	public void keyReleased(KeyEvent e) {
		// TODO Auto-generated method stub
		
	}
}