-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathArena.java
More file actions
111 lines (102 loc) · 3.09 KB
/
Copy pathArena.java
File metadata and controls
111 lines (102 loc) · 3.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/**
* Repräsentation der Arena
*/
public class Arena {
/**
* Enthält alles, was sich auf dem Spielfeld befindet.
*/
private char[][] map;
/**
* Der Drache der Arena
*/
private Dragon dragon;
/**
* Der Spieler der Arena
*/
private Player player;
/**
* Erstellt eine neue Arena
*
* @param args Größen
*/
public Arena(String[] args) {
map = new char[Integer.parseInt(args[0])][Integer.parseInt(args[1])];
if (map[0].length < 5 || map.length < 5) {
System.out.println("Die Map muss mindestens die Dimension 5x5 haben.");
System.exit(25);
}
dragon = new Dragon(map[0].length, map.length); //Drachen in unterster Zeile
player = new Player(map[0].length, map.length); //Spieler in oberster Zeile
for (int i = 0; i < map.length; i++) { //Map mit Leerzeichen füllen
for (int j = 0; j < map[0].length; j++) {
map[i][j] = ' ';
}
}
for (int i = 0; i < map[0].length; i++) { //Wände in erster und letzter Zeile
map[0][i] = '#';
map[map.length - 1][i] = '#';
}
for (int i = 0; i < map.length; i++) { //Wände in erster und letzter Spalte
map[i][0] = '#';
map[i][map[0].length - 1] = '#';
}
}
/**
* Gibt die Map als String zurück
* @return Map als String
*/
@Override
public String toString() {
String result = "";
//Ausgabe der Map
String line = "";
for (int i = 0; i < map.length; i++) {
for (int j = 0; j < map[0].length; j++) {
if (i == player.getY() && j == player.getX())
line += player.getSymbol(); //Befindet sich hier der Player
else if (i == dragon.getY() && j == dragon.getX())
line += dragon.getSymbol(); //Befindet sich hier der Spieler
else line += map[i][j];
}
result += (line + "\n");
line = "";
}
return result;
}
/**
* Abstand zwischen zwei Charaktern
* @param char1 Charakter 1
* @param char2 Charakter 2
* @return Abstand in Feldern
*/
public int distance(Character char1, Character char2) {
int distanceX = Math.abs(char1.getX() - char2.getX());
int distanceY = Math.abs(char1.getY() - char2.getY());
return distanceX + distanceY;
}
/**
* Ist Feld begehbar
* @param y y-Koordinate
* @param x x-Koordintae
* @return Begehbar?
*/
public boolean walkable(int y, int x) {
boolean wall = map[y][x] != '#'; //Ist dort eine Wand?
boolean drago = dragon.getX() != x || dragon.getY() != y; //Ist dort ein Drache?
return wall && drago;
}
/**
* Gibt den Spieler der Map zurück
* @return Spieler
*/
public Player getPlayer() {
return player;
}
/**
* Gibt den Drachen der Map zurück
* @return Drache der Map
*/
public Dragon getDragon() {
return dragon;
}
}