Java에서 간단한 2D 게임을 만들려고합니다.UI 스레드를 멈추지 않고 게임 루프를 구현하는 가장 좋은 방법
지금까지, 메뉴 모음 및 JPanel
을 확장하는 클래스가 있고 paint
메서드를 재정의했습니다. 이제 게임 루프를 만들어야합니다. 여기서 이미지의 위치를 업데이트 할 것입니다. 그러나, 나는 이것을 달성하는 최선의 방법에 갇혀있다. 다중 스레드를 사용해야합니까? 왜냐하면 확실하게 메인 스레드에 무한 루프를 넣으면 UI (따라서 내 메뉴 표시 줄)가 멈 춥니 다.
여기 내 코드는 지금까지의 :
import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JPanel;
@SuppressWarnings("serial")
public class GameCanvas extends JPanel {
public void paint(Graphics g) {
while (true) {
g.setColor(Color.DARK_GRAY);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
@SuppressWarnings("serial")
public class Main extends JFrame {
GameCanvas canvas = new GameCanvas();
final int FRAME_HEIGHT = 400;
final int FRAME_WIDTH = 400;
public static void main(String args[]) {
new Main();
}
public Main() {
super("Game");
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
JMenuItem startMenuItem = new JMenuItem("Pause");
menuBar.add(fileMenu);
fileMenu.add(startMenuItem);
super.add(canvas);
super.setVisible(true);
super.setSize(FRAME_WIDTH, FRAME_WIDTH);
super.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
super.setJMenuBar(menuBar);
}
}
모든 포인터 또는 팁? 내 루프는 어디에 두어야합니까? 내 메인 클래스 또는 GameCanvas 클래스에서?