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
Antwort Antwort
uliii92

Registriert seit: 28. Mär 2011
2 Beiträge
 
#1

Starfield

  Alt 28. Mär 2011, 20:35
Ich habe eine Starfield-Simulation. Nun möchte ich erreichen, dass sich die Shapes je nach dem in welchem (gedachten) Quadranten sie zufällig erzeugt werden in eine bestimmte Richtung wegbewegen, immer in die jeweils nächste Ecke. Wenn sie also unten links erzeugt werden sollen sie in die untere linke Ecke gehen...
Im Anhang die Starfield-Simulation. Wie muss ich vorgehen? Ich habe schon so vieles versucht, habe die Höhe etc durch 2 geteilt ...aber habe noch nicht so viel Erfahrung mit delphi, vielleicht könnt ihr mir ja helfen.
Angehängte Dateien
Dateityp: pas Unit1.pas (3,9 KB, 15x aufgerufen)
  Mit Zitat antworten Zitat
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
uliii92

Registriert seit: 28. Mär 2011
2 Beiträge
 
#3

AW: Starfield

  Alt 29. Mär 2011, 18:13
Hey also ich habs jetzt hingekriegt. Und mit dem ..shape1...>=600!!!
ich hatte einen Teil der Aufgabenstellung vergessen. der Teil gehört dazu. Die Kreise sollen nämlich wenn sie aus dem Formular raus sind wieder neu zufällig im Formular erzeugt werden...aber wie gesagt ich habs hingekommen!

Trotzdem vielen Dank!!

und PS: Ich heiße Uli (mit einem L, ich bin weiblich..)
  Mit Zitat antworten Zitat
Benutzerbild von isilive
isilive

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

AW: Starfield

  Alt 30. Mär 2011, 03:57
Hey Uli! =)
Erstellst du das Programm privat oder für die Schule?
Und bastelst du daran noch weiter?
Stefan
Jedoch kann die referenzbasierte Implementierung des Standard-Objektmodells in Kombination mit den komplexen syntaktischen Dereferenzierungsregeln bei einer objektorientierten API wie ein Stolperstein wirken.
  Mit Zitat antworten Zitat
Antwort Antwort


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:02 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