私はいくつかのクラス組織に少し苦境に陥っています (私がいつも苦手だったものです)。LWJGL ライブラリを使用して Java で構築している卓球ゲームがあります。現在3クラスあります。Startup クラス、すべてが開始されるクラス (ウィンドウが表示されます)、InputHandler (ユーザーからの入力を処理するクラス)、および Player クラスがあります。Player move メソッドが必要でmoveUp()
、moveDown()
player クラスに入ります。これらのメソッドは、InputHandler
上矢印と下矢印の入力を受け取り、入力に基づいてプレイヤーブロックを動かすクラス。一つの問題。プレーヤーブロックのどこに書きますか? 画面に表示できるように、起動時に書きますか?Player クラスに記述しますか? それとも、キーボードの動きによって制御できるように、InputHandler クラスに書き込むことさえできますか? 以下に3つのクラスすべてを投稿します。それらはすべてかなり短いです。私が見つけていないかもしれない他の欠陥を指摘してください。私は 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
}
}