キャンバス上にランダムな色と位置を持つ10個の長方形を表示するクラスを作成する必要があります。11に達すると、最初の長方形が新しいランダムな色と位置に置き換えられます。12番目のrectが2番目のボックスを置き換え、以下同様に続きます。これにはacm.jar、 http: //jtf.acm.org/javadoc/student/index.htmlを使用しています。
import acm.graphics.*;
import acm.program.*;
import java.awt.Color;
import java.util.Random;
public class Rect extends GraphicsProgram
{
public void run()
{
final int width = 800;
final int height = 600;
final int boxWidth = 50;
final int maxBoxes = 10;
this.setSize(width, height);
Random random = new Random();
for(;;) {
int x = random.nextInt(width-boxWidth);
int y = random.nextInt(height-boxWidth);
Color c = new Color(random.nextInt(255), random.nextInt(255), random.nextInt(255));
GRect r = new GRect(x, y, boxWidth, boxWidth);
r.setFilled(true);
r.setLocation(x, y);
r.setFillColor(c);
this.add(r);
this.pause(100);
}
}
}
色をランダムにする方法はすでに理解していましたが、ボックスを古いものに置き換える方法がわかりません。
編集::: - - - - - - - - - - - - - - - - - - - - - - - ----------------------------------
私は下の人の助けを借りてそれをうまく動かすことができました。新しいforループは次のようになります。
for(;;) {
int x = random.nextInt(width-boxWidth);
int y = random.nextInt(height-boxWidth);
Color c = new Color(random.nextInt(256), random.nextInt(256), random.nextInt(256));
GRect r = new GRect(boxWidth, boxWidth);
r.setFilled(true);
r.setLocation(x, y);
r.setFillColor(c);
add(r, x, y);
int n = getElementCount();
if (n>maxBoxes)
{
remove(getElement(0));
}
this.pause(100);
}
私が理解していないことの1つは、remove(getElement(0))が機能する理由です。削除された後、要素はどのようにインデックスを変更しますか?0〜9の要素が10個あり、element(0)を削除した場合、他の要素がそのインデックスを変更するのはなぜですか?