diff --git a/src/killer_sokoban/AbstractField.java b/src/killer_sokoban/AbstractField.java
index 075646b2c6609e10dd205ccc27c5d9642d17f794..e090fd856d9bf3cb7ea648efa101f928ad56244d 100644
--- a/src/killer_sokoban/AbstractField.java
+++ b/src/killer_sokoban/AbstractField.java
@@ -38,5 +38,10 @@ public abstract class AbstractField {
 		System.out.println("neighborDown: " + Main.getFieldName(neighbours.get(Direction.DOWN)));
 		System.out.println("neighborLeft: " + Main.getFieldName(neighbours.get(Direction.LEFT)));
 	}
+	
+	public void shouldDraw(View view)
+	{
+		view.drawAbstract();
+	}
 
 }
diff --git a/src/killer_sokoban/Crate.java b/src/killer_sokoban/Crate.java
index 070518b14d9c58178a5a5fedabda02c231c531ca..7e0e12e47e0e1e8a9740acb3561f85abe3614f7b 100644
--- a/src/killer_sokoban/Crate.java
+++ b/src/killer_sokoban/Crate.java
@@ -50,5 +50,11 @@ public class Crate extends Moveable {
 		System.out.println("couldMove: " + couldMove);
 		System.out.println("isOnTarget: " + isOnTarget);
 	}
-
+	
+	@Override
+	public void shouldDraw(View view)
+	{
+		super.shouldDraw(view);
+		view.drawCrate();
+	}
 }
diff --git a/src/killer_sokoban/Hole.java b/src/killer_sokoban/Hole.java
index 034c93e6efcef69773ba77f796e6bccb328ddd37..107fd82da4900baf1282b942b3f514008865d2f7 100644
--- a/src/killer_sokoban/Hole.java
+++ b/src/killer_sokoban/Hole.java
@@ -18,5 +18,12 @@ public class Hole extends SimpleField {
 
 		return true;
 	}
+	
+	@Override
+	public void shouldDraw(View view)
+	{
+		view.drawHole();		
+		super.shouldDraw(view);
+	}
 }
 
diff --git a/src/killer_sokoban/Main.java b/src/killer_sokoban/Main.java
index aebe80eb23b309c46e7912745e685630394e82ce..dffa482f7f61db3152728358719db2f18fbe82fa 100644
--- a/src/killer_sokoban/Main.java
+++ b/src/killer_sokoban/Main.java
@@ -4,7 +4,14 @@ import java.io.*;
 import java.util.*;
 import java.util.Map.Entry;
 
-public class Main {
+import javafx.application.Application;
+import javafx.scene.Group;
+import javafx.scene.Scene;
+import javafx.scene.canvas.Canvas;
+import javafx.stage.Stage;
+
+
+public class Main extends Application {
 	
 	private static HashMap<String, AbstractField> map = new HashMap<>(); //itt tároljuk a pályán lévő mezőket név (pl. "f_2_4") és referencia szerint
 	private static HashMap<String, Worker> workers = new HashMap<>(); //a munkások
@@ -15,16 +22,45 @@ public class Main {
 	private static InputStreamReader isr =	new InputStreamReader(System.in);
 	private static BufferedReader br = new BufferedReader(isr);
 	
+	private static View view=new View();
+	
+	@Override
+	public void start(Stage primaryStage) throws Exception {
+		// Ablak felépítése
+		primaryStage.setTitle("My super killer sokoban");
+        Group root = new Group();
+        Canvas canvas = new Canvas(300, 250);
+        view.setCanvas(canvas);
+        root.getChildren().add(canvas);
+        primaryStage.setScene(new Scene(root));
+        primaryStage.show();
+        
+        //Itt kellene betölteni a pályát
+		runCommand("script Teszteset25.in");
+		
+		//Ez végzi a rajzolást
+		view.update();
+		
+		//Egyéb adminisztratív teendők..
+		gameRunning=true;
+	}
+	public static void drawRequiredFor(int y, int x)
+	{
+		AbstractField af=map.get("f_"+y+"_"+x);
+		af.shouldDraw(view);
+	}
 	public static void main(String[] args) throws IOException {
 		
-		while (true) {
-			String line;
-			line = br.readLine();
-
-			if (line == null) break;
-			
-			runCommand(line);			
-		}
+		launch(args);
+		
+//		while (true) {
+//			String line;
+//			line = br.readLine();
+//
+//			if (line == null) break;
+//			
+//			runCommand(line);			
+//		}
 	}
 	
 	
@@ -163,6 +199,9 @@ public class Main {
 					map.get(name).setNeighbour(Direction.LEFT, map.get(nameLeft));
 			}
 		}
+		
+		//View újrainicializálása
+		view.init(lines,  columns);
 	}
 	
 	private static void spawnWorker(String name, double force, String field)
diff --git a/src/killer_sokoban/Moveable.java b/src/killer_sokoban/Moveable.java
index 4a0fc35d7294f918d6916f74187cb77e51b138d5..5ba820f95773dcfb2e2417d008664a51ac8ec3e2 100644
--- a/src/killer_sokoban/Moveable.java
+++ b/src/killer_sokoban/Moveable.java
@@ -81,4 +81,9 @@ public abstract class Moveable {
 		System.out.println("myField: " + Main.getFieldName(myField) );
 	}
 	
+	
+	public void shouldDraw(View view)
+	{
+	}
+	
 }
diff --git a/src/killer_sokoban/SimpleField.java b/src/killer_sokoban/SimpleField.java
index 39163f218a6de0084ad681172cdc18fa73b25386..045b7de1fda9407bfd7c4d2d2c48d10073216bd5 100644
--- a/src/killer_sokoban/SimpleField.java
+++ b/src/killer_sokoban/SimpleField.java
@@ -98,9 +98,16 @@ public class SimpleField extends AbstractField {
 	 */
 	public void dropMoveable()
 	{
-
 		myMoveable=null;
-
+	}
+	
+	@Override
+	public void shouldDraw(View view)
+	{
+		view.drawSimpleField();
+		fluid.shouldDraw(view);
+		if (myMoveable!=null) myMoveable.shouldDraw(view);
+		super.shouldDraw(view);
 	}
 	
 	protected class Fluid {
@@ -119,6 +126,10 @@ public class SimpleField extends AbstractField {
 			return "no fluid";
 		}
 		
+		public void shouldDraw(View view)
+		{
+		}
+		
 	}
 	
 	protected class Oil extends Fluid {
@@ -129,6 +140,12 @@ public class SimpleField extends AbstractField {
 		public String toString() {
 			return "oil";
 		}
+		@Override
+		public void shouldDraw(View view)
+		{
+			super.shouldDraw(view);
+			view.drawOil();
+		}
 	}
 	
 	protected class Honey extends Fluid {
@@ -139,6 +156,12 @@ public class SimpleField extends AbstractField {
 		public String toString() {
 			return "honey";
 		}
+		@Override
+		public void shouldDraw(View view)
+		{
+			super.shouldDraw(view);
+			view.drawHoney();
+		}
 	}
 	
 	public void putOil() {
diff --git a/src/killer_sokoban/SwitchField.java b/src/killer_sokoban/SwitchField.java
index 291a8ecb1c627cd9a956fde69f4fbb6c80b44b01..03ef598486d12a6771f1f54d4656586a1245adc8 100644
--- a/src/killer_sokoban/SwitchField.java
+++ b/src/killer_sokoban/SwitchField.java
@@ -68,5 +68,12 @@ public class SwitchField extends SimpleField {
 
 
 	}
+	
+	@Override
+	public void shouldDraw(View view)
+	{
+		view.drawSwitchField();		
+		super.shouldDraw(view);
+	}
 }
 
diff --git a/src/killer_sokoban/SwitchableHole.java b/src/killer_sokoban/SwitchableHole.java
index a5d066796c6ddb1b1ae576e1e6e4205458a9c339..347914a21541c9982f03f955c43fe5c01afc2057 100644
--- a/src/killer_sokoban/SwitchableHole.java
+++ b/src/killer_sokoban/SwitchableHole.java
@@ -59,5 +59,12 @@ public class SwitchableHole extends SimpleField {
 		System.out.println("opened: " + opened);
 	}
 	
+	@Override
+	public void shouldDraw(View view)
+	{
+		view.drawSwitchableHole();		
+		super.shouldDraw(view);
+	}
+	
 }
 
diff --git a/src/killer_sokoban/TargetField.java b/src/killer_sokoban/TargetField.java
index ecfe63b9ae4733b0b5a8c20c9e6dc95294f8285e..448b36c0a1b455dc27df2a0e36722b7fa50924b6 100644
--- a/src/killer_sokoban/TargetField.java
+++ b/src/killer_sokoban/TargetField.java
@@ -48,5 +48,12 @@ public class TargetField extends SimpleField {
 
 		return ret;
 	}
+	
+	@Override
+	public void shouldDraw(View view)
+	{
+		view.drawTargetField();		
+		super.shouldDraw(view);
+	}
 }
 
diff --git a/src/killer_sokoban/View.java b/src/killer_sokoban/View.java
new file mode 100644
index 0000000000000000000000000000000000000000..1a8f498b48f273ba53bf3f1c2cd2fc92c69160ba
--- /dev/null
+++ b/src/killer_sokoban/View.java
@@ -0,0 +1,87 @@
+package killer_sokoban;
+
+
+import javafx.scene.canvas.Canvas;
+import javafx.scene.canvas.GraphicsContext;
+import javafx.scene.paint.Color;
+ 
+public class View {
+	
+	public int line, column;
+	private int y, x;
+	private GraphicsContext gc;
+	
+	private int tileSize=20;
+	private int cratemargin=3;
+	
+	public void init(int line, int column)
+	{
+		this.line=line;
+		this.column=column;
+	}
+	public void setCanvas(Canvas c)
+	{
+		this.gc=c.getGraphicsContext2D();
+	}
+	
+	public void update()
+	{
+
+		for (x=0;x<column;x++)
+			for (y=0;y<line;y++)
+				Main.drawRequiredFor(y,x);
+				
+	}
+		 
+	 public void drawAbstract() {
+		 gc.setLineWidth(2);
+		 gc.setStroke(Color.BLUE);
+		 gc.strokeRect(x*tileSize, y*tileSize, tileSize, tileSize);
+	 }
+	 
+	 public void drawSimpleField() {		
+		 gc.setFill(Color.ALICEBLUE);
+		 gc.fillRect(x*tileSize, y*tileSize, tileSize, tileSize);
+	 }
+	 
+	 public void drawTargetField() {
+		 gc.setFill(Color.YELLOW);
+		 gc.fillRect(x*tileSize, y*tileSize, tileSize, tileSize);
+	 }
+	 public void drawHole() {
+		 gc.setFill(Color.BLACK);
+		 gc.fillRect(x*tileSize, y*tileSize, tileSize, tileSize);
+	 }
+	 public void drawSwitchableHole() {
+		 gc.setFill(Color.PINK);
+		 gc.fillRect(x*tileSize, y*tileSize, tileSize, tileSize);
+	 }
+	 public void drawSwitchField() {
+		 gc.setFill(Color.PLUM);
+		 gc.fillRect(x*tileSize, y*tileSize, tileSize, tileSize);
+	 }
+	 public void drawWall() {
+		 gc.setFill(Color.GREY);
+		 gc.fillRect(x*tileSize, y*tileSize, tileSize, tileSize);
+	 }
+	 public void drawOil() {
+		 gc.setFill(Color.SLATEGREY);
+		 gc.fillOval(x*tileSize, y*tileSize, tileSize, tileSize);
+	 }
+	 public void drawHoney() {
+		 gc.setFill(Color.GOLD);
+		 gc.fillOval(x*tileSize, y*tileSize, tileSize, tileSize);
+	 }
+	 
+	 public void drawWorker() {
+		 gc.setFill(Color.GREEN);
+		 gc.fillPolygon(new double[]{(x+0.1)*tileSize, (x+0.9)*tileSize, (x+0.5)*tileSize},
+                 new double[]{(y+0.9)*tileSize, (y+0.9)*tileSize, (y+0.1)*tileSize}, 3);
+	}
+	 public void drawCrate() {
+		 gc.setFill(Color.ORANGE);
+		 gc.fillRect(x*tileSize+cratemargin, y*tileSize+cratemargin, tileSize-2*cratemargin, tileSize-2*cratemargin);
+	 }
+	 
+	 
+}
diff --git a/src/killer_sokoban/Wall.java b/src/killer_sokoban/Wall.java
index f3b846865b846c5f2318176fb2ebb7c1ace23d23..070e3dd61d6fd3319d67bf4b428c55c80ed79ec1 100644
--- a/src/killer_sokoban/Wall.java
+++ b/src/killer_sokoban/Wall.java
@@ -24,5 +24,12 @@ public class Wall extends AbstractField {
 	public boolean couldMoveOn(Direction toward) {
 		return false;
 	}
+		
+	@Override
+	public void shouldDraw(View view)
+	{
+		view.drawWall();
+		super.shouldDraw(view);
+	}
 }
 
diff --git a/src/killer_sokoban/Worker.java b/src/killer_sokoban/Worker.java
index 91fffb71110e8471a567a7f7a64f2870817e3193..7fa9aa9fcd5e010dbdf61e53f4de85944c15d0fe 100644
--- a/src/killer_sokoban/Worker.java
+++ b/src/killer_sokoban/Worker.java
@@ -90,5 +90,12 @@ public class Worker extends Moveable {
 	public void onSwitch(SwitchField s) {
 		s.turnOff();
 	}
+	
+	@Override
+	public void shouldDraw(View view)
+	{
+		super.shouldDraw(view);
+		view.drawWorker();
+	}
 
 }