在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() } } 您将能够从游戏逻辑控制场景中的内容 – 您可以添加和删除对象等. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |