AGB  ·  Datenschutz  ·  Impressum  







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

Starfield

Ein Thema von uliii92 · begonnen am 28. Mär 2011 · letzter Beitrag vom 30. Mär 2011
 
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, 02: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 02:38 Uhr)
  Mit Zitat antworten Zitat
 


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 19:40 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