Skip to content
Snippets Groups Projects
Commit dd5cab54 authored by sfphoton's avatar sfphoton
Browse files

Game ending detection works

parent 42078140
No related branches found
No related tags found
No related merge requests found
......@@ -6,6 +6,7 @@ public abstract class AbstractField {
protected HashMap<Direction, AbstractField> neighbours=new HashMap<Direction, AbstractField>();
protected boolean isCorner;
/**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
......@@ -44,4 +45,20 @@ public abstract class AbstractField {
view.drawAbstract();
}
/**
* Ez a függvény sarkot csinál a mzőből.
*/
public void setToCorner() {isCorner = true;}
/**
* A sarokba betoltunk valamit, így a szomszédjaiból sarok lett.
*/
public void fillCorner() {
if(!isCorner) return;
for(AbstractField neighbor : neighbours.values()) {
neighbor.setToCorner();
}
}
}
......@@ -3,7 +3,6 @@ package killer_sokoban;
public class Crate extends Moveable {
private boolean couldMove=true;
private boolean isOnTarget;
......@@ -38,17 +37,9 @@ public class Crate extends Moveable {
s.turnOn();
}
/**
* Beállítja, hogy a láda eltolható-e.
*/
public void setCouldMove(boolean b) {
couldMove=b;
}
public void printStat()
{
super.printStat();
System.out.println("couldMove: " + couldMove);
System.out.println("isOnTarget: " + isOnTarget);
}
......@@ -58,4 +49,15 @@ public class Crate extends Moveable {
super.shouldDraw(view);
view.drawCrate();
}
/**
* Jelzi a láda számára, hogy sarokba ragadt.
*/
@Override
public void arriveToCorner() {
myField.fillCorner();
Main.deleteCrate(this);
}
public boolean couldGameFinish() {return isOnTarget;}
}
......@@ -7,7 +7,6 @@ import java.util.Map.Entry;
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.canvas.Canvas;
......@@ -15,7 +14,6 @@ import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.*;
import javafx.scene.paint.Color;
import javafx.scene.paint.Paint;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.stage.Stage;
......@@ -58,6 +56,9 @@ public class Main extends Application {
if(i==workers.size()) activeWorker = (Worker)workers.values().toArray()[0];
else activeWorker = (Worker)workers.values().toArray()[i];
//checking if game should end
checkGameEnded();
view.update();
}
......@@ -196,6 +197,17 @@ public class Main extends Application {
crates.remove(getKeyByValue(crates, c));
}
private static void checkGameEnded() {
boolean ended = true;
for(Crate c : crates.values()) {
if(!c.couldGameFinish()) ended = false;
}
if (ended) {
endGame();
}
}
private static void endGame()
{
for (Entry<String, Worker> e : workers.entrySet())
......@@ -241,6 +253,9 @@ public class Main extends Application {
else if (cmd[0].equals("stat")) {
stat(cmd[1]);
}
else if (cmd[0].equals("setcorner")) {
setCorner(cmd[1]);
}
else if (cmd[0].equals("script")) {
script(cmd[1]);
}
......@@ -374,6 +389,10 @@ public class Main extends Application {
}
}
private static void setCorner(String field) {
map.get(field).setToCorner();
}
private static void script(String file) throws IOException
{
BufferedReader backup = br;
......
......@@ -85,4 +85,9 @@ public abstract class Moveable {
{
}
/**
* Azt jelzi a Moveable számára, hogy sarokba érkezett. Szándékosan üres, a láda felüüldefiniálja.
*/
public void arriveToCorner() {}
}
......@@ -26,7 +26,7 @@ public class SimpleField extends AbstractField {
{
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
if (isCorner) m.arriveToCorner();
}
......
......@@ -9,6 +9,10 @@ wmmmwmmtmw
wmmmwmmtmw
wmmmmmmmmw
wwwwwwwwww
setcorner f_1_1
setcorner f_1_8
setcorner f_8_1
setcorner f_8_8
setswitch f_3_4 f_1_4
worker w1 3 f_1_1
crate c1 f_1_3
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment