Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Mein erstes (spiel) projekt (https://www.delphipraxis.net/66238-mein-erstes-spiel-projekt.html)

Mr.Funky 27. Mär 2006 08:46


Mein erstes (spiel) projekt
 
hallo zusammen...
ich muss für die schule ein kleines spiel programieren und habe nun ein paar probleme und erhoffe mir in diesem forum ein paar antworten. :)
ich will so eine art tetris erstellen wo smilies von oben nach unten fallen und ich sie unten mit einem korb(balken) auffangen kann.ich habe nun viele kleine smilies an den oberen bildrand gestellt und visible auf false gesetzt. nun meine frage: wie kann ich nun zufällig eines dieser images auswählen und es in bewegung setzten(ich brauche nur das auswählen die bewegungsprozedure habe ich schon) ,dass müsste aber dann irgenwie in einer schleife passieren, bis keine smilies mehr da sind??? so hat wer vielleicht nen paar ideen für mich???? (arbeite mit delphi6)
danke im voraus



ciao euer Mr.Funky

Alien426 27. Mär 2006 10:06

Re: Mein erstes (spiel) projekt
 
Zitat:

Zitat von Mr.Funky
ich habe nun viele kleine smilies an den oberen bildrand gestellt und visible auf false gesetzt. nun meine frage: wie kann ich nun zufällig eines dieser images auswählen

Ich nehme an, du hast das mit einzelnen TImages gemacht? Ich würde eher zu einer TImageList tendieren. Da kannst du ja dann zufällig einen Index auswählen. Ausserdem würde ich aus der TImageList als einzelne Grafiken rauskopieren und diese separat behandeln.

TeronG 27. Mär 2006 10:38

Re: Mein erstes (spiel) projekt
 
Ich würde die Dinger auch erst zur Laufzeit erzeugen da biste dann flexlibler als mit X unsichtbaren oben am Rand.

XeRo 27. Mär 2006 11:01

Re: Mein erstes (spiel) projekt
 
Also das was du meinst würd ich wenn überhaut mit einem Random machen. Einfach x:=Random(AnzahlderSmileys); Und dann
case x of
1: asd;
2: asd;
3: asd;

Aber ich würds auch zur Laufzeit machen...Frisst auch enorm viel Resource wennstas mit TImages machst...

Angel4585 27. Mär 2006 11:02

Re: Mein erstes (spiel) projekt
 
Nimm eine TObjectList!

Du kannst hier die Anzahl der Smilies durch Count festlegen und einzelne TImage-Komponenten zur Laufzeit erzeugen und zuweisen.

Mit Random(Count) wählst du dann zufällig eins dieser Smilies aus

Mr.Funky 27. Mär 2006 12:45

Re: Mein erstes (spiel) projekt
 
danke erstmal für die antworten ich probier gleich mal einiges aus !! :-D

Alexander Roth 27. Mär 2006 13:46

Re: Mein erstes (spiel) projekt
 
TImages sind langsam.

Hole dir doch ein paar Bitmaps (deine Simlies) in den Speicher und mache sie dann mit
Delphi-Quellcode:
BitBlt(form1.Canvas.Handle,0,0, bild.Width, bild.Height, bild.canvas.Handle,0 ,0,srccopy);
auf den Bildschirm.
Zeichne bei onpaint neu und kannst ja mit einem Timer o.ä. deine Smilies ein stück weiter nach unten wandern lassen.

Mr.Funky 29. Mär 2006 14:26

Re: Mein erstes (spiel) projekt
 
hi noch ein problem:
ich bringe meinen (fange)button folgender maßen in bewegung:

Delphi-Quellcode:
if getasynckeystate(vk_left) < 0 then
        Button1.Left := Button1.Left - 10  ;
    if getasynckeystate(vk_right) < 0 then
        Button1.Left := Button1.Left + 10;
wie mache ich es, dass er an den kanten der oberfläche nicht weiter geht ?? ich finde keine richtige löung, da meine ideen nur so fuktionieren, dass ich den button nicht mehr zurück bewegen kann ?? :wall:

für hilfe bedanke ich mich im voraus,




ciao euer mrfunky

Flare 29. Mär 2006 14:40

Re: Mein erstes (spiel) projekt
 
So müsste es gehen:
Delphi-Quellcode:
if getasynckeystate(vk_left) < 0 then
begin
  if Button.Left > 10 then Button1.Left := Button1.Left - 10
  else Button.Left := 0;
end;
if getasynckeystate(vk_right) < 0 then
begin
  if Button.Left + Button.Width < Width - 10 then Button1.Left := Button1.Left + 10
  else Button.Left := Width;
end;

Flare


Alle Zeitangaben in WEZ +1. Es ist jetzt 18: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