Hallo,
zur Übung habe ich mich mal hingesetzt und den A* Algorithmus gebastelt. Der Einfachheit halber gibt man vor Beginn die Länge und Breite des Grids an, den Startpunkt und den Zielpunkt. Zusätzlich legt man noch die möglichen Feldkosten fest, null wäre "nicht begehbar" / Hindernis.
Diese Feldkosten werden dann jeder Zelle zufällig zugewiesen, weil ich keine feste Map Struktur angebe. Das soll sich nun ändern, ich würde gerne in einer externen Datei die Karte definieren, dann auslesen und den Pfad berechnen lassen.
Hier mal ein Beispiel einer "schlechten" JSON Datei, ich lege alle Informationen fest und kann jeder Zelle noch zusätzlich benötigte Attribute zuweisen. Die Koordinaten ergeben sich von selbst aus den Schleifen bzw. dem 2D Array, daher muss die Zelle selbst nur weitere Informationen kennen.
|
Quellcode
|
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
|
{
"1": [
{
"cost": 1
},
{
"cost": null
},
{
"cost": 3
},
{
"cost": null
},
{
"cost": 2
}
],
"2": [
{
"cost": 3
},
{
"cost": 2
},
{
"cost": null
},
{
"cost": 1
},
{
"cost": 2
}
],
"start": {
"x": 3,
"y": 5
},
"target": {
"x": 8,
"y": 2
}
}
|
Ich bin mir aber relativ sicher, dass es für solche Pseudo Level Editoren passendere Dateiformate gibt, mit denen man ein Level darstellen kann. Prinzipiell geht es nur um eine 2D Karte, die sich von selbst anhand einer Struktur mit x und y hochzieht und Zellen eine bestimmte Anzahl an Attributen haben.
Sinnvoll wäre beispielsweise, Start und Ziel nicht separat anzulegen, sondern einfach an der passenden Zelle zu sagen du bist der Start. Vielleicht soll eine andere Zelle ein Gebäude halten und eine weitere einen Gegner. Oder ein Gebäude und einen Gegner.
Und das Ganze dann für m Zellen pro Reihe bei n Reihen. Kann jemand ein Dateiformat für Zellinformationen empfehlen?