Tetris

Retired DISLab
Swpark (토론 | 기여) 사용자의 2014년 1월 26일 (일) 09:51 버전
(비교) ← 이전 판 | 현재 판 (비교) | 다음 판 → (비교)
이동: 둘러보기, 찾기
import acm.graphics.*;
import acm.program.*;
import java.awt.event.*;
import java.awt.*;
 
public class Tetris extends GraphicsProgram {
 
	public void init() {
		addKeyListeners();
	}
 
	public void run() {
		obj = new GStar(100, 100, 100);
		if (obj instanceof GFillable) {
			((GFillable)obj).setFilled(true);
			((GFillable)obj).setFillColor(Color.RED);
		}
		add(obj);
 
		while (true) {	
			double dx = 0, dy = 0;
			if ((keyFlag & DOWN) != 0) dy += 3;
			if ((keyFlag & UP) != 0) dy += -3;
			if ((keyFlag & LEFT) != 0) dx += -3;
			if ((keyFlag & RIGHT) != 0) dx += 3;
 
			obj.move(dx, dy);
			pause(20);
		}
	}
 
	public void keyPressed(KeyEvent e) {
		switch (e.getKeyCode()) {
			case KeyEvent.VK_DOWN :
			case KeyEvent.VK_S : keyFlag |= DOWN; break;
			case KeyEvent.VK_UP : 
			case KeyEvent.VK_W : keyFlag |= UP; break;
			case KeyEvent.VK_LEFT : 
			case KeyEvent.VK_A : keyFlag |= LEFT; break;
			case KeyEvent.VK_RIGHT : 
			case KeyEvent.VK_D : keyFlag |= RIGHT; break;
		}
	}
 
	public void keyReleased(KeyEvent e) {
		switch (e.getKeyCode()) {
		case KeyEvent.VK_DOWN :	
		case KeyEvent.VK_S : keyFlag &= ~DOWN; break;
		case KeyEvent.VK_UP : 
		case KeyEvent.VK_W : keyFlag &= ~UP; break;
		case KeyEvent.VK_LEFT :	
		case KeyEvent.VK_A : keyFlag &= ~LEFT; break;
		case KeyEvent.VK_RIGHT :
		case KeyEvent.VK_D : keyFlag &= ~RIGHT;	break;
		}
	}
 
	//private boolean odd = false;
	private GObject obj;
	private int keyFlag = 0;
 
	private static final int DOWN = 0x01;
	private static final int UP = 0x02;
	private static final int RIGHT = 0x04;
	private static final int LEFT = 0x08;
 
	private static final long serialVersionUID = 1;
}
개인 도구
이름공간
변수
행위
둘러보기
구성원
연구
연구실
기타
도구모음
인쇄/내보내기