133 lines
4.2 KiB
Java
133 lines
4.2 KiB
Java
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<Cell> talkables = get(old_dude);
|
|
for (Cell i : talkables) {
|
|
i.draw();
|
|
}
|
|
|
|
spawn_zombie();
|
|
}
|
|
|
|
public ArrayList<Cell> get(Character type) {
|
|
ArrayList<Cell> returns = new ArrayList<Cell>();
|
|
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;
|
|
}
|
|
}
|