Thema: Starfield

Einzelnen Beitrag anzeigen

Benutzerbild von isilive
isilive

Registriert seit: 15. Okt 2008
Ort: Österreich
192 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Starfield

  Alt 29. Mär 2011, 03:06
Hallo Ulli!

Willkommen in der DP!

- Bitte hänge entweder das ganze Projekt an, dann kann man sich das in der IDE anschauen
- oder stell einfach nur den Code hier ein -> in Delphi Tags

Was deinen Code betrifft. Als ich ihn gesehen habe, dachte ich mir ehrlichgesagt: das kann nicht funktionieren. Aber das witzige ist: er funktioniert!

Du musst beim "Erzeugen eines neuen Shapes" (also eigentlich bekommt ja ein bestehendes Shape eine neue Position und wird klein gemacht) einen Richtungsvektor speichern. Also wenn Shape1 links oben "neu erzeugt" wurde, musst du irgendwo speichern das es sich nach links oben bewegen soll. Das kann eine Variable oder ein Array oder whatever sein.

Delphi-Quellcode:
shape1.left:=shape1.left + 3;
      shape1.top:=shape1.top +3;
      Shape1.height:=shape1.height + 1;
      shape1.width:=shape1.width +1;
Und jetzt musst du diese ganzen "starren" Dinger gegen etwas ersetzen was diese Variable (Richtungsvektor?) berücksichtigt.


Übrigens - auch wenn dir das jetzt noch zuviel ist - wäre dieses Projekt absolut IDEAL um das erste mal OBJEKTE auszuprobieren. Weil:
- Du erstellst den Typ TStern
- du erstellst 5 Instanzen davon. zB. Stern1, Stern2, ...
- Diese Objekte bekommen Eigenschaften wie Position, Geschwindigkeit, Grösse, Vektor und so weiter,
Und bei jedem Timer wird die Position des Objektes um Geschwindigkeit in Richtung Vektor verschoben. Dann das Shape dorthinzeichnen - fertig!

Aber du kannst es ruhig auch so machen - für den Anfang. Wobei es schön wäre, noch einiges in Prozeduren auszulagern...

PS: Fast vergessen: randomize wird nur einmal aufgerufen! Also zB. im form.create.

PPS: "If (shape1.left or shape1.top )>= 600 then..."
Das ist ganz falsch!
Stefan
Jedoch kann die referenzbasierte Implementierung des Standard-Objektmodells in Kombination mit den komplexen syntaktischen Dereferenzierungsregeln bei einer objektorientierten API wie ein Stolperstein wirken.

Geändert von isilive (29. Mär 2011 um 03:38 Uhr)
  Mit Zitat antworten Zitat