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