2016-05-18 37 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

謝謝,我現在開始工作了! :)我是否必須將此問題標記爲已解決? –