Hallo zusammen,
hab ein Problem und zwar habe ich einen Punkt, der sich wie in einem
PacMan spiel steuern lassen soll. Funktioniert alles auch. Nur bei der
Map habe ich Probleme.
Hier der Codeausschnitt:
Sobald ich mit dem Punkt das Feld mit 0, in dem Fall mit der Farbe rot,
berühre, soll das Spiel beendet werden. Problem ist, es tut sich nichts.
Kopiere ich den Code aus CHECKCOLLISION oben in die ersten beiden
Schleifen rein, funktioniert es. Hat jemand eine Idee?
Danke vorab!
Hi!
Wie ist m_bGameRun deklariert? Mit volatile?
Warum schreibst du die Rückgabe von CheckCollisions in eine Globale
Variable, statt einen Rückgabewert zu benutzen?
Ausserdem frage ich mich, warum du bei jedem Aufruf das komplette
Tile[j][k]-Array füllst, wenn du bei jeder iteration nur einen einzelnen
Wert brauchst. Genau so in der haupt-Schleife.
Ich glaube du machst das viel zu umständlich mit der Kollisions-Abfrage.
Warum fragst du nicht einfach ab, auf welchem tile sich der Spieler
befindet und schaust dann, ob in der tilemap an der Stelle ein tile ist?
Oder habe ich das Prinzip falsch verstanden?
Hi,
bGameRun habe ich nur zu Testzwecken benutzt. Laut Debugger liegt der
Fehler hier:
Tile[j][k] = p_Spritemap[tilemap[j][k]].GetRect();
GetRect gibt mir ja den aktuellen Wert des Rects zurück. Aber aus irgend
einem Grund habe ich für alle Felder immer den ein und den selben Wert x
= -131... und y = 92...
Du hast ja recht, ich fülle bei jedem Durchgang das komplette Array neu.
Es liegt daran, dass ich erst einmal selbst das Ganze auf meine Art
versuchen möchte. Optimieren kann ich es dann immer noch. Möchte aber,
dass der grobe Ablauf stimmt ...