Bei einem Randomfeld ein bild einfügen



  • Guten Tag,

    ich bin in C++ noch ein Anfänger und hätte eine Frage.

    Wie mache ich, bei einem Bild, das sich zufällig mit Random bewegt, ein unterschiedliches Bild rein, wenn es sich also nach rechts bewegt erscheint ein Bild, wenn es sich nach links bewegt erscheint ein anderes Bild (überschreibt also das erste), genauso wie bei oben und unten.

    Ich bräuchte also nur die Funktion davon, wie man Bilder einfügt weiß ich, aber wie das bei Random geht, weiß ich nicht.

    Vielen Dank für die Antworten.



  • Du musst halt die alte Position des Image speichern und nach der Bewegung mit der neuen Position vergleichen. Wenn die neue kleiner ist als die alte dann hat sich das Image nach links bewegt und du lädst dein Links-Bild. Ist die neue Position grösser als die alte hat es sich nach rechts bewegt und du lädst das Rechts-Bild.



  • Danke für die Antwort, und wie geht das, wenn das Bild nach oben oder nach unten eingefügt werden soll?

    Es wäre nett, wenn hier jemand die Funktion für nach oben (oder unten) hier reinschreiben.

    Für das Beispiel: Das Image kann einen beliebigen Namen haben, bei mir selbst heißen sie Imag1 bis Image4 und das bewegte random Feld ist ein Panel (Name: Panel1).

    Vielen Dank schon mal für die Antwort.



  • Threy schrieb:

    wie geht das, wenn das Bild nach oben oder nach unten eingefügt werden soll?

    Na ganz genauso, nur dass du halt statt bzw. zusätzlich zur X-Achse auch die Y-Achse abfragst. Also die Left- und die Top-Eigenschaft des Images.



  • Naja, wie schon gesagt bin ich noch Anfänger und weiß nicht wie ich das schreiben soll, aber mir ist gerade aufgefallen, das ich die bilder in eine ImageList lade, da es eine Animation werden soll, für nach oben bewegen heißt sie dann Imagelistoben,

    Aber ich habe keinen Plan, wie ich die Funktion dafür schreiben soll, es wäre nett, wenn mir Jemand das komplett erklärt, also mit Kommentar, da ich sowas noch nie gemacht habe.

    Vielen dank für die Antworten.



  • Es dürfte schwer fallen, dir ein Beispiel zu geben, da aus deinen Angaben nicht wirklich hervorgeht, was du eigentlich machst bzw. machen willst.
    Wie wär's erstmal mit etwas von deinem bisherigen Code?



  • Also, es soll ein kleines Kampfsystem werden.

    Das hier ist die Bewegung des Gegners .

    Timer2->Enabled=false;
    if (Panel2->Left <= Form1->Width && Panel2->Left > 0)
       {
       Panel2->Left= Panel2->Left+random(50)-random(55);
       }
    if (Panel2->Top <= Form1->Height-Panel1->Height && Panel2->Top > 0)
       {
       Panel2->Top= Panel2->Top +random(50)-random(55);
       }
    Timer2->Enabled=true;
    }
    

    Was muss ich nun machen, damit die Bilder angezeigt werden, wenn er sich zum Beispiel nach unten bewegt?

    Edit:
    Bitte die Code-Tags benutzen. Danke!



  • // alte Position speichern
    TPoint pt(Panel1->Left, Panel1->Top);
    
    //
    // hier dein Bewegungs-Code
    //
    
    String message = "bewegung nach ";
    
    // mit neuer Position vergleichen
    if (Panel1->Left > pt.x)
      message += "rechts";          // und
    else if (Panel1->Left < pt.x)
      message += "links";          // jeweils
    
    if (Panel1->Top > pt.y)
      message += "unten";          // darauf
    else if (Panel1->Top < pt.y)
      message += "oben";           // reagieren
    
    ShowMessage(message);
    


  • Ok, vielen dank, nächstes mal benutze ich auch die Code-Tags, hab ich eben nur vergessen. 🙂


Anmelden zum Antworten