我对 Java 以及制作游戏循环相当陌生,并且正在尝试创建太空入侵者。但是,当我执行代码时,start() 方法不会运行。为什么这没有发生?是否还有其他我可以更改的内容以使其运行得更好?
import java.awt.Canvas;
import javax.swing.*;
public class Main extends Canvas implements Runnable
{
private boolean running = false;
private Thread thread;
public static void main(String[] args) {
Window w = new Window(800,600,"Space Invaders",new Main());
}
public synchronized void start(){
System.out.println("debug1");
if(running)
{
return;
}
running = true;
thread = new Thread(this);
thread.start();
}
public void run()
{
long lastTime = System.nanoTime();
double amountOfTicks = 60.0;
double ns = 1000000000 / amountOfTicks;
double delta = 0;
long timer =System.currentTimeMillis();
int updates = 0;
int frames = 0;
while(running){
long now = System.nanoTime();
delta += (now - lastTime) / ns;
lastTime = now;
while(delta >=1){
tick();
updates++;
delta--;
}
render();
frames++;
if(System.currentTimeMillis()- timer > 1000){
timer += 1000;
System.out.println("FPS: " + frames + "TICKS: " + updates);
frames = 0;
updates = 0;
}
}
}
private void tick()
{
}
private void render()
{
}
}