Entwickler-Ecke

Sonstiges (Delphi) - Kreis-Spiel Programieren


amarschdiemarry - Di 12.05.09 10:44
Titel: Kreis-Spiel Programieren
Hallo,
habe folgende frage:
ich wollte ein Spiel Programieren:
Da sollen Kreise entstehen die von Oben nach unten Runterfallen. Diese Kreise Unterschiedlicher Größe soll man WegKlciken können, bevor sie unten angekommen sind.
Wie Kann man soetwas realisieren.

Vielen Dank!


AXMD - Di 12.05.09 11:21

:welcome:

Welche Ansätze hast du denn bereits? Hast du schon begonnen zu programmieren?
Fertige Programme wird hier niemand posten - für diesen Zweck gibt es die Sparte "Jobbörse". Wenn du möchtest, dass ich deinen Beitrag dorthin verschiebe sag bitte Bescheid. Ansonsten gib uns bitte Informationen darüber, was du schon überlegt und vielleicht programmiert hast, damit wir dir konkret weiterhelfen können.

AXMD


ffgorcky - Di 12.05.09 11:37

Also mal als Anregung:
Ich würde dafür eine Komponente wie einen Button nehmen, wobei der ja leider nicht rund ist.
Ansonsten könntest Du dem dann ja per Timer sagen:

Delphi-Quelltext
1:
 Button.Top:=Button.Top+1;                    

Dadurch würde er sich ja immer ein Stückchen weiter runterbewegen.
Und bei Button.OnClick(Sender) verzeichnest Du dann, dass er getroffen wurde und lässt ihn meinetwegen verschwinden.


Boldar - Di 12.05.09 13:28

mmh... buttons sind dafür nicht gerade geeignet... Nimm lieber Eine paintbox und zeichne selber...
Die OH hilft da...


AXMD - Di 12.05.09 13:30

Oder noch besser Shapes - da gibt es Kreise bereits vordefiniert ;)

AXMD


F34r0fTh3D4rk - Di 12.05.09 16:52

Zur Anregung:

Interface
1:
2:
3:
4:
5:
TKreis = record
  position, 
  velocity: TPoint;
  radius: integer;
end;


Global oder in TForm
1:
var kreise: array of TKreis;                    


Timer
1:
2:
for i := 0 to high(kreise) do 
  kreise[i].position.y := kreise[i].position.y + kreise[i].velocity.y


Repaint
1:
2:
for i := 0 to high(kreise) do 
  paintbox1.canvas.ellipse(kreise[i].position.x-radius, kreise[i].position.y-radius, kreise[i].position.x+radius, kreise[i].position.y+radius);


So oder so ähnlich könnte man das umsetzen. Müsste man halt noch einbauen, dass Mausklicks abgefragt werden und dementsprechend reagiert wird.

mfg


Jakob_Ullmann - Di 12.05.09 17:13

Und dann könnte man noch einen virtuellen Canvas nehmen und die Kreise in der Farbe des Array-Indexes zeichnen. Dann weiß man auch schon, welcher Kreis an Position XY gerade ist, ist allerdings sehr speicherhungrig.