Java Dispatch/Dispose键按下:已执行操作事件
我正在制作吃豆人游戏,但它与普通游戏略有不同。这场比赛最初有3次机会。机会1由用户通过光标控制,所有移动都记录在一个文件中,直到Pacman被鬼魂抓住 因此,简而言之,我想分派/处置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
按键事件,这样就不会调用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");
}