3
ボールの色を壁のいずれかの側面に当てて変更しようとしています。 色を変えることができますが、その後は元の色に戻ります。これを特定の色に変更することができます
これは私が扱っているコードのセクションです。助けが必要です。色の変化を維持する方法はありますか?
コード全体を見ると、コメント部分//最初のボールの色が見えます。私はコードの一部が元の色に戻り、色が変わらない理由だと確信しています。壁に当たったときに色が変わるのを防ぐ方法はありますか?
public void paint (Graphics g) {
g.drawRect(rectLeftX, rectTopY,
rectRightX - rectLeftX, rectBottomY - rectTopY);
r=new Random();
for (int n = 1; n < 500 ; n++) {
Color backgroundColour = getBackground();
g.setColor(backgroundColour);
g.fillOval(x, y, diameter, diameter);
if (x + xChange <= rectLeftX)
{
xChange = -xChange;
g.setColor(new Color(r.nextInt(256),r.nextInt(256),r.nextInt(256)));
g.fillOval (x, y, diameter, diameter);
}
if(x+xChange + diameter >= rectRightX)
{
xChange = -xChange;
g.setColor(new Color(r.nextInt(256),r.nextInt(256),r.nextInt(256)));
g.fillOval (x, y, diameter, diameter);
}
if (y+yChange <= rectTopY)
{
yChange = -yChange;
g.setColor(new Color(r.nextInt(256),r.nextInt(256),r.nextInt(256)));
g.fillOval (x, y, diameter, diameter);
}
if(y + yChange + diameter >= rectBottomY)
{
yChange = -yChange;
g.setColor(new Color(r.nextInt(256),r.nextInt(256),r.nextInt(256)));
g.fillOval (x, y, diameter, diameter);
}
x = x + xChange;
y = y + yChange;
// initial ball color
g.setColor(get());
g.fillOval (x, y, diameter, diameter);
try {
Thread.sleep(50);
} catch (InterruptedException e) {
g.drawString("sleep exception", 20, 20);
}
}
}
あなたのget()メソッドは、何をしますか? – user2059810
g.setColor(Color.BLACK)と同じもの。私はそれを方法に入れましたが、必ずしもそうである必要はありません。 g.setColor(Color.BLACK)と書くことができます。代わりにforループに入れます。 – hello111