Java Dispatch/Dispose键按下:已执行操作事件

Java Dispatch/Dispose键按下:已执行操作事件,java,swing,events,event-listener,Java,Swing,Events,Event Listener,我正在制作吃豆人游戏,但它与普通游戏略有不同。这场比赛最初有3次机会。机会1由用户通过光标控制,所有移动都记录在一个文件中,直到Pacman被鬼魂抓住 因此,简而言之,我想分派/处置按键事件,这样就不会调用action performed事件,我将手动调用它。我的代码如下: addKeyListener(new TAdapter()); class TAdapter extends KeyAdapter { public void keyPressed(KeyEve

我正在制作吃豆人游戏,但它与普通游戏略有不同。这场比赛最初有3次机会。机会1由用户通过光标控制,所有移动都记录在一个文件中,直到Pacman被鬼魂抓住

因此,简而言之,我想分派/处置
按键事件,这样就不会调用action performed事件,我将手动调用它。我的代码如下:

    addKeyListener(new TAdapter());


 class TAdapter extends KeyAdapter {
        public void keyPressed(KeyEvent e) {

          int key = e.getKeyCode();

          if (ingame)
          {
            if (key == KeyEvent.VK_LEFT)
            {
             System.out.println("moved L");
              reqdx=-1;
              reqdy=0;
                try {
                    if(bw!=null)
                        bw.write("L");
                } catch (IOException ex) {
                    Logger.getLogger(Board.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            else if (key == KeyEvent.VK_RIGHT)
            {System.out.println("moved R");
              reqdx=1;
              reqdy=0;
                try {
                    if(bw!=null)
                        bw.write("R");
                } catch (IOException ex) {
                    Logger.getLogger(Board.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            else if (key == KeyEvent.VK_UP)
            {System.out.println("moved U");
              reqdx=0;
              reqdy=-1;
                try {
                    if(bw!=null)
                        bw.write("U");
                } catch (IOException ex) {
                    Logger.getLogger(Board.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            else if (key == KeyEvent.VK_DOWN)
            {System.out.println("moved D");
              reqdx=0;
              reqdy=1;
                try {
                    if(bw!=null)
                        bw.write("D");
                } catch (IOException ex) {
                    Logger.getLogger(Board.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
            else if (key == KeyEvent.VK_ESCAPE && timer.isRunning())
            {
              ingame=false;
            }
            else if (key == KeyEvent.VK_PAUSE) {
                if (timer.isRunning())
                    timer.stop();
                else timer.start();
            }
          }
          else
          {
           if (key == 's' || key == 'S')
          {
              ingame=true;
              GameInit();
            }
          }
      }

          public void keyReleased(KeyEvent e) {
              int key = e.getKeyCode();

              if (key == Event.LEFT || key == Event.RIGHT ||
                 key == Event.UP ||  key == Event.DOWN)
              {
                reqdx=0;
                reqdy=0;
              }
          }
      }

    public void actionPerformed(ActionEvent e) {
        System.out.println("action performed : " + e);

        PlayGame();
    }


 public void PlayGame(Graphics2D g2d) throws IOException {
        if (dying) {
            Death();
        } else {
            if(pacsleft<=2)
            {  
                System.out.println(pacsleft + " Yessss");

            }
              MovePacMan();
            DrawPacMan(g2d);
            moveGhosts(g2d);
            CheckMaze();
        }
    }
addKeyListener(新的TAdapter());
类TAdapter扩展了KeyAdapter{
按下公共无效键(按键事件e){
int key=e.getKeyCode();
如果(ingame)
{
if(key==KeyEvent.VK_左)
{
系统输出打印项次(“移动L”);
reqdx=-1;
reqdy=0;
试一试{
如果(bw!=null)
bw.写入(“L”);
}捕获(IOEX异常){
Logger.getLogger(Board.class.getName()).log(Level.SEVERE,null,ex);
}
}
else if(key==KeyEvent.VK_RIGHT)
{System.out.println(“移动的R”);
reqdx=1;
reqdy=0;
试一试{
如果(bw!=null)
bw.写入(“R”);
}捕获(IOEX异常){
Logger.getLogger(Board.class.getName()).log(Level.SEVERE,null,ex);
}
}
else if(key==KeyEvent.VK_UP)
{System.out.println(“moved U”);
reqdx=0;
reqdy=-1;
试一试{
如果(bw!=null)
bw.写入(“U”);
}捕获(IOEX异常){
Logger.getLogger(Board.class.getName()).log(Level.SEVERE,null,ex);
}
}
else if(key==KeyEvent.VK_DOWN)
{System.out.println(“移动的D”);
reqdx=0;
reqdy=1;
试一试{
如果(bw!=null)
bw.写入(“D”);
}捕获(IOEX异常){
Logger.getLogger(Board.class.getName()).log(Level.SEVERE,null,ex);
}
}
else if(key==KeyEvent.VK_ESCAPE&&timer.isRunning())
{
ingame=false;
}
else if(key==KeyEvent.VK_PAUSE){
if(timer.isRunning())
timer.stop();
else timer.start();
}
}
其他的
{
如果(键=='s'| |键=='s')
{
ingame=true;
gaminit();
}
}
}
公共无效密钥已释放(密钥事件e){
int key=e.getKeyCode();
如果(key==Event.LEFT | | key==Event.RIGHT||
key==Event.UP | | key==Event.DOWN)
{
reqdx=0;
reqdy=0;
}
}
}
已执行的公共无效操作(操作事件e){
System.out.println(“执行的操作:+e”);
游戏();
}
public void PlayGame(Graphics2D g2d g2d)引发IOException{
如果(死亡){
死亡();
}否则{
如果(pacsleft
(key='s'| | key='s')
-你知道字母有自己的
VK_X
对吗?public void PlayGame(Graphics2D g2d)抛出IOException{1。应该在paintComponent中完成(两个数组,在从Swing Timer调用的两个数组中的paintComponent循环中,不要使用repaint()从Thread/Runnable#Thread for Java7),2.任何绘制方法都不能抛出IOException,这些对象准备为局部变量,3.对于图形,不要在运行时加载任何FileIo。例如,请使用键绑定。
  if(pacsleft<=2)
                {  
                    System.out.println(pacsleft + " Yessss");

                }