我声明在java中编写我的第一个游戏,我需要一些帮助让KeyListener适合我的游戏。在教程一些搜索后我已经imlemented这样的:需要帮助在Java中实现用于2D游戏的KeyListener
frame.addKeyListener(new KeyAdapter(){
private boolean[] keys = new boolean[120];
public boolean up , down , left , right;
public void tick() {
up = keys[KeyEvent.VK_UP] || keys[KeyEvent.VK_W];
down = keys[KeyEvent.VK_DOWN] || keys[KeyEvent.VK_S];
left = keys[KeyEvent.VK_LEFT] || keys[KeyEvent.VK_A];
right = keys[KeyEvent.VK_RIGHT] || keys[KeyEvent.VK_D];
}
public void keyPressed(KeyEvent e) {
if(e.getKeyCode() != KeyEvent.VK_F5) keys[e.getKeyCode()] = true;
tick();
if (up){
yMap+=4;
direction='n';
xInd=0;
}
else if(down){
yMap-=4;
direction='s';
xInd=2;
}
else if(right){
xMap-=4;
direction='e';
xInd=1;
}
else if(left){
xMap+=4;
direction='w';
xInd=3;
}
wait++;
if(wait==5){
yInd++;
wait=0;
}
if(yInd==3)
yInd=0;
cha=sprites[xInd][yInd];
panel.repaint();
}
public void keyReleased(KeyEvent e) {
keys[e.getKeyCode()] = false;
tick();
yInd=0;
cha=sprites[xInd][yInd];
panel.repaint();
}
public void keyTyped(KeyEvent e) {
}
});
但是每一件事情就是在这段代码罚款,字符正确地移动精灵是完美的,但它缺少的只有一件事,我唯一需要的是当我向一个方向移动角色时,让我们说例如UP,只需点击向上按钮(这通常应该使它只有4个像素点向上移动),角色应该完成自动走向下一个方形(每个方格是32 * 32像素)。
这里的为例,可以说我有什么一些事情是这样地图:
http://i.stack.imgur.com/I6hwj.jpg
红色的色格拉是我想招的角色,我需要的是当我按下上升按钮红色色格拉应自动转到下一广场这样的:
http://i.stack.imgur.com/1XPPX.jpg
,它不应该停留在中间!
我希望我解释得很好,我的问题和对英语不好的抱歉!
你有点说的代码应该做的,但到底是什么它目前办?而且,如果你在这个主题上搜索,你肯定发现你根本不应该使用KeyListeners,而是使用Key Bindings。 –
如何使用密钥绑定? – anony50600
谷歌教程。这是非常有用的,是教我如何使用这些。 –