2016-05-18 39 views
1

我知道图像不断变化,但X/Y坐标不会改变,不让图像移动。为什么是这种情况的发生和我能做些什么来解决它我试图让键输入工作通过获取和设置X/Y值,但它不工作

import java.awt.*; 


public class GameState extends State { 

    private Player player; 
    private int playerX = 1440/2 - 14, playerY = 810/2 - 14; 

    public GameState(SuperHexagonGame game) 
    { 
    super(game); 
    player = new Player(playerX, playerY); 
    } 



    public void tick() 
    { 
    player.tick(); 
    } 

    public Player getPlayer() 
    { 
    return player; 
    } 

    public void render(Graphics g) 
    { 
    g.drawImage(Assets.bg1, 0, 0, null); 
    player.render(g); 
    } 
} 

播放器类

来检查按键输入
import java.awt.*; 


public class Player extends Creature { 

    public Player(int x, int y) 
    { 
    super(x, y); 
    } 

    public void tick() 
    { 
    } 

    public int getX() 
    { 
    return x; 
    } 
    public int getY() 
    { 
    return y; 
    } 
    public void setX(int x) 
    { 
    this.x = x; 
    } 
    public void setY(int y) 
    { 
    this.y = y; 
    } 

    public void render(Graphics g) 
    { 
    System.out.println(y); 
    g.drawImage(Assets.player1, x, y, null); 
    } 

} 

键输入类。我试着去得到它获取当前XY值,加/减75

import java.awt.event.*; 

public class KeyInput extends KeyAdapter { 
    private Player player = new Player(1440/2 - 14, 810/2 - 14); 
public void keyPressed(KeyEvent e) 
{ 
    int key = e.getKeyCode(); 
    System.out.println(key); 

    if (key == KeyEvent.VK_UP) 
    { 
    //decrement y by 75 
    player.setY(player.getY() - 75); 
    } 
    if (key == KeyEvent.VK_DOWN) 
    { 
    //increment y by 75 
    } 
    if (key == KeyEvent.VK_LEFT) 
    { 
    //decrement x by 75 
    } 
    if (key == KeyEvent.VK_RIGHT) 
    { 
    //increment x by 75 
    } 
} 
} 

我知道程序越来越键盘输入(箭头键),因为按一个键就当设置在播放器类的XY值将键码显示在控制台中,但不会将xy值设置为新的xy值以便移动。我只有代码完成向上箭头键,因为我想确保它在复制粘贴之前工作。

回答

0

您必须先登录2 PlayerPlayer player = new Player(1440/2 - 14, 810/2 - 14);player = new Player(playerX, playerY);

我会说,你正在编辑一个玩家并打印另一个玩家。尝试添加以下内容:

public class KeyInput extends KeyAdapter { 
    private Player player; 
    public KeyInput (Player player){ 
     this.player = player;  
    } 
} 
+0

我应该使用getter从'GameState'获取'player'并替换另一个'player'? –

+0

我编辑了我的答案。只需创建一个玩家,并将其传递给'KeyAdapter',这样,您就可以编辑您创建的玩家。 – UDKOX

+0

谢谢,我现在开始工作了! :)我是否必须将此问题标记为已解决? –