From 45328d28f59589dfdfe5ec493d726f47a186674c Mon Sep 17 00:00:00 2001
From: Dennis Eisold <de@itstall.de>
Date: Tue, 19 Nov 2019 19:52:17 +0100
Subject: [PATCH] Player is working

---
 src/de/itstall/GameField.java | 10 +++++-----
 src/de/itstall/GameMain.java  | 12 ++----------
 src/de/itstall/Player.java    | 33 +++++++++++++++++++++++++++++++++
 src/de/itstall/Position.java  |  8 ++------
 src/de/itstall/World.java     | 25 +++++++++++++++++++++++++
 5 files changed, 67 insertions(+), 21 deletions(-)
 create mode 100644 src/de/itstall/Player.java
 create mode 100644 src/de/itstall/World.java

diff --git a/src/de/itstall/GameField.java b/src/de/itstall/GameField.java
index 0047745..7baa297 100644
--- a/src/de/itstall/GameField.java
+++ b/src/de/itstall/GameField.java
@@ -4,12 +4,13 @@ public class GameField {
 	public int width, height;
 	private GameTile[][] field;
 
-	GameField(int width, int height, String stringField) {
+	GameField(int width, String stringField) {
 		this.width = width;
-		this.height = height;
-		field = new GameTile[width][height];
+		this.height = stringField.length() /width;
 
-		for (int y = 0; y < height; ++y) {
+		field = new GameTile[width][this.height];
+
+		for (int y = 0; y < this.height; ++y) {
 			for (int x = 0; x < width; ++x) {
 
 				switch (stringField.charAt(x + y * width)) {
@@ -34,7 +35,6 @@ public class GameField {
 			for (int x = 0; x < this.field.length; x++) {
 				sb.append(this.field[x][y]);
 			}
-			sb.append("\n");
 		}
 
 		return sb.toString();
diff --git a/src/de/itstall/GameMain.java b/src/de/itstall/GameMain.java
index 19f1e6b..8684a41 100644
--- a/src/de/itstall/GameMain.java
+++ b/src/de/itstall/GameMain.java
@@ -3,16 +3,8 @@ package de.itstall;
 public class GameMain {
 	public static void main(String[] args) {
 
-		String field = "########" +
-				"#      #" +
-				"#      #" +
-				"###    #" +
-				"#      #" +
-				"########";
-
-		GameField gf = new GameField(8, 6, field);
-
-		System.out.println(gf);
+		World w = new World();
 
+		System.out.println(w.draw());
 	}
 }
diff --git a/src/de/itstall/Player.java b/src/de/itstall/Player.java
new file mode 100644
index 0000000..1800255
--- /dev/null
+++ b/src/de/itstall/Player.java
@@ -0,0 +1,33 @@
+package de.itstall;
+
+public class Player extends GameTile {
+
+	Player(Position position) {
+		this.pos = position;
+	}
+
+	public String draw(String s, int worldLength) {
+		int index = pos.toIndex( worldLength );
+		char[] chars = s.toCharArray();
+		chars[index] = this.toString().charAt(0);
+		return new String(chars);
+	}
+
+	public void moveLeft() {
+		pos.setPosition(pos.getX() - 1, pos.getY());
+	}
+	public void moveRight() {
+		pos.setPosition(pos.getX() + 1, pos.getY());
+	}
+	public void moveUp() {
+		pos.setPosition(pos.getX(), pos.getY() - 1);
+	}
+	public void moveDown() {
+		pos.setPosition(pos.getX(), pos.getY() + 1);
+	}
+
+	@Override
+	public String toString() {
+		return "@";
+	}
+}
diff --git a/src/de/itstall/Position.java b/src/de/itstall/Position.java
index 9d9413c..97e43ae 100644
--- a/src/de/itstall/Position.java
+++ b/src/de/itstall/Position.java
@@ -26,15 +26,11 @@ public class Position {
 		return x;
 	}
 
-	public void setX(int x) {
-		this.x = x;
-	}
-
 	public int getY() {
 		return y;
 	}
 
-	public void setY(int y) {
-		this.y = y;
+	public int toIndex(int width) {
+		return x + y * width;
 	}
 }
diff --git a/src/de/itstall/World.java b/src/de/itstall/World.java
new file mode 100644
index 0000000..57f2ba3
--- /dev/null
+++ b/src/de/itstall/World.java
@@ -0,0 +1,25 @@
+package de.itstall;
+
+public class World {
+	GameField field;
+	Player player;
+
+	public World() {
+		String canvas = "#########      ##      ####    ##      #########";
+		this.field = new GameField(8, canvas);
+		this.player = new Player(new Position(1, 1));
+	}
+
+	public String draw() {
+		StringBuilder sb = new StringBuilder();
+		String s = this.player.draw(this.field.toString(), this.field.width);
+
+		sb.append("\n\n\n\n\n\n\n");
+		for (int y = 0; y < this.field.height; y++) {
+			sb.append(s.substring(y * this.field.width, (y + 1) * this.field.width));
+			sb.append("\n");
+		}
+
+		return sb.toString();
+	}
+}
-- 
GitLab