import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Random; /** * This keeps and creates the tiles and information around them. Basically the level builder. */ public class Tiles implements Drawable { Fenster window; Cell[][] tileMap; float tilewidth; Talkable old_dude; Talkable item; Random rand = new Random(); Character spot; Character empty; Character tree; Character wall; int num_enemies = 1; Tiles(Fenster window, float tilewidth) { this.window = window; this.tilewidth = tilewidth; spot = new Character(window, ".", 0, false); empty = new Character(window, " "); tree = new Character(window, "A", window.color(10, 200, 10), true); wall = new Character(window, "#", window.color(132,86,60), true); } void settings() { old_dude = new Talkable(window, "T", window.color(20,20,200), true, new Bubble(window, Arrays.asList("Hey Junge!", "Was machst du hier unten?", "Lass mich dich heilen...")), true); item = new Talkable(window, "?", window.color(20,20,200), true, new Bubble(window, Arrays.asList("You found an item", "There is probably nothing", "you can do with it right now..."))); tileMap = new Cell[100][100]; for(int i = 0; i < tileMap.length; i++) { for(int j = 0; j < tileMap[0].length; j++) { tileMap[i][j] = new Cell(j, i, tilewidth, new Character(spot));//put whatever number you want in //here and it will insert it instead of 0's } } set(20, 14, new Character(tree)); set(25, 0, new Character(wall)); set(25, 1, new Character(wall)); set(25, 2, new Character(wall)); set(25, 3, new Character(wall)); set(25, 4, new Character(wall)); set(25, 5, new Character(wall)); set(25, 6, new Character(wall)); set(25, 7, new Character(wall)); set(25, 8, new Character(wall)); set(25, 9, new Character(wall)); set(25, 10, new Character(wall)); set(24, 0, new Character(wall)); set(23, 0, new Character(wall)); set(22, 0, new Character(wall)); set(21, 0, new Character(wall)); set(20, 0, new Character(wall)); set(20, 1, new Character(wall)); set(20, 2, new Character(wall)); tileMap[30][30].character = old_dude; tileMap[10][10].character = new Enemy(window); tileMap[rand.nextInt(50)][rand.nextInt(50)].character = item; } /** * This will draw all cells and also redraw all talkable cells, to the bubble is displayed on top. */ public void draw() { for(int i = 0; i < tileMap.length; i++) { for(int j = 0; j < tileMap[0].length; j++) { enemy_death_check(tileMap[i][j]); tileMap[i][j].draw(); } } ArrayList talkables = get(old_dude); for (Cell i : talkables) { i.draw(); } spawn_zombie(); } public ArrayList get(Character type) { ArrayList returns = new ArrayList(); for(int i = 0; i < tileMap.length; i++) { for(int j = 0; j < tileMap[0].length; j++) { if (tileMap[i][j].character.getClass().equals(type.getClass())) { returns.add(tileMap[i][j]); } } } return returns; } void enemy_death_check(Cell cell) { if (cell.character instanceof Enemy) { if ( ((Enemy) cell.character).health < 1) { cell.character = new Character(spot); num_enemies--; } } } void spawn_zombie() { if(num_enemies < 3) { tileMap[rand.nextInt(100)][rand.nextInt(100)].character = new Enemy(window, 20); num_enemies++; System.out.println("Number of Zombies: " + num_enemies); } } public Character get(int x,int y) { return tileMap[y][x].character; } public Cell get_cell(int x, int y) { return tileMap[y][x]; } public Character set(int x, int y, Character character) { tileMap[y][x].character = character; return tileMap[y][x].character; } }