diff --git a/src/killer_sokoban/Crate.java b/src/killer_sokoban/Crate.java index daee5dd3c6ef9ba4155c22ac252cd63a9fa589d4..b85ee2cb7ed86270c8d5b6af2710b8886162987c 100644 --- a/src/killer_sokoban/Crate.java +++ b/src/killer_sokoban/Crate.java @@ -1,59 +1,56 @@ -package killer_sokoban; - -import java.util.ArrayList; - -public class Crate extends Moveable { - - private boolean couldMove; - private boolean isOnTarget; - - - /** - * A láda elveszik, és nem vesz részt a további játékban. - */ - public void kill() { - Logger.enter(this, "kill", new ArrayList<Object>()); - // TODO not implemented - Logger.exit(this, "kill", null); - } - - /**Ha a láda célmezőre került, akkor kerül meghívásra ez a függvény. - * @param w a munkás, aki a tolást indította - */ - public void stepOnTarget(Worker w) { - ArrayList<Object> par = new ArrayList<>(); par.add(w); - Logger.enter(this, "stepOnTarget", par); - w.incrementPoint(); - isOnTarget=true; - Logger.exit(this, "stepOnTarget", null); - } - - /**Ha a láda a célmezőről lekerült, akkor kerül meghívásra ez a függvény. - * @param w a munkás, aki a tolást indította - */ - public void stepOffTarget(Worker w) { - ArrayList<Object> par = new ArrayList<>(); par.add(w); - Logger.enter(this, "stepOffTarget", par); - w.decrementPoint(); - isOnTarget=false; - Logger.exit(this, "stepOffTarget", null); - } - - /** Ha a láda kapcsolóra került, akkor kerül meghívásra ez a függvény. - * @param s kapcsolót tartalmazó mező - */ - public void onSwitch(SwitchField s) { - ArrayList<Object> par = new ArrayList<>(); par.add(s); - Logger.enter(this, "onSwitch", par); - s.turnOn(); - Logger.exit(this, "onSwitch", null); - } - - /** - * Beállítja, hogy a láda eltolható-e. - */ - public void setCouldMove(boolean b) { - couldMove=b; - } - -} +package killer_sokoban; + +import java.util.ArrayList; + +public class Crate extends Moveable { + + private boolean couldMove; + private boolean isOnTarget; + + + /** + * A láda elveszik, és nem vesz részt a további játékban. + */ + public void kill() { + + } + + /**Ha a láda célmezőre került, akkor kerül meghívásra ez a függvény. + * @param w a munkás, aki a tolást indította + */ + public void stepOnTarget(Worker w) { + + w.incrementPoint(); + isOnTarget=true; + + } + + /**Ha a láda a célmezőről lekerült, akkor kerül meghívásra ez a függvény. + * @param w a munkás, aki a tolást indította + */ + public void stepOffTarget(Worker w) { + + + w.decrementPoint(); + isOnTarget=false; + + } + + /** Ha a láda kapcsolóra került, akkor kerül meghívásra ez a függvény. + * @param s kapcsolót tartalmazó mező + */ + public void onSwitch(SwitchField s) { + + + s.turnOn(); + + } + + /** + * Beállítja, hogy a láda eltolható-e. + */ + public void setCouldMove(boolean b) { + couldMove=b; + } + +} diff --git a/src/killer_sokoban/Hole.java b/src/killer_sokoban/Hole.java index adf6fb19b89f3461ce7aadf051c6cdc0107ef409..034c93e6efcef69773ba77f796e6bccb328ddd37 100644 --- a/src/killer_sokoban/Hole.java +++ b/src/killer_sokoban/Hole.java @@ -12,13 +12,10 @@ public class Hole extends SimpleField { */ @Override public boolean accept(Direction toward, Worker w, Moveable m) { - ArrayList<Object> par = new ArrayList<>(); par.add(toward); par.add(w); par.add(m); - Logger.enter(this, "Hole::accept", par); - m.move(this); m.kill(); - Logger.exit(this, "Hole::accept", true); + return true; } } diff --git a/src/killer_sokoban/Moveable.java b/src/killer_sokoban/Moveable.java index 5ad86e60356d924fa6475573f4f9deb788bd0743..e8e90d61fb7dd87ceaa59a68035e063396bd1711 100644 --- a/src/killer_sokoban/Moveable.java +++ b/src/killer_sokoban/Moveable.java @@ -1,88 +1,81 @@ -package killer_sokoban; - -import java.util.ArrayList; - -public abstract class Moveable { - - protected SimpleField myField=null; - - /** - * Az objektum összenyomódásra kényszerül. - * @return true ha az objektum összenyomódott - */ - protected boolean squeez() - { - Logger.enter(this, "squeez", new ArrayList<Object>()); - Logger.exit(this, "squeez", false); - return false; - } - - //Abstract? - /** - * A Moveable elveszik és nem vesz részt a további játékban. - */ - public void kill() { - Logger.enter(this, "kill", new ArrayList<Object>()); - Logger.exit(this, "kill", null); - } - - //Ezek a függvények szándékosan üresek, csak a kiírást végzik - public void stepOnTarget(Worker w) {ArrayList<Object> par = new ArrayList<>(); par.add(w); Logger.enter(this, "stepOnTarget", par);Logger.exit(this, "stepOnTarget", null);} - public void stepOffTarget(Worker w) {ArrayList<Object> par = new ArrayList<>(); par.add(w); Logger.enter(this, "stepOffTarget", par);Logger.exit(this, "stepOffTarget", null);} - public void setCouldMove(boolean b) {ArrayList<Object> par = new ArrayList<>(); par.add(b); Logger.enter(this, "setCouldMove", par);Logger.exit(this, "setCouldMove", null);} - public void onSwitch(SwitchField s) {ArrayList<Object> par = new ArrayList<>(); par.add(s); Logger.enter(this, "onSwitch", par);Logger.exit(this, "onSwitch", null);} - - /**Az objektum másik mezőre került. - * - * @param here a mező, ahova az objektum került - */ - public void move(SimpleField here) { - ArrayList<Object> par = new ArrayList<>(); par.add(here); - Logger.enter(this, "move", par); - if (myField!=null) myField.dropMoveable(); - myField=here; - Logger.exit(this, "move", null); - } - - /**Akkor hívandó, ha az m Moveable helyére jelen Moveable akar kerülni. - * - * @param toward melyik irányból szeretnének rálépni - * @param w munkás, aki a tolást indította - * @param m mozgatható dolog a pályán, ennek a helyére akar egy másik Moveable kerülni - * @return ha sikerült eltolni m-et igazzal tlr vissza, ellenkező esetben hamissal - */ - public boolean meetWith(Direction toward, Worker w, Moveable m) { - ArrayList<Object> par = new ArrayList<>(); par.add(toward); par.add(w); par.add(m); - Logger.enter(this, "meetWith", par); - boolean ret=m.push(toward, w, this); - Logger.exit(this, "meetWith", ret); - return ret; - } - - /**Akkor hívandó, ha a Moveable-t meg akarjuk tolni. - * - * @param toward melyik iránya szeretne menni a Moveable - * @param w munkás, aki a tolást indította - * @param m az a Moveable, aki megtolja a jelenlegi Moveable-t. - * @return akkor tér vissza igazzal, ha távozni tudott a jelenlegi Moveable a mezőjéről. - */ - public boolean push(Direction toward, Worker w, Moveable m) { - //logging entry - ArrayList<Object> par = new ArrayList<>(); par.add(toward); par.add(w); par.add(m); - Logger.enter(this, "push", par); - - //trying to step away - boolean ret=myField.stepMe(toward, w); - - //if couldn't step, squeezing - boolean couldSqueez = false; - if (!ret) couldSqueez = squeez(); - - //finishing up - Logger.exit(this, "push", ret || couldSqueez); - return ret || couldSqueez; - } - - - -} +package killer_sokoban; + +import java.util.ArrayList; + +public abstract class Moveable { + + protected SimpleField myField=null; + + /** + * Az objektum összenyomódásra kényszerül. + * @return true ha az objektum összenyomódott + */ + protected boolean squeez() + { + + return false; + } + + //Abstract? + /** + * A Moveable elveszik és nem vesz részt a további játékban. + */ + public void kill() { + + } + + //Ezek a függvények szándékosan üresek, csak a kiírást végzik + public void stepOnTarget(Worker w) {} + public void stepOffTarget(Worker w) {} + public void setCouldMove(boolean b) {} + public void onSwitch(SwitchField s) {} + + /**Az objektum másik mezőre került. + * + * @param here a mező, ahova az objektum került + */ + public void move(SimpleField here) { + + if (myField!=null) myField.dropMoveable(); + myField=here; + + } + + /**Akkor hívandó, ha az m Moveable helyére jelen Moveable akar kerülni. + * + * @param toward melyik irányból szeretnének rálépni + * @param w munkás, aki a tolást indította + * @param m mozgatható dolog a pályán, ennek a helyére akar egy másik Moveable kerülni + * @return ha sikerült eltolni m-et igazzal tlr vissza, ellenkező esetben hamissal + */ + public boolean meetWith(Direction toward, Worker w, Moveable m) { + boolean ret=m.push(toward, w, this); + + return ret; + } + + /**Akkor hívandó, ha a Moveable-t meg akarjuk tolni. + * + * @param toward melyik iránya szeretne menni a Moveable + * @param w munkás, aki a tolást indította + * @param m az a Moveable, aki megtolja a jelenlegi Moveable-t. + * @return akkor tér vissza igazzal, ha távozni tudott a jelenlegi Moveable a mezőjéről. + */ + public boolean push(Direction toward, Worker w, Moveable m) { + + + //trying to step away + boolean ret=myField.stepMe(toward, w); + + //if couldn't step, squeezing + boolean couldSqueez = false; + if (!ret) couldSqueez = squeez(); + + //finishing up + + return ret || couldSqueez; + } + + + +} diff --git a/src/killer_sokoban/SimpleField.java b/src/killer_sokoban/SimpleField.java index d614e30a39268156a06e2a37b03d9894fa424e34..327fff9e850deb5ec62c3838ffe45ac8f710661e 100644 --- a/src/killer_sokoban/SimpleField.java +++ b/src/killer_sokoban/SimpleField.java @@ -1,140 +1,137 @@ -package killer_sokoban; - -import java.util.ArrayList; - -public class SimpleField extends AbstractField { - - protected Moveable myMoveable=null; - protected Fluid fluid = new Fluid(); - - /**Ez a függvény azt jelzi a mező számára, hogy szeretnének rálépni. - * @param toward melyik irányból szeretnének rálépni - * @param w munkás, aki a tolást indította - * @param m mozgatható dolog a pályán, ez szeretne a mezőre lépni - * @return ha befogadja a paraméterül kapott Moveable-t, true-val tér vissza, ellenkező esetben false-szal. - */ - @Override - public boolean accept(Direction toward, Worker w, Moveable m) { - ArrayList<Object> par = new ArrayList<>(); par.add(toward); par.add(w); par.add(m); - Logger.enter(this, "SimpleField::accept", par); - boolean ret=true; //Alapvetően elfogadnánk.... - if (myMoveable != null) //...kivétel ha van rajta valaki... - { - ret=m.meetWith(toward, w, myMoveable); //...aki nem hajlandó elmenni - } - - //Elfogadás adminisztrációja - if (ret) - { - m.move(this); //Fontos a sorrend, mert ez a függvény eldobatja magát m mezőjével. - myMoveable=m; - //determineBlocked(toward); //A szkeletonban maradjon kikommentelve... sok szomszédot létre kellene hozni a helyes működéshez - } - - Logger.exit(this, "SimpleField::accept", ret); - return ret; - } - - - /** - * Akkor hívja a mezőn a rajta álló Moveable, ha egy másik mezőre szeretne lépni. - * @param toward melyik irányban lévő szomszédos mezőre lép a Moveable - * @param w munkás, aki a mozgást indította - * @return ha a lépés sikeres, igazzal, ellenkzeő esetben hamissal tér vissza. - */ - public boolean stepMe(Direction toward, Worker w) - { - ArrayList<Object> par = new ArrayList<>(); par.add(toward); par.add(w); - Logger.enter(this, "stepMe", par); - if(!w.decrementForce(fluid.getFriction())) { - Logger.exit(this, "stepMe", false); - return false; - } - boolean ret=neighbours.get(toward).accept(toward, w, myMoveable); - Logger.exit(this, "stepMe", ret); - return ret; - - } - - /** - * Ellenőrzi, hogy van-e legalább két nem szemközti szomszédja, ahonnan - * egy esetleg rajta lévő láda nem lenne közvetlenül tolható. - * - * @param d az irány ahonnan a tolás indításra került - */ - protected void determineBlocked(Direction d) - { - Logger.enter(this, "SimpleField::determineBlocked", new ArrayList<>()); - ArrayList<Boolean> couldMove=new ArrayList<Boolean>(); - for (int i=0; i<4; i++) - { - if (Direction.Dir(i)!=d.opposite()) couldMove.add(neighbours.get(d).couldMoveOn(d)); - else couldMove.add(true); - } - - boolean blocked=false; - couldMove.add(couldMove.get(0)); //körbenforgás miatt, ha az első és az utolsó irány lenne a "sarok" - for (int i=0; i<4; i++) - { - if (!couldMove.get(i) && !couldMove.get(i+1)) blocked=true; - } - myMoveable.setCouldMove(!blocked); - - Logger.exit(this, "SimpleField::determineBlocked", null); - } - - - /** Megkérdezi a mezőtől, hogy ha egy tolás következne be a paraméterként átadott irányba, akkor ez lehetséges-e. - * @param toward ebbe az irányba következne be a tolás - * @return ha lehetséges a tolás, true-val tér vissza, egyébként false-szal. - */ - @Override - public boolean couldMoveOn(Direction toward) { - Logger.enter(this, "SimpleField::couldMoveOn", new ArrayList<>()); - boolean ret = myMoveable==null || neighbours.get(toward).couldMoveOn(toward); - Logger.exit(this, "SimpleField::couldMoveOn", ret); - return ret; - } - - /** - * Eldobja a Moveable-t, az a mező felszabadul. - */ - public void dropMoveable() - { - Logger.enter(this, "SimpleField::dropMoveable", new ArrayList<>()); - myMoveable=null; - Logger.exit(this, "SimpleField::dropMoveable", null); - } - - protected class Fluid { - protected double friction; - - Fluid() { - friction = 1; - } - - public double getFriction() { - return friction; - } - } - - protected class Oil extends Fluid { - Oil() { - friction = 0; - } - } - - protected class Honey extends Fluid { - Honey() { - friction = 2; - } - } - - public void putOil() { - fluid = new Oil(); - } - - public void putHoney() { - fluid = new Honey(); - } -} +package killer_sokoban; + +import java.util.ArrayList; + +public class SimpleField extends AbstractField { + + protected Moveable myMoveable=null; + protected Fluid fluid = new Fluid(); + + /**Ez a függvény azt jelzi a mező számára, hogy szeretnének rálépni. + * @param toward melyik irányból szeretnének rálépni + * @param w munkás, aki a tolást indította + * @param m mozgatható dolog a pályán, ez szeretne a mezőre lépni + * @return ha befogadja a paraméterül kapott Moveable-t, true-val tér vissza, ellenkező esetben false-szal. + */ + @Override + public boolean accept(Direction toward, Worker w, Moveable m) { + boolean ret=true; //Alapvetően elfogadnánk.... + if (myMoveable != null) //...kivétel ha van rajta valaki... + { + ret=m.meetWith(toward, w, myMoveable); //...aki nem hajlandó elmenni + } + + //Elfogadás adminisztrációja + if (ret) + { + m.move(this); //Fontos a sorrend, mert ez a függvény eldobatja magát m mezőjével. + myMoveable=m; + //determineBlocked(toward); //A szkeletonban maradjon kikommentelve... sok szomszédot létre kellene hozni a helyes működéshez + } + + + return ret; + } + + + /** + * Akkor hívja a mezőn a rajta álló Moveable, ha egy másik mezőre szeretne lépni. + * @param toward melyik irányban lévő szomszédos mezőre lép a Moveable + * @param w munkás, aki a mozgást indította + * @return ha a lépés sikeres, igazzal, ellenkzeő esetben hamissal tér vissza. + */ + public boolean stepMe(Direction toward, Worker w) + { + + if(!w.decrementForce(fluid.getFriction())) { + + return false; + } + boolean ret=neighbours.get(toward).accept(toward, w, myMoveable); + + return ret; + + } + + /** + * Ellenőrzi, hogy van-e legalább két nem szemközti szomszédja, ahonnan + * egy esetleg rajta lévő láda nem lenne közvetlenül tolható. + * + * @param d az irány ahonnan a tolás indításra került + */ + protected void determineBlocked(Direction d) + { + + ArrayList<Boolean> couldMove=new ArrayList<Boolean>(); + for (int i=0; i<4; i++) + { + if (Direction.Dir(i)!=d.opposite()) couldMove.add(neighbours.get(d).couldMoveOn(d)); + else couldMove.add(true); + } + + boolean blocked=false; + couldMove.add(couldMove.get(0)); //körbenforgás miatt, ha az első és az utolsó irány lenne a "sarok" + for (int i=0; i<4; i++) + { + if (!couldMove.get(i) && !couldMove.get(i+1)) blocked=true; + } + + + + } + + + /** Megkérdezi a mezőtől, hogy ha egy tolás következne be a paraméterként átadott irányba, akkor ez lehetséges-e. + * @param toward ebbe az irányba következne be a tolás + * @return ha lehetséges a tolás, true-val tér vissza, egyébként false-szal. + */ + @Override + public boolean couldMoveOn(Direction toward) { + + boolean ret = myMoveable==null || neighbours.get(toward).couldMoveOn(toward); + + return ret; + } + + /** + * Eldobja a Moveable-t, az a mező felszabadul. + */ + public void dropMoveable() + { + + myMoveable=null; + + } + + protected class Fluid { + protected double friction; + + Fluid() { + friction = 1; + } + + public double getFriction() { + return friction; + } + } + + protected class Oil extends Fluid { + Oil() { + friction = 0; + } + } + + protected class Honey extends Fluid { + Honey() { + friction = 2; + } + } + + public void putOil() { + fluid = new Oil(); + } + + public void putHoney() { + fluid = new Honey(); + } +} diff --git a/src/killer_sokoban/SwitchField.java b/src/killer_sokoban/SwitchField.java index dce669a7ed97509ffd0155bf6f0354cba50cfde0..ac06f595e453a14d97ca0db32bf21da8540ebe45 100644 --- a/src/killer_sokoban/SwitchField.java +++ b/src/killer_sokoban/SwitchField.java @@ -1,65 +1,64 @@ -package killer_sokoban; - -import java.util.ArrayList; - -public class SwitchField extends SimpleField { - - private SwitchableHole sHole; - - - /**Ez a függvény azt jelzi a mező számára, hogy szeretnének rálépni. - * @param toward melyik irányból szeretnének rálépni - * @param w munkás, aki a tolást indította - * @param m mozgatható dolog a pályán, ez szeretne a mezőre lépni - * @return ha befogadja a paraméterül kapott Moveable-t, true-val tér vissza, ellenkező esetben false-szal. - */ - @Override - public boolean accept(Direction toward, Worker w, Moveable m) { - ArrayList<Object> par = new ArrayList<>(); par.add(toward); par.add(w); par.add(m); - Logger.enter(this, "SwitchField::accept", par); - boolean ret=super.accept(toward, w, m); - if (ret) myMoveable.onSwitch(this); - Logger.exit(this, "SwitchField::accept", ret); - return ret; - } - - /** - * Aktiválja a kapcsolót. - */ - public void turnOn() { - Logger.enter(this, "turnOn", new ArrayList<>()); - if(sHole!=null) - sHole.open(); - Logger.exit(this, "turnOn", null); - } - - /** - * Deaktiválja a kapcsolót. - */ - public void turnOff() { - Logger.enter(this, "turnOff", new ArrayList<>()); - if(sHole!=null) - sHole.close(); - Logger.exit(this, "turnOff", null); - } - - /** - * Eldobja a Moveable-t, az a mező felszabadul. - */ - public void dropMoveable() - { - Logger.enter(this, "SwitchField::dropMoveable", new ArrayList<>()); - super.dropMoveable(); - turnOff(); - Logger.exit(this, "SwitchField::dropMoveable", null); - } - - /** - * Beállítja a mező által kapcsolgatott lyukat. - * @param sh az új SwitchableHole - */ - public void setSHole(SwitchableHole sh) { - sHole = sh; - } -} - +package killer_sokoban; + +import java.util.ArrayList; + +public class SwitchField extends SimpleField { + + private SwitchableHole sHole; + + + /**Ez a függvény azt jelzi a mező számára, hogy szeretnének rálépni. + * @param toward melyik irányból szeretnének rálépni + * @param w munkás, aki a tolást indította + * @param m mozgatható dolog a pályán, ez szeretne a mezőre lépni + * @return ha befogadja a paraméterül kapott Moveable-t, true-val tér vissza, ellenkező esetben false-szal. + */ + @Override + public boolean accept(Direction toward, Worker w, Moveable m) { + + boolean ret=super.accept(toward, w, m); + if (ret) myMoveable.onSwitch(this); + + return ret; + } + + /** + * Aktiválja a kapcsolót. + */ + public void turnOn() { + + if(sHole!=null) + sHole.open(); + + } + + /** + * Deaktiválja a kapcsolót. + */ + public void turnOff() { + + if(sHole!=null) + sHole.close(); + + } + + /** + * Eldobja a Moveable-t, az a mező felszabadul. + */ + public void dropMoveable() + { + + super.dropMoveable(); + turnOff(); + + } + + /** + * Beállítja a mező által kapcsolgatott lyukat. + * @param sh az új SwitchableHole + */ + public void setSHole(SwitchableHole sh) { + sHole = sh; + } +} + diff --git a/src/killer_sokoban/SwitchableHole.java b/src/killer_sokoban/SwitchableHole.java index fda7b2b54bb94d19fe4953292469099ff302b7e1..3378e9c731714abe640fb21a294c17e3a548feb3 100644 --- a/src/killer_sokoban/SwitchableHole.java +++ b/src/killer_sokoban/SwitchableHole.java @@ -17,22 +17,21 @@ public class SwitchableHole extends SimpleField { */ @Override public boolean accept(Direction toward, Worker w, Moveable m) { - ArrayList<Object> par = new ArrayList<>(); par.add(toward); par.add(w); par.add(m); - Logger.enter(this, "SwitchableHole::accept", par); + System.out.println("Nyitva van a lyuk? (I/N)"); Scanner sc = new Scanner(System.in); String valasz=sc.next(); if(valasz.equals("I")||valasz.equals("i")) { - Logger.disable(); + open(); - Logger.enable(); + } else if(valasz.equals("N")||valasz.equals("n")) { - Logger.disable(); + close(); - Logger.enable(); + } else { @@ -58,7 +57,7 @@ public class SwitchableHole extends SimpleField { } - Logger.exit(this, "SwitchableHole::accept", ret); + return ret; } @@ -67,11 +66,11 @@ public class SwitchableHole extends SimpleField { */ public void open() { - Logger.enter(this, "open", new ArrayList<>()); + if (myMoveable!=null) myMoveable.kill(); opened=true; - Logger.exit(this, "open", null); + } /** @@ -79,9 +78,9 @@ public class SwitchableHole extends SimpleField { */ public void close() { - Logger.enter(this, "close", new ArrayList<>()); + opened=false; - Logger.exit(this, "close", null); + } diff --git a/src/killer_sokoban/TargetField.java b/src/killer_sokoban/TargetField.java index c8158cf96d46178eab5d3088aeae37c39611ae36..ecfe63b9ae4733b0b5a8c20c9e6dc95294f8285e 100644 --- a/src/killer_sokoban/TargetField.java +++ b/src/killer_sokoban/TargetField.java @@ -12,11 +12,7 @@ public class TargetField extends SimpleField { */ @Override public boolean accept(Direction toward, Worker w, Moveable m) { - ArrayList<Object> par = new ArrayList<>(); par.add(toward); par.add(w); par.add(m); - Logger.enter(this, "TargetField::accept", par); - - - + // boolean ret=true; //Alapvetően elfogadnánk.... // if (myMoveable != null) //...kivétel ha van rajta valaki... // { @@ -49,7 +45,7 @@ public class TargetField extends SimpleField { } - Logger.exit(this, "TargetField::accept", ret); + return ret; } } diff --git a/src/killer_sokoban/Wall.java b/src/killer_sokoban/Wall.java index 415f52563348f7668615581d98e17af7aee1edca..f3b846865b846c5f2318176fb2ebb7c1ace23d23 100644 --- a/src/killer_sokoban/Wall.java +++ b/src/killer_sokoban/Wall.java @@ -12,9 +12,7 @@ public class Wall extends AbstractField { */ @Override public boolean accept(Direction toward, Worker w, Moveable m) { - ArrayList<Object> par = new ArrayList<>(); par.add(toward); par.add(w); par.add(m); - Logger.enter(this, "Wall::accept", par); //TODO: Wall:: kell? - én az egységesség kedvéért bennehagynám - Logger.exit(this, "Wall::accept", false); + return false; } diff --git a/src/killer_sokoban/Worker.java b/src/killer_sokoban/Worker.java index 7c7a45ee8ae13207f66cbe4d9d2ddd98fdcd060a..d9254faede39b77ac6526a3af4074541be8c101c 100644 --- a/src/killer_sokoban/Worker.java +++ b/src/killer_sokoban/Worker.java @@ -1,85 +1,81 @@ -package killer_sokoban; - -import java.util.ArrayList; - -public class Worker extends Moveable { - - private boolean alive; - private int points; - private double force; - private double activeForce; - - /** - * Konstruktor - */ - public Worker() { - force = 5; - } - - /** - * Ha a játékos szeretné léptetni valamely irányba a munkást, akkor hívódik meg ez a függvény.. - * @param toward amelyik irányba szeretné léptetni a munkást. - * @return ha a lépés sikeres volt, igazzal, ellenkező esetben hamissal tér vissza. - */ - public boolean step(Direction toward) - { - ArrayList<Object> par = new ArrayList<>(); par.add(toward); - Logger.enter(this, "step", par); - activeForce = force; - boolean result=myField.stepMe(toward, this); - Logger.exit(this, "step", result); - return result; - } - - /** - * Pontot ad a játékosnak. - */ - public void incrementPoint() { - Logger.enter(this, "incrementPoint", new ArrayList<>()); - points++; - Logger.exit(this, "incrementPoint", null); - } - - /** - * Pontot vesz el a játékostól. - */ - public void decrementPoint() { - Logger.enter(this, "decrementPoint", new ArrayList<>()); - points--; - Logger.exit(this, "decrementPoint", null); - } - - /** - * A munkás meghal, és nem vesz részt a további játékban. - */ - public void kill() { - Logger.enter(this, "kill", new ArrayList<>()); - alive=false; - Logger.exit(this, "kill", null); - } - - /** - * A munkás összenyomódásra kényszerül. - */ - protected boolean squeez() - { - Logger.enter(this, "squeez", new ArrayList<>()); - kill(); - Logger.exit(this, "squeez", true); - return true; - } - - /** - * A munkás eldönti, hogy az újabb ládát még el tudja-e tolni - */ - public boolean decrementForce(double by) { - ArrayList<Object> par = new ArrayList<>(); par.add(by); - Logger.enter(this, "decrementForce", par); - - activeForce -= by; - - Logger.exit(this, "decrementForce", (activeForce >= 0)); - return (activeForce>=0.0); - } - -} +package killer_sokoban; + +import java.util.ArrayList; + +public class Worker extends Moveable { + + private boolean alive; + private int points; + private double force; + private double activeForce; + + /** + * Konstruktor + */ + public Worker() { + force = 5; + } + + /** + * Ha a játékos szeretné léptetni valamely irányba a munkást, akkor hívódik meg ez a függvény.. + * @param toward amelyik irányba szeretné léptetni a munkást. + * @return ha a lépés sikeres volt, igazzal, ellenkező esetben hamissal tér vissza. + */ + public boolean step(Direction toward) + { + + activeForce = force; + boolean result=myField.stepMe(toward, this); + + return result; + } + + /** + * Pontot ad a játékosnak. + */ + public void incrementPoint() { + + points++; + + } + + /** + * Pontot vesz el a játékostól. + */ + public void decrementPoint() { + + points--; + + } + + /** + * A munkás meghal, és nem vesz részt a további játékban. + */ + public void kill() { + + alive=false; + + } + + /** + * A munkás összenyomódásra kényszerül. + */ + protected boolean squeez() + { + + kill(); + + return true; + } + + /** + * A munkás eldönti, hogy az újabb ládát még el tudja-e tolni + */ + public boolean decrementForce(double by) { + + activeForce -= by; + + return (activeForce>=0.0); + } + +}