Fehler im Code???



  • if ((Shape1->Left <=400) && (Shape1->Top <=400))
    {
    Shape1->Left=Shape1->Left+5;
    Shape1->Top=Shape1->Top+2;
    }

    else if((Shape1->Left >=400)&&(Shape1->Top <=400))
    Shape1->Left=Shape1->Left-5;

    else if((Shape1->Left <=400)&&(Shape1->Top >=400))
    Shape1->Top=Shape1->Top-2;

    };
    }

    Shape bewegt sich bis zur Bande ganz flüssig aber nach der Bande soll es sich nach unten bewegen aber dann wird es nicht mehr flüssig es bewegt sich hinundher.
    Und meine Zweite Frage ist es wie kann man einen Timer im Edit Feld anzeigen lassen.



  • Hallo

    Du must die Richtung (einmal links/rechts und einmal oben/unten) nicht nur einmalig an der Grenze ändern, sondern auch für nachfolgende Aufrufe noch in jeweils einer Membervariablen speichern.

    bis bald
    akari



  • können Sie bitte ein Beispiel nennen ich weiß nicht was Sie genau meinen



  • Hallo

    Ich skizziere es mal für oben/unten :

    class Form ...
    {
    
      bool up; // Membervariable : true nach oben, false nach unten
    };
    
    // Start der Bewegung, es soll beginnen mit nach unten
    up = false;
    
    // Einzelner Bewegungsschritt
    int vertical_pos = ...->Top;
    // VerticalStep ist in deinem Fall = 2
    if (up)
      vertical_pos -= VerticalStep; 
    else
      vertical_pos += VerticalStep;
    
    // VerticalMax ist in deinem Fall = 400
    if (vertical_pos > VerticalMax)
    {
      // Nach oben abprallen
      vertical_pos -= VerticalStep*2;
      up = true;
    } 
    // VerticalMin ist in deinem Fall = 0
    else if (vertical_pos < VerticalMin)
    {
      // Nach unten abprallen
      vertical_pos += VerticalStep*2;
      up = false;
    }
    ...->Top = vertical_pos;
    

    Dazu must du nun analog die Bewegung für links/rechts steuern.

    bis bald
    akari


Anmelden zum Antworten