Automatisches Droppen von Dingen vom oberen Bildschirmrand

    Automatisches Droppen von Dingen vom oberen Bildschirmrand

    Hallo liebes Forum,

    ich habe ein Problem. Ich versuche für den Informatik Unterricht ein
    kleines Spiel zu programmieren, bei dem eine Figur im Fenster nach
    links und rechts läuft und dabei Münzen auffängt, die vom oberen
    Bildschirmrand fallengelassen werden. Wie kann ich es also realisieren,
    dass ich das gleiche Image automatisch von verschiedenen Positionen am
    oberen Fensterrand fallen lassen kann?

    Vielen Dank schon mal
    Wo genau liegt das Problem? Du wirst vermutlich mehrere Images brauchen, wenn nicht immer nur eine einzige Münze gleichzeitig fallen soll. Und eine (Pseudo-)Zufallszahl für die X-Achse der Startposition bekommst Du mit Random (Hinweise beachten).
    10 Minuten Nachdenken ersparen oftmals 10 Stunden Fehlersuche.
    Na, aber mit "Droppen vom Bildschirmrand" hat das ja herzlich wenig zu tun (Droppen ist eigentlich ein festsstehender Begrif aus "Drag&Drop!)...

    Also ich würde im Sinne einer fliessenden Darstellung nicht auf TImages zur Darstellung der Münzen und der Spielfigur zurückgreifen. Verwende zur Berechnung eines neuen Bildes am besten eine Speicher-BMP, die du, nachdem sie komplett berechnet ist, komplett anzeigst. Hierzu kann dann ein TImage dienen, eine Picturebox aber auch.

    Die Speicher-BMP berechnest du, indem du sie zuerst mit deinem Hintergrundbild füllst, dann Münzen und Spielfigur an die neu berechneten Positionen zeichnest (schau dir hierzu mal die Methoden von TCANVAS an...).

    Über solches Vorgehen finden sich im Forum eine Menge Beiträge (auch darüber, wie man das vermutlich auftretende Flickern des Bildschirms weg kriegt), du musst einfach nur suchen.

    cckLoud
    mein problem gerade ist wie ich eine variable, die ich mit einer zufälligenzahl belege mit dem jeweiligen image verbinde. ich habe jetzt also 50 coins mit image1-50 an den oberen rand gelegt und ihre visibility auf false gesetzt. mein ziel ist es nun zufällig (über randomize) eine dieser images anzusprechen, weiß allerdings nicht wie ich diese images in einen array kriege.
    Wenn Du die Images nicht umbenannt hast, sie also Image1 bis Image50 heißen, ist das ziemlich einfach.

    Delphi-Code

    1. var
    2. Images: array[1..50] of TImage;
    3. ...
    4. for i := Low(Images) to High(Images) do
    5. Images[i] := FindComponent('Image' + IntToStr(i)) as TImage;

    Ansonsten ist es halt mehr Tipparbeit.

    Delphi-Code

    1. Images[1] := ErstesImage;
    2. Images[2] := ZweitesImage;
    3. (* usw. usf. *)

    10 Minuten Nachdenken ersparen oftmals 10 Stunden Fehlersuche.

    EMP_Rockhand schrieb:

    Vielen Dank! Nun noch eine Frage: gibt es eine Möglichkeit das Männchen mit durchgängigem Tastendruck zu bewegen, d.h. dass ich nicht immer die linke oder rechte Pfeiltaste spammen muss?

    ja
    Glückauf

    Herr, wirf Hirn vom Himmel

    Ein Leben ohne Möpse ist möglich, aber sinnlos ( Loriot )
    Der beste Platz für Politiker ist das Wahlplakat. Dort ist er tragbar, geräuschlos und leicht zu entfernen ( Loriot )

    Es gibt Leute, die fühlen sich überall gedemütigt, wo sie nicht frech sein dürfen ( Otto Weiss )