2

Javaアプレットで、2台の車の間でこの小さなレースをしています。ランダムな速度で移動するちょうど 2 つの写真。現在位置からゴールまでの距離を計算していますが、上の隅に距離が表示されているはずです。

問題は、テキスト フィールドを更新できないことです。代わりに、古い数字の上に新しいレイヤーを適用するだけなので、読むことはほとんど不可能です。ここに私の問題を示す写真があります。

各ループの開始時に青い四角形を作成することで解決できると思っていましたが、解決していないようです。

イニシャル

画像2

    public void action(){
    Random rand = new Random();
    boolean race = true;
    int x1 =500, y1 = 233;
    int x2 = 500, y2 = 333;
    int speed1 = rand.nextInt(15) + -16;
    int speed2 = rand.nextInt(15) + -16;
    int finishline = 30;
    Text winnerBlue = new Text("Winner: BLUE",new Font("SansSerif",Font.BOLD,20), Color.blue,Color.white);
    Text winnerRed = new Text("Winner: RED",new Font("SansSerif",Font.BOLD,20), Color.red,Color.white);
    //background
    Text text =null;
    Text text2 = null;
    window.fillRect(0, 0, 600, 400, Color.GREEN);
    //track 1
    window.fillRect(20, 330, 550, 39, Color.gray);
    //track2
    window.fillRect(20, 230, 550, 39, Color.gray);

    //Finish line
    window.fillRect(40, 210, 10, 180, Color.BLACK);



    while(race){

        text = new Text(Integer.toString(x1),new Font("Courier",Font.BOLD,20), Color.WHITE);
        text2 = new Text(Integer.toString(x2),new Font("SansSerif",Font.BOLD,20), Color.WHITE);
        window.fillRect(0, 0, 70, 50, Color.blue);
        window.fillRect(70, 0, 70, 50, Color.red);
        window.showImage(text, 0, 0);
        window.showImage(text2, 70, 0);

        window.showImage(car1.getImage(), x1, y1);
        window.showImage(car2.getImage(), x2, y2);

        car1.moveTo(x1 += speed1, y1);
        car2.moveTo(x2 += speed2, y2);
        window.pause(50);
        if(x1 <= (finishline ) ){
            speed1 = 0;
            speed2 = 0;
            window.showImage(winnerBlue, 200, 200);
            race = false;



            }
        if(x2 <= (finishline)){
            speed2 = 0;
            speed1 = 0;
            window.showImage(winnerRed, 200, 200);
            race = false;

        }

    }


}

}

4

1 に答える 1

0

2 つのスクリーン ショットと付属のコード スニペットを見ると、Swing/AWT での描画のしくみを理解していないことは明らかです。

メソッドGraphicsの外側のコンテキストへのいかなる種類の参照も維持しないでください。paintXxx

これらのpaintメソッドは、Graphics描画用のコンテキストを準備するための非常に重要なステップをいくつか実行します。

カスタムペインティングの実行を確認することから始めます

于 2013-10-18T19:40:27.780 に答える