在java中单独的逻辑和GUI
|
我正在 Java中实现一个游戏,使用下面显示的类来控制游戏逻辑.解释我的问题时,我会很清楚. > GamePanel >我使用这个类来启动一个线程游戏循环(只有游戏循环) public void run() {
init(); //initialize gamePanel components
// game loop
while (running) {
start = System.nanoTime();
gameManager.update();
KeyInput.update();
MouseInput.update();
gameManager.draw(graphic);
Graphics g2 = getGraphics();
g2.drawImage(image,null);
g2.dispose();
elapsed = System.nanoTime() - start;
wait = targetTime - elapsed / 1000000;
if (wait < 0)
wait = 5;
try {
Thread.sleep(wait);
} catch (Exception e) {
e.printStackTrace();
}
}
> GameManager >我把这个类控制在游戏的每个方面(更新,图形) private void loadState(int state) {
if (state == States.MENU.getValue())
gameState = new Menu(this);
else if (state == States.GAME.getValue())
gameState = new Game(this);
else if (state == States.PATHSELECT.getValue())
gameState = new SelectPath(this);
}
public void update() {
if (gameState != null)
gameState.update();
}
public void draw(java.awt.Graphics2D graphic) {
if (gameState != null)
gameState.draw(graphic);
else {
JOptionPane.showMessageDialog(null,JOptionPane.ERROR_MESSAGE);
}
}
>游戏 > GameState是一个抽象类,它接收作为构造函数参数的GameManager实例,并且它在每个GameState(Menu,Game,MultiPlayer等)中实现了抽象方法. > controller() – >验证状态逻辑 我想到了一个实现类单个实现每个状态的所有draw() 例: 而不是调用gameState.draw(图形);我调用Render.getRenderInstance().draw(graphic,gameState); 那么如何将draw方法和逻辑的其余部分分开呢? 一些忠告?谢谢. 解决方法通常的做法是将游戏分为两部分:>逻辑,在你的情况下看起来可以做好 这里伪码是我如何做的: the main loop: gamestate.update() scene.render(); 在现场你应该拥有所有的图形操作.您应该能够使用类似于此的调用将新图形添加到场景中: scene.addObject(SomeGraphic graphic); 所以现场将渲染该图形每个主循环迭代. 为了实现这一点,您应该在Scene类中保留一个列表或另一个集合,并将每个对象都刻录在一起.所以实际的scene.render()会像这样: public void render() {
for(SomeGraphic graphic : objects) {
graphic.draw()
}
}
您将能够从游戏逻辑控制场景中的内容 – 您可以添加和删除对象等. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
