我编写的是一个对战小游戏,但是比如当player1按下某个键的时候,player2再按键不会进行任何操作,一直要等到player1松开按键才可以进行操作。我在网上查了下说可以用键盘查询操作,但是不知道具体怎么实现。请问能不能给出一个简单的用JAVA代码实现的例子。

解决方案 »

  1.   

    我把可能相关的代码发上来:public class game extends Thread
    {
      Thread gameThread = null;
      public void start()
      {  
         if (gameThread == null)
          {
            gameThread = new Thread(this);
            gameThread.start();
          }
          app.addKeyListener(new KeyAdapter()
          {
            public void keyPressed(KeyEvent e)
            {
              keyAction(e);
            }
            public void keyTyped(KeyEvent e)
            {
              keyAction(e);
            }
          });
        }
     private void keyAction(KeyEvent e)
        {
          int keycode = e.getKeyCode();
            
          if (e.getKeyCode() == KeyEvent.VK_LEFT)
          {
             game.player1.moveleft();
          }
          if (e.getKeyCode() == KeyEvent.VK_RIGHT )
          {
             game.player1.moveright();
          }
         if (e.getKeyCode()== KeyEvent.VK_UP)
          {
             game.player1.moveup();
          }
          if (e.getKeyCode() == KeyEvent.VK_DOWN)
          {
             game.player1.movedown();
          }
          keycode = e.getKeyCode(); 
          if(e.getKeyCode() == KeyEvent.VK_SPACE)
          {
            player1.setBomb();
          }
          keycode = e.getKeyCode();
          if(e.getKeyCode() == KeyEvent.VK_R)
          {
           player2.moveup();
          }
           if(e.getKeyCode() == KeyEvent.VK_F)
          {
           player2.movedown();
          }
           if(e.getKeyCode() == KeyEvent.VK_D)
          {
           player2.moveleft();
          }
           if(e.getKeyCode()== KeyEvent.VK_G)
          {
           player2.moveright();
          }
        }此外在run()方法中,有一个死循环,我希望能在这个死循环中,每次循环都查询一下事件监听器看是否有键盘输入
      

  2.   

    直接监听 KeyPressed 不行吗?
      

  3.   

    多线程呢,一个线程负责监听一个Player