AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Achtung die Kurve - mein 1. "großes" Projekt
Thema durchsuchen
Ansicht
Themen-Optionen

Achtung die Kurve - mein 1. "großes" Projekt

Ein Thema von MaToBe · begonnen am 11. Feb 2009 · letzter Beitrag vom 15. Feb 2009
Antwort Antwort
Seite 2 von 2     12   
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#11

Re: Achtung die Kurve - mein 1. "großes" Projekt

  Alt 12. Feb 2009, 09:57
Ist das echt so? Schwanz soll sich nie bewegen? Da isses ja garkein richtiges Snake, mit fressen und wachsen!
  Mit Zitat antworten Zitat
MaToBe

Registriert seit: 2. Aug 2008
162 Beiträge
 
#12

Re: Achtung die Kurve - mein 1. "großes" Projekt

  Alt 12. Feb 2009, 17:20
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
  Mit Zitat antworten Zitat
MaToBe

Registriert seit: 2. Aug 2008
162 Beiträge
 
#13

Re: Achtung die Kurve - mein 1. "großes" Projekt

  Alt 13. Feb 2009, 16:39
Delphi-Quellcode:
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;
ist nich ganz das Thema der Topic, gehört aber zu meinem Projekt.

fMain.aPlayer1.Caption := Eingabe; hier sagt er mir "konstantenausdruck erwartet" was stimmt da nicht?
  Mit Zitat antworten Zitat
nuclearping

Registriert seit: 7. Jun 2008
708 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#14

Re: Achtung die Kurve - mein 1. "großes" Projekt

  Alt 13. Feb 2009, 17:03
Du brauchst bei mehrzeiligen case-Anweisungen begin und end.
  Mit Zitat antworten Zitat
MaToBe

Registriert seit: 2. Aug 2008
162 Beiträge
 
#15

Re: Achtung die Kurve - mein 1. "großes" Projekt

  Alt 15. Feb 2009, 20:30
Zitat von Looper:
Hey,

Wenn du Fragen hast, frag einfach. Die meisten Fragen zu diesem Spiel, müsste ich eigentlich beantworten können.

Gruß Looper
Hallo Looper, ich habe mir deinen Scourcecode mal angeschaut, aber ich versteh eigentlich überhaupt nicht, wie du die Schlange vorwärts bewegst.

Du berechnest irgendwie die neuen Koordinaten und lässt die Schlange dann auf diese gehen, aber wir machst du das?
  Mit Zitat antworten Zitat
Looper

Registriert seit: 28. Sep 2007
Ort: Hamburg
131 Beiträge
 
Delphi XE2 Professional
 
#16

Re: Achtung die Kurve - mein 1. "großes" Projekt

  Alt 15. Feb 2009, 22:21
Zitat:
Du berechnest irgendwie die neuen Koordinaten
Das mache ich in der Klasse TZaPlayerCalculator in der Funktion Calculate, aber erstmal grundsätzliches zum Aufbau des Programms, sonst ist das glaube ich ziemlich verwirrend :

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:
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;
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).
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz