Entwickler-Ecke

C# - Die Sprache - Position in einem Multidim-Array bestimmen


Namenlosnameless - Sa 23.01.10 01:55
Titel: Position in einem Multidim-Array bestimmen
Hallo!

Ich bin gerade dabei mir PAC-MAN zu schreiben, dabei stehe ich vor einem Problem!
Prinzipiel arbeite ich mit einem 2-Dimensionalem Array der das Spielfeld für den Computer symbolisiert.
Ich glaube das nennt man Tilemap oder so ähnlich.

In diesem Array gibt es 5 Zustände die durch int-Werte dargestellt werden. z.B. Wert 4: Hier ist PAC-MAN

Nun zu Meinem Problem: Da ich eine beliebige Anzahl an Gegnern habe muss ich sie alle über eine foreach, die nach den Werten für "Gegner" im Array sucht, ansprechen.
Dabei muss ich zwangsläufig die Position des Gegners bestimmen können. Also z.B. Der Wert für Gegner steht auf Arraypoition [7,0] oder [15,4].
Dazu muss man noch sagen das die erste Dimension an eine Variable "x" übergeben werden soll und die 2te an "y".

Kann mir da jemand helfen? Ich will endlich mal ein "größeres" Projekt das ich mir vornehme auch beenden.

mvg Namenlosnameless


Greenberet - Sa 23.01.10 11:21

ich würde es anders machen...
du hast eine 2dim array, was 2(3) zustände hat:
0 = Wand
1 = Begehbar
(2 = Teleport zu X/Y )


Alle anderen objekte in der Karte( Frucht, geist, "Punkt", pacman, "ängstliche geister" ) erstellst du als Objekt in einer Extra Liste ( oder mehreren Listen ). Jedes dieser Objekte hat die Koordinaten X/Y.


Namenlosnameless - Sa 23.01.10 14:07

Danke für die Antwort

Ist auch eine Variante!

ICh denk mal drüber nach!

Trotzdem würde ich es interessant finden wie ich die "Koordinaten" im Array auslesen kann. Vlt für andere Sachen..


Kha - Sa 23.01.10 21:54

user profile iconNamenlosnameless hat folgendes geschrieben Zum zitierten Posting springen:
Trotzdem würde ich es interessant finden wie ich die "Koordinaten" im Array auslesen kann. Vlt für andere Sachen..
Du gehst das Array von hinten nach vorne durch, bis du gefunden hast, was du suchst ;) .
Eine "Gegner"-Liste wäre also auf jeden Fall eleganter, wenn auch bei Pacman-Verhältnissen noch nicht unbedingt notwendig.


Namenlosnameless - So 24.01.10 01:06

user profile iconKha hat folgendes geschrieben Zum zitierten Posting springen:
Du gehst das Array von hinten nach vorne durch, bis du gefunden hast, was du suchst ;)
.

kannst du mir das etwas genauer erklären? Weil das ist ja genau das was ich mit der foreach bezwecken will. Ich suche solange bis mir der Wert "Gegner" zurück gegeben wird.. Allerdings weiß ich danach nicht an welcher Arrayposition das Element gefunden wurde? oder?


Kha - So 24.01.10 01:36

Achso, darum geht es. Dann nimmst du statt foreach eben wieder das gute alte for.


Namenlosnameless - So 24.01.10 01:41

Auch war...^^ wenn ich das ganze richtig interpretiere dann brauch ich 2 for's oder??

Eine die alle "x" durchläuft, die in einer steht die alle "y" durchläuft. und wenn Array[x,y] den Wert "Gegner" ergibt dann mache blabla wenn nicht suche weiter oder?
Zumindest ist es so, das einzige das ich mir vorstellen kann, lass mich aber gerne etwas besserem belehren.


Namenlosnameless - Mi 27.01.10 00:16

Es hat geklappt!
Danke für die Hilfe!!