![]() |
Re: Achtung die Kurve - mein 1. "großes" Projekt
Ist das echt so? Schwanz soll sich nie bewegen? Da isses ja garkein richtiges Snake, mit fressen und wachsen! :pale:
|
Re: Achtung die Kurve - mein 1. "großes" Projekt
wow danke
den quellcode werde ich mir mal genau anschauen. und wenn ich verständnisfragen dazu habe oder es an meiner eigenen Umsetzung doch noch hackt melde ich mich hier nochmale |
Re: Achtung die Kurve - mein 1. "großes" Projekt
Delphi-Quellcode:
ist nich ganz das Thema der Topic, gehört aber zu meinem Projekt.
procedure TfPlayerChoice.btnReadyClick(Sender: TObject);
var Eingabe : string; begin Eingabe := edtEingabe.Text; if Eingabe = '' then ShowMessage('Bitte geben sie einen Namen ein.') else if fMain.AvatarNumber = 0 then ShowMessage('Bitte suchen sie einen Avatar aus.') else begin case fMain.actualPlayerSetting of 1:fMain.aPlayer1.ImageIndex := fMain.AvatarNumber; fMain.aPlayer1.Caption := Eingabe; end; end; end;
Delphi-Quellcode:
hier sagt er mir "konstantenausdruck erwartet" was stimmt da nicht?
fMain.aPlayer1.Caption := Eingabe;
|
Re: Achtung die Kurve - mein 1. "großes" Projekt
Du brauchst bei mehrzeiligen case-Anweisungen begin und end.
|
Re: Achtung die Kurve - mein 1. "großes" Projekt
Zitat:
Du berechnest irgendwie die neuen Koordinaten und lässt die Schlange dann auf diese gehen, aber wir machst du das? |
Re: Achtung die Kurve - mein 1. "großes" Projekt
Zitat:
Die Klasse TZaGame verwaltet das gesamte Spiel, d.h. alle 35 ms. (OnIdle-Ereignis + TAdPerformanceCounter) werden alle Spieler neu berechnet (Positionen + Kollisionsabfrage + Punkte) und alle 30 Durchgänge werden die Eigenschaften auf der rechten Seite neu gezeichnet (DrawPointsPlayer). Gut. Die Berechnung der Spieler findet in der Klasse TZaPlayerCalculator statt (CalculatePlayer) (Jeder Spieler ist übrigens eine Instanz von TZaPlayer). Jeder Spieler hat eine Geschwindigkeit, die variiert (Items + random).Die Methode TZaPlayerCalculator.CalculatePlayer ruft auch die Methode TZaPlayerCalculator.Calculate auf, in der die Positionen anhand der Gradzahl und Geschwindigkeit berechnet werden. Damit die Kurven nun auch geschwindigkeitsunabhängig gleich scharf gefahren werden können, benutze ich eine Schleife (Die Geschwindigkeit ist in dem Feld TZaPlayer.Speed : Integer gespeichert.
Delphi-Quellcode:
Die Koordinaten berechnen sich also ganz leicht mit Sinus und Cosinus. Nun werden alle Koordinaten in dem Array FNewCoordinates zwischengepeichert um später in der Methode TZaPlayerCalculator.Draw gezeichnet zu werden (Diese wird später in der Methode TZaPlayerCalculator.CalculatePlayer aufegrufen).
repeat
if getasynckeystate(APlayer.Keys.Right)<>0 then APlayer.Angle := APlayer.Angle + 2;; if getasynckeystate(APlayer.Keys.Left)<>0 then APlayer.Angle := APlayer.Angle - 2; inc(SpeedCounter); // [...] FNewCoordinates[Speedcounter-1].X := APlayer.X + FCosinus[round(APlayer.Angle)]; FNewCoordinates[Speedcounter-1].Y := APlayer.Y + FSinus[round(APlayer.Angle)]; APlayer.X := FNewCoordinates[Speedcounter-1].X; APlayer.Y := FNewCoordinates[Speedcounter-1].Y; // [...] APlayer.Distance := APlayer.Distance + 1; // [...] until SpeedCounter=APlayer.Speed; Hoffe das ist einigermaßen verständlich, aber du musst dich garantiert ein bischen hineinknieen müssen, damit das Spiel später richtig laufen wird. Sobal du das erste Mal die Schlangen sich richtig bewegen siehst ist die Freude aber so groß, dass es sich allemal lohnt. Gruß und keine Scheu vor weiteren Fragen, Looper |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:09 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz