私は自分のゲームに何かを追加しようとしました.1人のプレーヤーが弾丸に当たった場合、彼の健康状態は低下します. 問題は、これをチェックしているときに、CPU が 100% で、すべてが非常に遅いことです。これは問題です。ここに私が使用しているスレッドがあります:
package Graphics;
import java.util.logging.Level;
import java.util.logging.Logger;
public class BulletCollision implements Runnable {
Player1 player1 = new Player1();
Player2 player2 = new Player2();
public Thread checkBulletCollision = new Thread(this);
public void checkPlayerBulletCollide() {
if (player2.getBulletX() > player1.getX() &&
player2.getBulletX() < player1.getX() - 50) {
player2.decHealth(50);
}
}
@Override
public void run() {
while(true) {
checkPlayerBulletCollide();
try {
checkBulletCollision.sleep(100);
} catch (InterruptedException ex) {
Logger.getLogger(BulletCollision.class.getName()).log(
Level.SEVERE, null, ex);
}
}
}
}
ここに問題があると確信しています。コンパイルまたは実行時にエラーはありません。誰かがそれを助けることができれば、それは素晴らしいことです! このクラスを作成しただけなので、コードは完璧ではありません。私はこれを修正するために多くのことを試みました.JFrameのみを表示するDisplayクラスでThreads start()メソッドが呼び出されています. 私は以前、クラス化されたプレーヤーの 1 つで start メソッドを使用していました。