我正在用java創建一個galaga克隆。我想了解遊戲循環的基礎知識,並且有幾個問題/問題。我有一個更新方法可以改變所有遊戲對象的位置,我有一個繪製方法可以繪製所有對象的所有更新位置。我是否應該調用paint()方法?如何重新繪製對象(清除屏幕然後再繪製一切)?另外,以固定速率調用update()方法的最佳方式是什麼?感謝您的任何意見。Java圖形/基本遊戲循環
public Galaga() throws IOException
{
//set the background
setBackground(Color.BLACK);
//create a controller
c = new Controller();
addKeyListener(c);
setFocusable(true);
//create a player
player = new Ship(40,50);
running = true;
}
public void paint(Graphics g)
{
super.paint(g);
}
//game loop
public void run()
{
while(running)
{
draw(getGraphics());
if(c.right())
player.move(1, 0);
}
}
//update logic
public void update()
{
}
//renders all objects
public void draw(Graphics g)
{
player.draw(g);
}
你叫'重繪()'或切換到[活躍渲染(https://docs.oracle.com /javase/tutorial/extra/fullscreen/rendering.html) –
如果你只是想了解Swing,你在做什麼是好的。但是,如果你真的打算製作遊戲,[Swing可能不適合你。](https://pavelfatin.com/low-latency-painting-in-awt-and-swing/)是[更好的遊戲選項]。(https://www.lwjgl.org/) – markspace