import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import javax.swing.Timer; public class Controller extends KeyAdapter implements ActionListener { Timer loop; Booby booby; boolean right; boolean left; boolean up; boolean down; int countUp = 0; int jump = 0; int countLeft = 0; int countRight = 0; Controller(Booby b, View v) { booby = b; loop = new Timer(0, this); } // Key events public void keyPressed(KeyEvent e) { int code = e.getKeyCode(); switch (code) { case KeyEvent.VK_UP: up = true; loop.start(); break; case KeyEvent.VK_RIGHT: right = true; left = false; loop.start(); break; case KeyEvent.VK_LEFT: left = true; right = false; loop.start(); break; case KeyEvent.VK_DOWN: left = false; booby.movingLeft = false; right = false; booby.movingRight = false; down = true; break; } } public void actionPerformed(ActionEvent evt) { if (up) { booby.movingUp = true; countUp++; jump++; if (countUp <= 50 && countUp > 0) { booby.move(0, -1); if (right) { booby.movingRight = true; } if (left) { booby.movingLeft = true; } } else if (countUp > 50) { if (jump <= 100) { booby.move(0, 1); } else if (jump > 100) { loop.stop(); right = false; left = false; down = false; booby.movingRight = false; booby.movingLeft = false; booby.movingUp = false; up = false; jump = 0; countUp = 0; } } if (booby.movingRight) { booby.move(1, 0); } if (booby.movingLeft) { booby.move(-1, 0); } } else if (right) { booby.movingLeft = false; booby.movingRight = true; countRight++; if (countRight <= 100) { booby.move(1, 0); } else { countRight = 0; right = false; booby.movingRight = false; loop.stop(); } } else if (left) { booby.movingRight = false; booby.movingLeft = true; countLeft++; if (countLeft <= 100) { booby.move(-1, 0); } else { countLeft = 0; left = false; booby.movingLeft = false; } } } }