seit kurzen schreibe ich an einem kleinen Spiel, das an Pokémon angelehnt ist. Dies funktioniert soweit auch ganz gut, aber wenn man im Kampf eine Attacke auswählt, dann hängt sich das Programm auf.
Beim Schritt für Schritt Debugging sieht man, dass das Programm in Unit1.pas in Zeile 553 aussteigt
Code: Alles auswählen
Repeat
Case Key Of
VK_W: m.Selected -= 1;
VK_S: m.Selected += 1;
VK_SPACE: Player.Battle.ClickSelectedItem;
End;
While m.Selected > Length(m.Items) - 1 Do //<-- Hier in Zeile 553 steigt der Debugger ohne ersichtlichen Grund aus, und das Fenster reagiert nicht mehr...
m.Selected := m.Selected - Length(m.Items);
While m.Selected < 0 Do
m.Selected := m.Selected + Length(m.Items);
Until m.Items[m.Selected].Text <> '';
Die Attacke wird in GameClasses.pas in von Zeile 722 bis 735 ausgewählt. Dannach springt in Unit1.pas der Debugger in Zeile 553 einfach raus.
da ich weis, dass es schwierig ist, sich in fremden Code reinzufinden, beantworte ich gerne Fragen, um für mehr Verständnis zu sorgen...
Getestet und entwickelt unter:
Windows 7 (64bit)
Lazarus 1.0.14
P.S.: Um zu der problematischen stelle im code zu gelangen einfach mit "D" den spieler zu der figur rechts drehen und mit der Leertaste ansprechen, um Text zu bestätigen auch Leertaste benutzen, im Kampf mit WS durch das menü auf Kampf --> "Testattacke" oder "Testattacke 2.0" und dann mit Leertaste bestätigen...