ゲームを作成するために、Javaで実行しようとしているスレッドがあります。スレッドは本質的に少しの間スリープし、オブジェクトを更新してから repaint() を呼び出します。インターネットで見つけたコードのように見えますが、うまくいきません。
コードは次のとおりです。
@Override
public void run() {
int sleep = 500;
Dimension dim = getSize();
while(true){
try {
Thread.sleep(sleep);
System.out.println("Sleeping!");
} catch (InterruptedException e) {
System.out.println("interrupted");
}
for(int i = 0 ; i < poop.size() ; i++){
poop.get(i).update(dim.width, dim.height);
System.out.println("Y is: "+poop.get(i).getYCoord()+" Step is: "+poop.get(i).getYStep());
}
repaint();
}
}
問題は、try catch ブロックを for ループに入れると発生します。これは正常に呼び出され、System.out は Y 座標も出力しますが、更新はもう機能しません。どんなアイデアも素晴らしいでしょう。さらにコードが必要な場合は、教えてください。更新コードもここに置きます。また、多かれ少なかれスレッドの初心者のように私を扱ってください。また、私が使用しているスイングライブラリの多かれ少なかれ初心者でもあります。
update() コードは次のとおりです。
@Override public void update(int screenWidth, int screenHeight)
{
xCoord += xStep;
if (xCoord > screenWidth) {
xCoord = 0;
} else if (xCoord < 0) {
xCoord = screenWidth;
}
yCoord += yStep;
if (yCoord > screenHeight) {
yCoord = 0;
} else if (yCoord < 0) {
yCoord = screenHeight;
}
}