AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi Projektarbeit - 2D Autorennen

Ein Thema von EpicProgger5000 · begonnen am 7. Feb 2014 · letzter Beitrag vom 3. Mär 2014
Antwort Antwort
Seite 1 von 2  1 2      
11. Feb 2014, 06:08
Dieses Thema wurde am "11. Feb 2014, 07:08 Uhr" von "r_kerber" aus dem Forum "Fragen / Anregungen zur DP" in das Forum "Sonstige Fragen zu Delphi" verschoben.
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.164 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Delphi Projektarbeit - 2D Autorennen

  Alt 11. Feb 2014, 16:46
Ups... Hat das Programm bei Euch funktioniert?

Fahren die Auto's alles "auf" der Straße?

Hab die Version gerade für Mac-OS gelinkt und musste feststellen, dass die CPU-Geschwindigkeit mit in die Position einfließt. Hier muss ich nochmal "nacharbeiten"...

Mavarik

Geändert von Mavarik (11. Feb 2014 um 16:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.358 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Delphi Projektarbeit - 2D Autorennen

  Alt 11. Feb 2014, 17:58
Unter Win7 und Win8 sieht es gut aus.

Kannst Du mal grob umreißen, wie Du das aufgebaut hast?
Bild als Hintergrund und wie kontrollierst Du die Strecke und Winkel?
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.164 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Delphi Projektarbeit - 2D Autorennen

  Alt 12. Feb 2014, 09:03
Unter Win7 und Win8 sieht es gut aus.

Kannst Du mal grob umreißen, wie Du das aufgebaut hast?
Bild als Hintergrund und wie kontrollierst Du die Strecke und Winkel?
Delphi-Quellcode:
  TCar = Record
           Position : TPosition;
           Richtung : Single;
           Geschwindigkeit : Single;
           Image : TImage;
         end;
Delphi-Quellcode:
  
   TAutoDriveList = Record
                      CarNr : byte;
                      Geschwindigkeit : Single;
                      Richtung : Single;
                      // Besser Position dann ist es Hardware unabhängig (z.b. auf Mac)
                      Wann : TDateTime;
                    end;
Delphi-Quellcode:
Procedure TForm46.MoveCar(Nr:Integer); // Form46 lol...PoC
begin
  Cars[Nr].Position.X := Cars[Nr].Position.X + Sin(Cars[Nr].Richtung*PI/180)*Cars[Nr].Geschwindigkeit;
  Cars[Nr].Position.Y := Cars[Nr].Position.Y + Cos(Cars[Nr].Richtung*PI/180)*Cars[Nr].Geschwindigkeit;
  Cars[Nr].Image.Position := Cars[Nr].Position;
end;
Delphi-Quellcode:
procedure TForm46.Timer1Timer(Sender: TObject);
var
  i : Integer;
begin
  Image5.Canvas.BeginScene;

  Label6.Text := FloattoStr(Image4.AbsoluteRect.Width) +' x '+FloattoStr(Image4.AbsoluteRect.Height);

  if Gas
    then Cars[Stear].Geschwindigkeit := Cars[Stear].Geschwindigkeit + 0.10 // Mehr Gas als Bremse ;-)
    else if Bremse then
           Cars[Stear].Geschwindigkeit := Cars[Stear].Geschwindigkeit - 0.05;

  if Links
    then begin
           Cars[Stear].Richtung := Cars[Stear].Richtung + 3; // Winkelgeschwindigkeit noch gemäßt Geschwindigkeit anpassen
           Cars[Stear].Image.RotationAngle := 90 - Cars[Stear].Richtung;
         end
    else if Rechts then
           begin
             Cars[Stear].Richtung := Cars[Stear].Richtung - 3;
             Cars[Stear].Image.RotationAngle := 90 - Cars[Stear].Richtung;
           end;

  if AutoDrive then
    begin
      // Gespeicherte Daten abspielen
      ...
    end;

    
  for i:=1 to 4 do
    begin
      MoveCar(i);
      CheckCar(i); // todo
    end;
  Image5.Canvas.EndScene;
end;
Quick and Dirty.

Die Daten für die Bewegungen können entweder eingegeben werden per Tastatur,
oder aus dem gespeicherten Array abgespielt werden oder per UDP "rein" kommen.

Mavarik

Geändert von Mavarik (12. Feb 2014 um 13:43 Uhr)
  Mit Zitat antworten Zitat
EpicProgger5000

Registriert seit: 7. Feb 2014
3 Beiträge
 
#5

AW: Delphi Projektarbeit - 2D Autorennen

  Alt 12. Feb 2014, 06:57
Also nochmal ne genauere Problemerläuterung:
-> wir wollen ein Autorennen in Vogelperspektive programmieren.
Das soll alles jedoch relativ einfach gehalten werden,da wir nicht sonderlich viel Zeit haben und auch so nicht viel Plan haben.
Wir wollen auf jeden Fall
a) das zwei Autos gleichzeitg fahren können also man auch zwei Tasten gleichzeiig drücken kann
b) das Auto fährt, wenn wir nach rechts lenken immernoch nachrechts weiter, also wir bekommen es nicht hin, dass das Auto nach dem lenken nach unten bzw. in eine andere richtung fährt
c) haben wir im paint autos & Strecke vorgezeichnet (ist ja auch bitmap) und wissen jetzt aber nicht, wie man dort ne begrenzung einbaut bzw. programmiert, sodass das auto nicht mehrauf den Straßenrand fährt

Könnt ihr uns da helfen?
danke euch aber bisher
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.740 Beiträge
 
Delphi 6 Enterprise
 
#6

AW: Delphi Projektarbeit - 2D Autorennen

  Alt 12. Feb 2014, 08:35
Nur mal zu Problem b)
Man muss sich die Zustände der Autos merken, d.h. in welche Richtung er im Moment fährt und auch wie schnell. Wird nun eine Taste gedrückt ändert sich halt die Richtung.
In der Funktion (wahrscheinlich über einen Timer gesteuert) in der die Autos bewegt werden wird das Auto abhängig von der gespeicherten Geschwindigkeit um N Pixel bewegt und abhängig von der gespeicherten Richtung ändert sich halt die X oder die Y Position um die N Pixel (oder bei 45° halt X und Y um N/Wurzel(2) Pixel?

Wär auf jeden Fall eine gute Gelegenheit ein bißchen OOP mit zu lernen.
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.164 Beiträge
 
Delphi 10.3 Rio
 
#7

AW: Delphi Projektarbeit - 2D Autorennen

  Alt 12. Feb 2014, 08:46
Also nochmal ne genauere Problemerläuterung:
-> wir wollen ein Autorennen in Vogelperspektive programmieren.
Ich Denke Du meinst eher in "Draufsicht"

Das soll alles jedoch relativ einfach gehalten werden,da wir nicht sonderlich viel Zeit haben und auch so nicht viel Plan haben.
Wir wollen auf jeden Fall
a) das zwei Autos gleichzeitg fahren können also man auch zwei Tasten gleichzeiig drücken kann
KeyDown "a" Links_Spieler_1 := true;Rechts_Spieler_1 := false;
Keydown "d" Rechts_Spieler_1 := true;Links_Spieler_1 := false;

KeyUp "a" Links_Spieler_1 := false;
KeyUp "d" Links_Spieler_1 := false;

OnTimer if Links_Spieler_1 = true then Wagen_1 Richtung := Richtung - 45;
...
b) das Auto fährt, wenn wir nach rechts lenken immernoch nachrechts weiter, also wir bekommen es nicht hin, dass das Auto nach dem lenken nach unten bzw. in eine andere richtung fährt
Logisch wenn Du blind

Delphi-Quellcode:
procedure fahrtost;
 begin
 Image2.Left:=Image2.Left+5;
 end;
machst.
Delphi-Quellcode:
if Wagen_1.Richtung = 0 then
 Image2.Top := Image2.Top - 5; // Immer in 5er Schritten ohne unterschiedliche Geschwindigkeit.?!?
else
If Wagen_1.Richtung = 45 then
  begin
    Image2.top := Image2.Top - 5;
    Image2.Left := Image2.Left + 5;
  end
usw.
c) haben wir im paint autos & Strecke vorgezeichnet (ist ja auch bitmap) und wissen jetzt aber nicht, wie man dort ne begrenzung einbaut bzw. programmiert, sodass das auto nicht mehrauf den Straßenrand fährt
Da Deine "Autos" in einem 5er Raster fahren, lege Dir ein Array an, welches die Strecke in diesem Raster darstellt.
Delphi-Quellcode:
var
  Strecke : Array [0..200,0..100] of Boolean; // für ein Image der Größe 1000x500
begin
  Strecke[5,7] := true; // hier dar ein Auto fahren
  Strecke[4,7] := false; // hier nicht.

  if Strecke[Image2.Left div 5,image2.Top div 5] then
    Auf_der_Strecke := true
  else
    Auf_der_Strecke := false;
  ...
end;
Könnt ihr uns da helfen?
danke euch aber bisher
Helfen ja, aber nicht die ganze Arbeit machen!

Mavarik
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#8

AW: Delphi Projektarbeit - 2D Autorennen

  Alt 12. Feb 2014, 17:53
@EpicProgger5000

Also ich bin mir immer noch nicht sicher was du programmieren willst. Inzwischen ist klar, dass es Draufsicht ist. Da gibt es aber immer noch etliche Möglichkeiten. Mavarik scheint zu wissen was du willst, denn er postet schon kräftig Code. Ich nicht.

Entweder ist es eine Strecke im Kreis oder die Straße bewegt sich runter. Denn je nachdem was für ein Typ es ist, muss man es unterschiedlich lösen.

Also bei dem Tempo wie du die Infos von dir gibts und der Art, dass man alles erfragen muss, wirst du vermutlich Weihnachten alle Infos zusammen haben.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.164 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Delphi Projektarbeit - 2D Autorennen

  Alt 12. Feb 2014, 19:15
@EpicProgger5000

Also ich bin mir immer noch nicht sicher was du programmieren willst. Inzwischen ist klar, dass es Draufsicht ist. Da gibt es aber immer noch etliche Möglichkeiten. Mavarik scheint zu wissen was du willst, denn er postet schon kräftig Code. Ich nicht.
Schau Dir doch einfach mal seinen Sourcecode an, das beantwortet doch alle Fragen!
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#10

AW: Delphi Projektarbeit - 2D Autorennen

  Alt 12. Feb 2014, 23:51
@Mavarik

Ok, trotzdem, wenn man Fragen hat, dann interagiert man. Man stellt nicht eine Liste von Fragen und wartet bis Lösung kommt. Aber sei es drum.


@EpicProgger5000

Ich weiß nicht ob ihr schon so weit seit das Programm von Mavarik nachzuprogen, denn wenn ich mir den Anfangscode ansehe, dann ist das Anfängercode. Auch der beste Koch kocht mit Wasser, also warum komplex machen. Die Frage die sich stellt ist also ob man sich alles per Copy&Paste zusammensucht oder es einfacher macht, dafür aber selbst.

Ich würde euch empfehlen sich von der "bilddrehen" Prozedur zu trennen. Standessen würde ich - aufgrund des Kenntnisstandes der Gruppe - es einfacher machen. Zuerst ein Auto designen und davon acht Kopien erstellen, jedes Bild um 45° gedreht. Wie gesagt, auch der beste Koch kocht mit Wasser. Man muß nicht mit einer Bitmap arbeiten. Reduziert das Spiel auf acht Richtungen und erstellt für jede Richtung ein Bild. Dann alles im ImageList und je nach Richtung das passende Bild laden.

Das Ergebnis würde dann so aussehen:
Angehängte Dateien
Dateityp: zip DemoAuto.zip (208,3 KB, 17x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 20:42 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