108 lines
3.6 KiB
Java
108 lines
3.6 KiB
Java
package cicaprojekt;
|
|
|
|
import javax.swing.*;
|
|
import java.awt.*;
|
|
import java.awt.event.KeyAdapter;
|
|
import java.awt.event.KeyEvent;
|
|
|
|
|
|
/**
|
|
* A billentyűlenyomás esemenyét, illetve a képek be nem töltését lekezelő osztály.
|
|
*/
|
|
public class Control {
|
|
/**
|
|
* A billentyűlenyomás eseményét kezelő osztály.
|
|
*/
|
|
public static class KeyHandler extends KeyAdapter{
|
|
|
|
/**
|
|
* Az egyes lenyomott billentyűk lenyomására a megfelelő
|
|
* függvényt meghívja, majd frissíti a megjelenítést.
|
|
*
|
|
* @param e egy <code>KeyEvent</code> eseményt,
|
|
* amely a billentyűlenyomást reprezentálja
|
|
* @see Game#moveONeill(Direction)
|
|
* @see Game#rotateOneillLeft()
|
|
* @see Game#rotateOneillRight()
|
|
* @see Game#moveJaffa(Direction)
|
|
* @see Game#rotateJaffaLeft()
|
|
* @see Game#rotateJaffaRight()
|
|
* @see Game#boxONeill()
|
|
* @see Game#boxJaffa()
|
|
* @see Game#shootStargate(Color)
|
|
* @see Game#updateDisplay()
|
|
*/
|
|
@Override
|
|
public void keyTyped(KeyEvent e) {
|
|
char c = e.getKeyChar();
|
|
c = Character.toUpperCase(c);
|
|
switch(c) {
|
|
case 'W' :
|
|
Game.instance.moveONeill(Direction.NORTH);
|
|
break;
|
|
case 'A' :
|
|
Game.instance.moveONeill(Direction.WEST);
|
|
break;
|
|
case 'S' :
|
|
Game.instance.moveONeill(Direction.SOUTH);
|
|
break;
|
|
case 'D' :
|
|
Game.instance.moveONeill(Direction.EAST);
|
|
break;
|
|
case 'Y' :
|
|
Game.instance.rotateOneillLeft();
|
|
break;
|
|
case 'X' :
|
|
Game.instance.rotateOneillRight();
|
|
break;
|
|
case 'I' :
|
|
Game.instance.moveJaffa(Direction.NORTH);
|
|
break;
|
|
case 'J' :
|
|
Game.instance.moveJaffa(Direction.WEST);
|
|
break;
|
|
case 'K' :
|
|
Game.instance.moveJaffa(Direction.SOUTH);
|
|
break;
|
|
case 'L' :
|
|
Game.instance.moveJaffa(Direction.EAST);
|
|
break;
|
|
case 'M' :
|
|
Game.instance.rotateJaffaLeft();
|
|
break;
|
|
case ',' :
|
|
Game.instance.rotateJaffaRight();
|
|
break;
|
|
case 'Q' :
|
|
Game.instance.boxONeill();
|
|
break;
|
|
case 'U' :
|
|
Game.instance.boxJaffa();
|
|
break;
|
|
case 'E' :
|
|
Game.instance.shootStargate(Color.YELLOW);
|
|
break;
|
|
case 'R' :
|
|
Game.instance.shootStargate(Color.BLUE);
|
|
break;
|
|
case 'O' :
|
|
Game.instance.shootStargate(Color.RED);
|
|
break;
|
|
case 'P' :
|
|
Game.instance.shootStargate(Color.GREEN);
|
|
break;
|
|
}
|
|
Game.instance.updateDisplay();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Akkor hívódik meg, amikor nem sikerül betölteni a megjelenítéshez
|
|
* szükséges képeket. Ekkor egy felugró panelban egy figyelmeztető
|
|
* üzenetet ír ki.
|
|
*/
|
|
public static void ioErrorMessage(){
|
|
JOptionPane.showMessageDialog(null, "Nem sikerült betölteni a dzidzás képeket :( ! Biztos a helyükön vannak?");
|
|
}
|
|
}
|