gpt4 book ai didi

java - 创建玩家乒乓 block 时的类组织问题

转载 作者:行者123 更新时间:2023-11-30 09:20:01 25 4
gpt4 key购买 nike

我在类(class)组织方面遇到了一些小问题(这是我一直不擅长的事情)。我有一个使用 LWJGL 库在 Java 中构建的乒乓球游戏。我现在上了三个类。我有一个 Startup 类,一个一切都从中开始的类(显示窗口),一个 InputHandler(处理用户输入的类)和一个 Player 类。我希望播放器移动方法 moveUp()moveDown() 进入播放器类。这些方法由 InputHandler 类处理,该类接受向上箭头和向下箭头输入并根据输入移动播放器 block 。一个问题。我在播放器 block 中的什么地方写?我会在启动时写它,以便它可以在屏幕上显示吗?我会把它写到 Player 类中吗?或者我什至会把它写到 InputHandler 类中,以便可以通过键盘移动来控制它?我将在下面发布所有三个类(class)。它们都很短。请随时指出我可能没有发现的任何其他缺陷。我对 Java 相当陌生,对 LWJGL 也非常陌生。

启动类:

public class Startup {

// set up display
public void start() {
try {
Display.setDisplayMode(new DisplayMode(600, 400)); // these numbers pending
Display.setTitle("Evan's Pong!");
Display.create();
} catch (LWJGLException e) {
e.printStackTrace();
System.exit(0);
}

while (!Display.isCloseRequested()) {
// render OpenGL here
handler.handleInput();
Display.update();
Display.sync(60);
}

GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, 600, 4, 0, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);


Display.destroy();
}


// Let's start this beyotch up!
InputHandler handler = new InputHandler();

public static void main(String[] args) {
new Startup().start();
}
}

输入处理程序:

public class InputHandler {

/*
* create a new player object. This is for the player's paddle that will
* move up and down to block the ball
*/
Player player = new Player();

// testing input for now!
public void handleInput() {
if (Keyboard.isKeyDown(Keyboard.KEY_UP)) {
// System.out.println("going up.");
player.moveUp();
}
if (Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
// System.out.println("going down");
player.moveDown();
}
}
}

玩家类:

public class Player {

private int moveSpeed = 10; // mph

public void moveUp() {
// move up
}

public void moveDown() {
// move down
}
}

最佳答案

这个问题没有唯一的正确答案,但我会这样做:

  1. 丢失 InputHandler。
  2. 在播放器中创建一个方法,在每一帧检查输入并更改内部位置变量。
public class Player {
private int moveSpeed = 10; // mph
private int position = 128; // Or whatever would be centered.

public void update() {
if (Keyboard.isKeyDown(Keyboard.KEY_UP)) {
position += moveSpeed;
} else if (Keyboard.isKeyDown(Keyboard.KEY_DOWN)) {
position -= moveSpeed;
}
}
}

另外,您需要将 OpenGl 设置代码(GL11.glMatrixMode(GL11.GL_PROJECTION); 等)从主循环下方向上移动。在完成任何其他渲染之前需要调用这些东西。

关于java - 创建玩家乒乓 block 时的类组织问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17636588/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com