Tetris
Retired DISLab
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; }