Autor Beitrag
CaliTuner1988
Hält's aus hier
Beiträge: 8

Win XP, Win 2k, Linux
Borland Developer Studio 2k6, Borland CBuilder 5, Borland CBuilder 6
BeitragVerfasst: Fr 30.03.07 12:15 
Hallo,

ich bin gerade dabei im Rahmen eines Schulprojekts ein Adventure Game mit Delphi (DelphiX) zu programmieren, bin auch schon recht weit damit gekommen, allerdings lässt sich die Person (das Objekt) bislang nur per Tastatur steuern und ich hätte gerne, dass ich mit der Maus wohin klicke und sich die Person (das Objekt) in Schritten (mit der animation die dabei ist) dorthin bewegt, kann mir jemand sagen wie ich das am besten mache oder hat jemand nen gutes tutorial dafür??

Ich danke schonmal!

Gruß
CaliTuner1988


Moderiert von user profile iconChristian S.: Topic aus Delphi Tutorials verschoben am Fr 30.03.2007 um 17:11

_________________
Gute Programmierer kommentieren und dokumentieren ihr Programm und dessen Quellcode nicht.
Das Programm war schwer zu implementieren - es soll auch schwer zu verstehen sein


Zuletzt bearbeitet von CaliTuner1988 am Mo 02.04.07 15:04, insgesamt 1-mal bearbeitet
CaliTuner1988 Threadstarter
Hält's aus hier
Beiträge: 8

Win XP, Win 2k, Linux
Borland Developer Studio 2k6, Borland CBuilder 5, Borland CBuilder 6
BeitragVerfasst: So 01.04.07 21:50 
Okay, habe das ganze nun hinbekommen.
Hier noch der Quellcode, vllt. hilfts ja jemandem!

Habe das ganze in einer Klasse:
ausblenden 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:

ausblenden volle Höhe Delphi-Quelltext
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.

ausblenden Delphi-Quelltext
1:
y := y + 1;					


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).

ausblenden 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