Hi !
Featured games (90)
games approved by the League of Dukes
Games in Showcase (788)
Games in Android Showcase (234)
games submitted by our members
Games in WIP (860)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  Where Should I Poll For Input?  (Read 1269 times)
0 Members and 1 Guest are viewing this topic.
Offline Time_Waave

Junior Newbie

« Posted 2011-12-07 01:42:15 »

Hi, this is my first time posting and I am relatively inexperienced with programming computer games.  I have been learning in part from cokeandcode's Space Invaders tutorials.  I have lesson 104 downloaded and I am attempting to build something from scratch using it as a guideline.  This tutorial and my program use LWJGL.

My question is:  What is the best way to implement polling?  Where should I put it?
The parts of my code which relate to my question are as follows:

  • GameWindow -- describes the game window; tells Game when to act using a Callback interface; the game loop runs here.

  • Game (implements Callback) -- the main hook; tells stuff what to do.
  • PlayerEntity (extends Entity) -- an entity I want to move when keys are pressed.

In the original source, cokeandcode implements the key polling in a very simple way:

Inside Game:
GameWindow window = getGameWindow();

boolean leftPressed = window.isKeyPressed(KeyEvent.VK_LEFT);
boolean rightPressed = window.isKeyPressed(KeyEvent.VK_RIGHT);
boolean firePressed = window.isKeyPressed(KeyEvent.VK_SPACE);

Inside LWJGLGameWindow (implements GameWindow):
public boolean isKeyPressed(int keyCode) {
      switch(keyCode) {
      case KeyEvent.VK_SPACE:
         keyCode = Keyboard.KEY_SPACE;
      case KeyEvent.VK_LEFT:
         keyCode = Keyboard.KEY_LEFT;
      case KeyEvent.VK_RIGHT:
         keyCode = Keyboard.KEY_RIGHT;
      return org.lwjgl.input.Keyboard.isKeyDown(keyCode);

I know about, and I would like to use that.  Should I put it in GameWindow or in Game?  Or should I forgo LWJGL input and create a key listener?
Offline kappa
« League of Dukes »

JGO Kernel

Medals: 123
Projects: 15


« Reply #1 - Posted 2011-12-07 09:58:33 »

I'd recommend you have a read of the LWJGL Basics Input Tutorial, it should give you a good idea on how to use input (Just read all 5 parts of the LWJGL Basics Tutorials for an overview of the LWJGL API).
Offline Time_Waave

Junior Newbie

« Reply #2 - Posted 2011-12-07 22:28:26 »

I read those, was just wondering where the best place in the code to implement the code.  I am guessing that it's not too important, so I came up with something I like.  Please tell me if there are any major problems with this:

  • Each time through game loop, poll for keys.
  • For every key event, add or remove the key's keycode from an ArrayList<Integer> (if the keycode is in the list, it implies that it is pressed)
  • If I want to check for a key, use function isKeyPressed(keyCode), which use ArrayList.contains() to see if the key is held down
Pages: [1]
  ignore  |  Print  

hadezbladez (2109 views)
2018-11-16 13:46:03

hadezbladez (804 views)
2018-11-16 13:41:33

hadezbladez (2080 views)
2018-11-16 13:35:35

hadezbladez (415 views)
2018-11-16 13:32:03

EgonOlsen (3448 views)
2018-06-10 19:43:48

EgonOlsen (3677 views)
2018-06-10 19:43:44

EgonOlsen (2272 views)
2018-06-10 19:43:20

DesertCoockie (3002 views)
2018-05-13 18:23:11

nelsongames (3072 views)
2018-04-24 18:15:36

nelsongames (3852 views)
2018-04-24 18:14:32
Deployment and Packaging
by philfrei
2019-02-17 20:25:53

Deployment and Packaging
by mudlee
2018-08-22 18:09:50

Java Gaming Resources
by gouessej
2018-08-22 08:19:41

Deployment and Packaging
by gouessej
2018-08-22 08:04:08

Deployment and Packaging
by gouessej
2018-08-22 08:03:45

Deployment and Packaging
by philfrei
2018-08-20 02:33:38

Deployment and Packaging
by philfrei
2018-08-20 02:29:55

Deployment and Packaging
by philfrei
2018-08-19 23:56:20 is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!