Okay, habe das ganze nun hinbekommen.
Hier noch der Quellcode, vllt. hilfts ja jemandem!
Habe das ganze in einer Klasse:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| type TPlayer = class(TImageSprite) public procedure DoMove(MoveCount: Integer); override; procedure DoCollision(Sprite: TSprite; var Done: Boolean); override; end; |
Wobei wir die procedure DoCollision hierbei ausser acht lassen (am besten auskommentieren mit '//' davor, weil sonst das Programm nicht gestartet werden kann).
nun machen wir uns an die procedure DoMove:
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:
| procedure TPlayer.DoMove(MoveCount: Integer); begin inherited DoMove(MoveCount); AnimStart := 0; AnimCount := 0; If ((isup in Form1.DXInput1.States) and not (isdown in Form1.DXInput1.States)) or (player1.y > spieler2y) then with Player1 do begin y := y - 1; end; If ((isdown in Form1.DXInput1.States) and not (isup in Form1.DXInput1.States)) or (player1.y < spieler2y) then with Player1 do begin y := y + 1; end; If ((isright in Form1.DXInput1.States) and not (isleft in Form1.DXInput1.States)) or (player1.x < spieler2x) then with Player1 do begin image := Form1.Spieler.Items[0]; AnimStart := 0; AnimCount := image.patterncount - 1; x := x + 1; end; If ((isleft in Form1.DXInput1.States) and not (isright in Form1.DXInput1.States)) or (player1.x > spieler2x) then with Player1 do begin image := Form1.Spieler.Items[1]; AnimStart := 0; AnimCount := image.patterncount - 1; x := x - 1; end; end; |
Kurze erklärung dazu:
Die Figur kann mit Tastatur und Maus gesteuert werden - deshalb der DXInput.State für die Tastatur-steuerung und dahinter das, was ich für die maussteuerung benutzt habe.
player1.y ist der y-wert der figur, spieler2y ist eine variable, in der der y-wert des mausklicks drinsteht.
Delphi-Quelltext
ist die Bewegung auf der y-Achse in die untere Richtung (der Wert 0/0 liegt in der linken oberen Ecke - also je höher die werte, desto weiter liegen sie auf dem desktop unten).
Delphi-Quelltext
1: 2: 3:
| image := Form1.Spieler.Items[1]; AnimStart := 0; AnimCount := image.patterncount -1; |
gehört zur animation - 'image :=' wählt das Bild aus, 'AnimStart := 0' legt fest, mit welchem der in der reihenfolge vorhandenen Bilder angefangen wird, hier 0 (das erste) und 'AnimCount := image.patterncount -1;' bedeutet, dass die Animation gezählt wird - pattern bedeutet, wieviele Bilder zum animieren da sind, bei mir zählt er irgendwie eins mehr und deshalb zieh ich 1 ab, bevor meine animation flackert.
Gruß
CaliTuner1988
Gute Programmierer kommentieren und dokumentieren ihr Programm und dessen Quellcode nicht.
Das Programm war schwer zu implementieren - es soll auch schwer zu verstehen sein