Comments added to Game.java
This commit is contained in:
parent
7848304f72
commit
d118036fc0
@ -6,21 +6,62 @@ import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Egy játékmenetet reprezentáló oszály.
|
||||
*/
|
||||
public class Game {
|
||||
/**
|
||||
* Az egyik játékos, O'Neill ezredes tárolása.
|
||||
*/
|
||||
private Player oneill = null;
|
||||
|
||||
/**
|
||||
* A másik játékos, Jaffa tárolása.
|
||||
*/
|
||||
private Player jaffa = null;
|
||||
|
||||
/**
|
||||
* A Replikátor tárolása.
|
||||
*/
|
||||
private PlayerBase replicator = null;
|
||||
|
||||
/**
|
||||
* Az aktuális útvesztő tárolása.
|
||||
*/
|
||||
private Dungeon dungeon;
|
||||
|
||||
/**
|
||||
* A játékidő tárolása.
|
||||
*/
|
||||
private FlowOfTime flowoftime;
|
||||
|
||||
/**
|
||||
* A megjelenítési felület tárolása.
|
||||
*/
|
||||
private Display display;
|
||||
|
||||
/**
|
||||
* Egy játékpéldány.
|
||||
*/
|
||||
public static Game instance = new Game();
|
||||
|
||||
/**
|
||||
* Az osztály konstruktora.
|
||||
*/
|
||||
private Game() {}
|
||||
|
||||
/**
|
||||
* A Replikátor megsemmisítését implementáló függvény.
|
||||
* Ha a Replikátor úgy semmisült meg, hogy szakadékba esett, akkor
|
||||
* a szakadék helyét egy mező veszi át.
|
||||
*
|
||||
* @param caller a megsemmisülő Replikátor
|
||||
* @see Tile#setX(int)
|
||||
* @see Tile#setY(int)
|
||||
* @see Tile#setAdajacentTile(Tile, Direction)
|
||||
* @see Tile#getAdjacentTile(Direction)
|
||||
* @see Display#gapMagic(Gap, Field, int)
|
||||
*/
|
||||
public void playerBaseDestroyed(PlayerBase caller) {
|
||||
if (caller.getCurrentTile().isGap()) {
|
||||
Field field = new Field();
|
||||
@ -47,6 +88,17 @@ public class Game {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Egy játékos megsemmisítését implementáló függvény. Csökkenti a játék
|
||||
* teljesítéséhez szükséges ZPM-ek számát a megsemmisülő általá
|
||||
* összegyűjtött ZPM-ekkel, majd frissíti a megjelenítést.
|
||||
* Ha mindkét játékos halott, akkor a játék véget ér Anubis győzelmével.
|
||||
*
|
||||
* @param caller a megsemmisülő játékos
|
||||
* @see #updateDisplay()
|
||||
* @see FlowOfTime#stopTime()
|
||||
* @see #stopGame(GameoverCause)
|
||||
*/
|
||||
public void playerDestroyed(Player caller) {
|
||||
dungeon.setZPMsToWin(dungeon.getZPMsToWin() - caller.getZPMCount());
|
||||
Game.instance.updateDisplay();
|
||||
@ -56,14 +108,38 @@ public class Game {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Beállítja az aktuális útvesztőt a kapott útvesztőre.
|
||||
*
|
||||
* @param dungeon kapott útvesztő
|
||||
*/
|
||||
public void setDungeon(Dungeon dungeon) {
|
||||
this.dungeon = dungeon;
|
||||
}
|
||||
|
||||
/**
|
||||
* Beállítja az akutális megjelenítést a kapott megjelenítésre.
|
||||
*
|
||||
* @param display kapott megjelenítés
|
||||
*/
|
||||
public void setDisplay(Display display) {
|
||||
this.display = display;
|
||||
}
|
||||
|
||||
/**
|
||||
* Elindítja a játékot a kapott útvesztőt tartalmazó fájl alapján.
|
||||
* Inicializálja a csillagkapukat, felépíti az útvesztőt, létrehozza
|
||||
* a játékosokat és a Replikátort, valamint beállítja a megjelenítést.
|
||||
* Elindítja a zenét, majd a játékidőt is.
|
||||
*
|
||||
* @param dungeonFile kapott útvesztő
|
||||
* @throws IOException Ha nem található a fájl.
|
||||
* @see Stargate#init()
|
||||
* @see Dungeon#buildDungeon(File, Display)
|
||||
* @see Display#addVisual(Drawer)
|
||||
* @see Display#startMusic()
|
||||
* @see FlowOfTime#start(long)
|
||||
*/
|
||||
public void startGame(File dungeonFile) throws IOException {
|
||||
Stargate.init();
|
||||
|
||||
@ -84,6 +160,13 @@ public class Game {
|
||||
flowoftime.start(dungeon.getTimeLimit());
|
||||
}
|
||||
|
||||
/**
|
||||
* A játék megállítása valamilyen kapott okból. Az oknak megfelelően
|
||||
* más és más befejezése van a játéknak. Végül a zene leállítása.
|
||||
*
|
||||
* @param cause a leállítás oka
|
||||
* @see Display#stopMusic()
|
||||
*/
|
||||
public void stopGame(GameoverCause cause) {
|
||||
switch (cause){
|
||||
|
||||
@ -125,36 +208,83 @@ public class Game {
|
||||
display.stopMusic();
|
||||
}
|
||||
|
||||
/**
|
||||
* O'Neill ezredes léptetése a kapott irányba.
|
||||
*
|
||||
* @param direction kapott irány
|
||||
* @see Player#move(Direction)
|
||||
* @see #checkZPMStatus()
|
||||
*/
|
||||
public void moveONeill(Direction direction) {
|
||||
oneill.move(direction);
|
||||
checkZPMStatus();
|
||||
}
|
||||
|
||||
/**
|
||||
* Jaffa léptetése a kapott irányba.
|
||||
*
|
||||
* @param direction kapott irány
|
||||
* @see Player#move(Direction)
|
||||
* @see #checkZPMStatus()
|
||||
*/
|
||||
public void moveJaffa(Direction direction) {
|
||||
jaffa.move(direction);
|
||||
checkZPMStatus();
|
||||
}
|
||||
|
||||
/**
|
||||
* A Replikátor léptetése a kapott irányba.
|
||||
*
|
||||
* @param direction kapott irány
|
||||
* @see PlayerBase#move(Direction)
|
||||
*/
|
||||
public void moveReplicator(Direction direction) {
|
||||
replicator.move(direction);
|
||||
}
|
||||
|
||||
/**
|
||||
* O'Neill ezredes forgatása balra.
|
||||
*
|
||||
* @see Player#rotateLeft()
|
||||
*/
|
||||
public void rotateOneillLeft() {
|
||||
oneill.rotateLeft();
|
||||
}
|
||||
|
||||
/**
|
||||
* O'Neill ezredes forgatása jobbra.
|
||||
*
|
||||
* @see Player#rotateRight()
|
||||
*/
|
||||
public void rotateOneillRight() {
|
||||
oneill.rotateRight();
|
||||
}
|
||||
|
||||
/**
|
||||
* Jaffa forgatása balra.
|
||||
*
|
||||
* @see Player#rotateLeft()
|
||||
*/
|
||||
public void rotateJaffaLeft() {
|
||||
jaffa.rotateLeft();
|
||||
}
|
||||
|
||||
/**
|
||||
* Jaffa forgatása jobbra.
|
||||
*
|
||||
* @see Player#rotateRight()
|
||||
*/
|
||||
public void rotateJaffaRight() {
|
||||
jaffa.rotateRight();
|
||||
}
|
||||
|
||||
/**
|
||||
* O'Neill ezredes dobozainak kezelése.
|
||||
*
|
||||
* @see Player#hasBox()
|
||||
* @see Player#boxDrop()
|
||||
* @see Player#boxLift()
|
||||
*/
|
||||
public void boxONeill() {
|
||||
if(oneill.hasBox())
|
||||
oneill.boxDrop();
|
||||
@ -162,6 +292,13 @@ public class Game {
|
||||
oneill.boxLift();
|
||||
}
|
||||
|
||||
/**
|
||||
* Jaffa dobozainak kezelése.
|
||||
*
|
||||
* @see Player#hasBox()
|
||||
* @see Player#boxDrop()
|
||||
* @see Player#boxLift()
|
||||
*/
|
||||
public void boxJaffa() {
|
||||
if(jaffa.hasBox())
|
||||
jaffa.boxDrop();
|
||||
@ -169,6 +306,13 @@ public class Game {
|
||||
jaffa.boxLift();
|
||||
}
|
||||
|
||||
/**
|
||||
* Csillagkapu lövését implementáló függvény.
|
||||
* Ha a kilőtt csillagkapu sárga vagy kék, akkor O'Neill
|
||||
* ezredeshez tartozik, egyébként Jaffához.
|
||||
*
|
||||
* @param colora csillagkapu színe
|
||||
*/
|
||||
public void shootStargate(Color color) {
|
||||
if(color == Color.YELLOW || color == Color.BLUE)
|
||||
oneill.shootStargate(Stargate.get(color));
|
||||
@ -176,6 +320,11 @@ public class Game {
|
||||
jaffa.shootStargate(Stargate.get(color));
|
||||
}
|
||||
|
||||
/**
|
||||
* A megjelenítő panel frissítése, újrarajzolása.
|
||||
*
|
||||
* @see Control#ioErrorMessage()
|
||||
*/
|
||||
public void updateDisplay() {
|
||||
try {
|
||||
display.drawVisuals();
|
||||
@ -186,6 +335,16 @@ public class Game {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A ZPM-ek állapotának ellenőrzése. Ha O'Neill ezredes és Jaffa összesen
|
||||
* összegyűjtöttek annyi ZPM-et, amennyi szükséges a játék megnyeréséhez,
|
||||
* akkor az fog nyerni, aki több ZPM-et gyűjtött, egyébként veszítettek.
|
||||
* A játékidő leállítódik és a játék véget ér.
|
||||
*
|
||||
* @see Player#getZPMCount()
|
||||
* @see FlowOfTime#stopTime()
|
||||
* @see #stopGame(GameoverCause)
|
||||
*/
|
||||
private void checkZPMStatus() {
|
||||
if (oneill.getZPMCount() + jaffa.getZPMCount() >= dungeon.getZPMsToWin()) {
|
||||
if (oneill.getZPMCount() > jaffa.getZPMCount()) {
|
||||
@ -215,6 +374,15 @@ public class Game {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A ZPM-ek véletlenszerű generálását implementáló függvény. A függvény addig
|
||||
* iterál, amíg nem talál alkalmas helyet egy új ZPM-nek. Ha ezt megtalálta,
|
||||
* akkor létrehoz oda egy új ZPM-et, majd megnöveli a játékban való győzelemhez
|
||||
* szükséges ZPM-ek számát.
|
||||
*
|
||||
* @see Tile#setZPMOnTile(ZPM)
|
||||
* @see Dungeon#setZPMsToWin(int)
|
||||
*/
|
||||
public void generateZPM() {
|
||||
if(((jaffa.getZPMCount() + oneill.getZPMCount()) % 2) == 0) {
|
||||
Tile source = oneill.getCurrentTile();
|
||||
|
Loading…
Reference in New Issue
Block a user