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 3  1 23      
EpicProgger5000

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

Delphi Projektarbeit - 2D Autorennen

  Alt 7. Feb 2014, 12:34
Hallo,
Meine Gruppe und ich müssen nun im letzten Schuljahr noch eine Projektarbeit in Delphi 7 schreiben.
wir haben uns überlegt, ein 2d Autorennen zu erstellen.
Momentan hängen wir jedoch an 2 Dingen:
a) wie ändern wir die Lenkung so, das beide Autos korrekt fahren können?
b) wie teilen wir die Strecke in bestimmte bereiche, die von dem Auto nicht befahren werden können?
danke für eure Hilfe!

hier der Quelltext:

Code:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Image2: TImage;
    Image3: TImage;
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);

type Trotate = array[0..0] of TRGBQuad;
procedure bilddrehen(const Bitmap: TBitmap);
var P: PRGBQuad;
    x,y,b,h : Integer;
    RowOut: ^Trotate;
    help: TBitmap;
begin
  Bitmap.PixelFormat := pf32bit;
  help := TBitmap.Create;
  try
    help.PixelFormat := pf32bit;
    b := bitmap.Height;
    h := bitmap.Width;
    help.Width := b;
    help.height := h;
    for y := 0 to (h-1) do
    begin
      rowOut := help.ScanLine[y];
      P := Bitmap.scanline[bitmap.height-1];
      inc(p,y);
      for x := 0 to (b-1) do
      begin
        rowout[x] := p^;
        inc(p,h);
      end;
    end;
  finally
    bitmap.Assign(help);
    help.Free;
  end;
end;

procedure fahrtost;
begin
Image2.Left:=Image2.Left+5;
end;

procedure fahrtwest;
begin
Image2.Left:=Image2.Left-5;
end;

procedure fahrtnord;
begin
Image2.top:=Image2.top-5;
end;

procedure fahrtsued;
begin
Image2.top:=Image2.top+5;
end;


var i:integer;
begin
//If Key=vk_up then Image3.Left:=Image3.Left+5;
//If Key=vk_down then Image3.Left:=Image3.Left-5;
//If Key=vk_left then Image3.Top:=Image3.Top+-5   ;
//If Key=vk_right then Image3.Top:=Image3.Top+5  ;


//If Key=vk_numpad4 then Image2.Top:=Image2.Top+-5   ;
//If Key=vk_numpad6 then Image2.Top:=Image2.Top+5  ;



If Key=vk_left then
  begin
  for i:=1 to 3 do
  bilddrehen(image2.picture.bitmap);

  end;

If Key=vk_right then
    begin
    bilddrehen(image2.picture.bitmap) ;
        end;

If Key=vk_numpad4 then
  begin
  for i:=1 to 3 do
  bilddrehen(image3.picture.bitmap);
  end;
If Key=vk_numpad6 then bilddrehen(image3.picture.bitmap) ;

If (GetAsyncKeyState(vk_numpad8)<>0) then Image3.Left:=Image3.Left+5;
If (GetAsyncKeyState(vk_numpad2)<>0) then Image3.Left:=Image3.Left-5;

If Key=vk_up then fahrtost;

If Key=vk_down then fahrtwest;

if key=vk_numpad6 then fahrtsued;
if key=vk_numpad4 then fahrtnord;






end;

end.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#2

AW: Delphi Projektarbeit - 2D Autorennen

  Alt 7. Feb 2014, 14:02
Wieviel Zeit habt Ihr dafür?
Wieviele Leute seit Ihr?

Das dürfte nämlich angesichts des Quellcodes ganz schön sportlich werden...nix für ungut.

Wenn Autorennen, würde ich Euch was anderes vorschlagen:
http://www.tiersch.net/fun/papier.html

Das lässt sich wunderbar programmieren.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: Delphi Projektarbeit - 2D Autorennen

  Alt 8. Feb 2014, 17:24
Der Ansatz zeigt ja, dass es um ein sehr rechtwinkeliges Autorennen geht...
Und die Bewegung auch nur bei einem Tastendruck.
Frage A) kann ich nicht beantworten, da ich die Frage nicht verstehe.

Zu B.) Von vielen Möglichkeiten würde ich 2 Ansätze anbieten.

1. Ereuge Dir ein Array mit Koordinaten und weise jedem Punkt(X,Y) entweder (sWald,sGras,sSchotter,sStrasse,sStrassenrand) zu.
Dann kannst Du vor jeder Bewegung testen auf welchem Untergrund sich dein "Auto" befindet.

2. Male Dir eine Große Bitmap mit festen Farben für Strasse, Schotter usw. Dann kannst du mit Pixel[X,Y] die Farbe abtesten und so rausfinden wo Du beim nächsten Zug bist.


Jetzt noch einige Verbesserung:
A) Nehme eine Timer für die Bewegung.
B) Erzeuge Dir Autos in 45° Winkeln. (Einmal vorher)
C) "A" & "D" sowie "Num 1" & "Num 2" drehen jeweils um 45° W/X 8/2 erhöhen die Geschwindigkeit oder Bremsen.
D) Erzeuge Dir ein Auto Object mit Position(X,Y),Richtung(a),Geschwindigkeit(v)

Mavarik

Geändert von Mavarik ( 8. Feb 2014 um 17:29 Uhr)
  Mit Zitat antworten Zitat
schöni

Registriert seit: 23. Jan 2005
Ort: Dresden
445 Beiträge
 
Delphi 7 Personal
 
#4

AW: Delphi Projektarbeit - 2D Autorennen

  Alt 9. Feb 2014, 10:36
Frage A verstehe ich so, das beim altuellen Ansatz nur 1 Auto gesteuert werden kann, der TE aber mindestens 2 Autos unabhängig voneinander steuern will, damit er gegen einen anderen menschlichen Gegner das Rennen antreten kann. Wenn ich da richtig liege, braucht er 4 andere Tasten für den 2. Spieler. Wenn er dagegen nur gegen den Computer spielen will, braucht er keine 2. Steuerung, dann braucht er mehrere Autos, die, mit Timer oder Thread gesteuert unabhängig von der Tastensteuerung fahren.

@Mavarik: Ich verstehe "Autos in 45 Grad Winkeln" nicht. Beim Autorennen starten die Autos parallel stehend am Startpunkt. Wenn die Breite der Fahrstrecke nicht für die Anzahl der Autos ausreicht, dann stehen sie in mehreren Reihen hintereinander, aber auf der Breite der Straße parallel zueinander. Warum dann "Autos in 45 Grad Winkeln?
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Delphi Projektarbeit - 2D Autorennen

  Alt 9. Feb 2014, 15:19
Warum dann "Autos in 45 Grad Winkeln?
..vielleich um ein fertig gezeichnetes Auto zu haben wenn durch Kurven gefahren wird.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
schöni

Registriert seit: 23. Jan 2005
Ort: Dresden
445 Beiträge
 
Delphi 7 Personal
 
#6

AW: Delphi Projektarbeit - 2D Autorennen

  Alt 9. Feb 2014, 16:30
Warum dann "Autos in 45 Grad Winkeln?
..vielleich um ein fertig gezeichnetes Auto zu haben wenn durch Kurven gefahren wird.

Grüße
Klaus
Stimmt natürlich auch wieder. Damit brauchte man dann an der passenden Stelle nur das Auto einzufügen, das vorher im Speicher gezeichnet wurde. Bilschirmumschaltung. Ok, überzeugt!
Damit der Topf nicht explodiert, lässt man es ab und zu mal zischen.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: Delphi Projektarbeit - 2D Autorennen

  Alt 10. Feb 2014, 12:44
Warum dann "Autos in 45 Grad Winkeln?
..vielleich um ein fertig gezeichnetes Auto zu haben wenn durch Kurven gefahren wird.

Grüße
Klaus
Kurven? Wenn ich mir den Source-Code anschaue können die Auto's nur horizontal und vertikal "fahren".
Das ist eher etwas rechtwinkeliges...

Mavarik
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Delphi Projektarbeit - 2D Autorennen

  Alt 10. Feb 2014, 12:56
Hallo Mavarik,

ich meinte die "Kurven" die auch hier zu sehen sind.
Dürfen die Auto denn nich 45° Grad/diagonal fahren?

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: Delphi Projektarbeit - 2D Autorennen

  Alt 10. Feb 2014, 23:24
Hallo Mavarik,

ich meinte die "Kurven" die auch hier zu sehen sind.
Dürfen die Auto denn nich 45° Grad/diagonal fahren?

Grüße
Klaus
emm....

Delphi-Quellcode:
procedure fahrtost;
 begin
 Image2.Left:=Image2.Left+5;
 end;

 procedure fahrtwest;
 begin
 Image2.Left:=Image2.Left-5;
 end;

 procedure fahrtnord;
 begin
 Image2.top:=Image2.top-5;
 end;

 procedure fahrtsued;
 begin
 Image2.top:=Image2.top+5;
 end;
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

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

AW: Delphi Projektarbeit - 2D Autorennen

  Alt 10. Feb 2014, 23:27
OK! Ich konnte es einfach nicht lassen...

Ist zwar nicht D7 sondern XE5 und FMX und die Kollisionskontrolle und Randkontrolle ich noch nicht drin, aber naja war ja auch nur ein "Proof of Concept"

Mavarik

PS.: Nur zum anschauen...Ohne Tastatureingabe.
Miniaturansicht angehängter Grafiken
autorennen.jpg  
Angehängte Dateien
Dateityp: zip Autorennen.zip (2,36 MB, 23x aufgerufen)

Geändert von Mavarik (10. Feb 2014 um 23:29 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 08:25 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