public class Feld { public static final int sizeX = 16; public static final int sizeY = 8; private final NoSchiff none = new NoSchiff(); private final BrokenSchiff broken = new BrokenSchiff(); public Schiff[][] map = { {none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none}, {none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none}, {none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none}, {none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none}, {none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none}, {none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none}, {none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none}, {none, none, none, none, none, none, none, none, none, none, none, none, none, none, none, none}, }; public Feld() { } public void printMap() { StringBuilder output = new StringBuilder("\033[2J "); int index = 0; for (int i=0; i < sizeX; i++) { output.append(String.format("%x ", i)); } output.append('\n'); for (Schiff[] row : this.map) { output.append(String.format("%x ", index)); for (Schiff ship : row) { // this seems to be the repr of the Schiff class, not the object actually? output.append(String.format("%s ", ship.repr())); } output.append('\n'); index++; } System.out.println(output); } public boolean insertShip(Schiff ship, int y, int x) { System.out.println(String.format( "Inserting ship into map: %s", ship )); if (x >= sizeX || y >= sizeY || y < 0 || x < 0) { System.err.println( String.format("Tried to insert a ship at invalid coordinates:\n"+ "x: %s\n"+ "y: %s\n", x, y) ); return false; } this.map[y][x] = ship; assert this.map[y][x] == ship; return true; } public boolean hit(int y, int x) { if (x >= sizeX || y >= sizeY || y < 0 || x < 0) { System.err.println("Tried to hit a ship at invalid coordinates."); return false; } if (map[y][x] instanceof RealSchiff) { if (map[y][x].laenge > 0) { map[y][x].laenge -= 1; map[y][x] = broken; System.out.println("Hit!"); } else { map[y][x].laenge = 0; map[y][x] = broken; System.out.println("Ship destroyed!"); } return true; } else { // no hit return false; } } }