So I have a simple square rendered in the immediate mode. For some reason, I cannot figure out how to actually use the translate function to make the square move. Here's my player class:
Code :public class Player extends Canvas { public int x = 0; public int y = 0; static int walkSpeed = 2; private InputHandler input; public Player() { render(); update(); } public void update() { input = new InputHandler(); addKeyListener(input); if (input.up) System.out.print("up"); y--; if (input.down) System.out.print("down"); y++; if (input.left) System.out.print("left"); x--; if (input.right) System.out.print("right"); x++; } public void render() { glTranslatef(x, y, 0); glBegin(GL_QUADS); glVertex2i(300, 300);// upper left glVertex2i(350, 300);// upper right glVertex2i(350, 350);// bottom right glVertex2i(300, 350);// bottom left glEnd(); } }
And here's my input handler class:
Code :public class InputHandler implements KeyListener{ private boolean[] keys = new boolean[120]; public boolean up, down, left, right, exit; public void update(){ up = keys[KeyEvent.VK_W]; down = keys[KeyEvent.VK_S]; left = keys[KeyEvent.VK_A]; right = keys[KeyEvent.VK_D]; exit = keys[KeyEvent.VK_ESCAPE]; } public void keyPressed(KeyEvent e) { keys[e.getKeyCode()] = true; } public void keyReleased(KeyEvent e) { keys[e.getKeyCode()] = false; } public void keyTyped(KeyEvent e) { } }
Did I set up my key listener wrong?



Reply With Quote