我正在用java制作游戏,并且它工作正常。但事情是,当我在地图上产生2名球员时,我正在移动一名球员,另一名球员正在同步。我希望玩家1使用(AWSD),玩家2使用箭头。Java 2球员在1键盘上使用AWSD和箭头
这是我现在所拥有的该类的代码:“KeyInput”
public void keyPressed(KeyEvent e){
int key = e.getKeyCode();
//If the special key is pressed, set it to true.
if(key == KeyEvent.VK_W) handler.setUp(true);
if(key == KeyEvent.VK_S) handler.setDown(true);
if(key == KeyEvent.VK_A) handler.setLeft(true);
if(key == KeyEvent.VK_D) handler.setRight(true);
if(key == KeyEvent.VK_I) handler.setUp(true);
if(key == KeyEvent.VK_K) handler.setDown(true);
if(key == KeyEvent.VK_J) handler.setLeft(true);
if(key == KeyEvent.VK_L) handler.setRight(true);
}
//If the pressed key is released, set everything to false.
public void keyReleased(KeyEvent e){
int key = e.getKeyCode();
//If the special key is released, put it to false.
if(key == KeyEvent.VK_W) handler.setUp(false);
if(key == KeyEvent.VK_S) handler.setDown(false);
if(key == KeyEvent.VK_A) handler.setLeft(false);
if(key == KeyEvent.VK_D) handler.setRight(false);
if(key == KeyEvent.VK_P) handler.setDropBomb(true);
if(key == KeyEvent.VK_I) handler.setUp(false);
if(key == KeyEvent.VK_K) handler.setDown(false);
if(key == KeyEvent.VK_J) handler.setLeft(false);
if(key == KeyEvent.VK_L) handler.setRight(false);
if(key == KeyEvent.VK_M) handler.setDropBomb(true);
}
在类:“玩家”作为跟随代码:
public Player(int x, int y, ID id, Handler handler, Game game, SpriteSheet ss) {
super(x, y, id, ss);
this.handler = handler;
this.game = game;
//Get the player image of the SpriteSheet
player_image= ss.grabImage(1,1,32,48);
}
public void tick() {
x += velX;
y += velY;
collision();
//Set the movement of the player: left,right,up,down
if(handler.isUp()) velY = -5;
else if(!handler.isDown()) velY = 0;
if(handler.isDown()) velY = 5;
else if(!handler.isUp()) velY = 0;
if(handler.isRight()) velX = 5;
else if(!handler.isLeft()) velX = 0;
if(handler.isLeft()) velX = -5;
else if(!handler.isRight()) velX = 0;
if(handler.isDropped()){
Dropbomb(x,y);
}
}
我一直思考这个年龄..我试图做第二个处理程序,但导致了很多重复的代码。不知何故有一个想法?
随着不同的控制你需要一些“重复的代码” – coinbird