Ändern der Farbe einer Schaltfläche zu langsam

  • Ich mache gerade ein Reversi-Spiel für meine Programmierklasse und wollte einen Computer in das Spiel einbauen. Ich habe dies erfolgreich ausgeführt, aber der Computer macht sofort mit dem Zug, so dass Sie nicht sehen können, wie Ihr Zug funktioniert hat.

    Ich habe versucht, dies mit der folgenden Methode zu lösen:

     public void wait (int n) {
        long t0, t1;
        t0 = System.currentTimeMillis();
        do {
            t1 = System.currentTimeMillis();
        } while ((t1-t0) < n);
    }
     

    Ich habe diese Methode dann aufgerufen, nachdem der Spieler ihren Zug ausgeführt hat, unmittelbar bevor meine computerAI() -Methode aufgerufen wurde.

    Es hat jedoch nicht ganz richtig funktioniert und es scheint, als würde es warten, bevor es die Farben der Tafel ändert, da der Spieler klickt und der Hintergrund in das Standard-Hellgrau wechselt und nachdem es eine Sekunde gewartet hat, führt es die Farbänderungen Ihres Umzugs und der Computer durch.

    Hat jemand Vorschläge, dies zu beheben?

    22 November 2011
    Dave Newton
2 answers
  • Verwenden Sie:

     Thread.sleep(5000);
     

    Dadurch wird der aktuelle Thread für 5 Sekunden in den Ruhezustand versetzt. p>

    22 November 2011
    Brian DeragonMasterFX
  • Möglicherweise müssen Sie nicht nur die Farbeigenschaft der Schaltfläche ändern, sondern auch oft die Methode .repaint() oder sogar .update() aufrufen, z. alle 100 ms. Das heißt, Sie müssen die Schaltfläche tatsächlich auf dem Bildschirm neu zeichnen lassen, wenn Sie sie brauchen, und nicht, wenn das System feststellt, dass es Zeit hat, die angesammelten Änderungen anzuzeigen.

    22 November 2011
    9000