java - 我试图通过获取和设置 x/y 值来使关键输入起作用,但它不起作用

标签 java

我知道图像不断绘制,但 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 来设置玩家类中的 xy 值

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 值以进行移动。我只为向上箭头键完成了代码,因为我想确保它在复制粘贴之前有效。

最佳答案

您这里有 2 个玩家Player 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;    
    }
}

关于java - 我试图通过获取和设置 x/y 值来使关键输入起作用,但它不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37288129/

相关文章:

Java - 从 1 个输入流读取字节和字符串

java - 从 Java 调用 Matlab 以获得繁重的算法?

java - 修改 HTML 和 JSP

java - 使用 Hibernate 请求和分页多个不相关的实体类型

java - 如何在 PubNub GWT api 中设置 UUID?

java - ZeroMQ 产生的结果微乎其微

java - Selenium webdriver java 等待元素存在

java - Gson HashMap<String, List<String>> 序列化和反序列化出现错误

java - 如何停止 Flume 的 HTTP 源

java - jersey-test-framework grizzly 返回 404 未找到错误