Java-Gaming.org
Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
Featured games (78)
games approved by the League of Dukes
Games in Showcase (416)
games submitted by our members
Games in WIP (307)
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 464 times)
0 Members and 1 Guest are viewing this topic.
Offline Time_Waave

Junior Newbie





« Posted 2011-12-07 02: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:

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

Classes:
  • 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:
1  
2  
3  
4  
5  
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):
1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
public boolean isKeyPressed(int keyCode) {
      switch(keyCode) {
      case KeyEvent.VK_SPACE:
         keyCode = Keyboard.KEY_SPACE;
         break;
      case KeyEvent.VK_LEFT:
         keyCode = Keyboard.KEY_LEFT;
         break;
      case KeyEvent.VK_RIGHT:
         keyCode = Keyboard.KEY_RIGHT;
         break;
      }
      return org.lwjgl.input.Keyboard.isKeyDown(keyCode);
   }


I know about Keyboard.next(), 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: 53
Projects: 15


★★★★★


« Reply #1 - Posted 2011-12-07 10: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 23: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  
 
 
You cannot reply to this message, because it is very, very old.

Play Revenge of the Titans! The situation is critical. We need fancy commanders to defend Earth, the moon, Mars!
 
Try the Free Demo of Revenge of the Titans

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

The invasion has landed! On Mars! And you're there to beat 'em!
mrbenebob (18 views)
2013-06-19 14:55:23

BrassApparatus (28 views)
2013-06-19 08:52:37

NegativeZero (31 views)
2013-06-19 03:31:52

NegativeZero (33 views)
2013-06-19 03:24:09

Jesse_Attard (37 views)
2013-06-18 22:03:02

HeroesGraveDev (74 views)
2013-06-15 23:35:23

Vermeer (75 views)
2013-06-14 20:08:06

davedes (76 views)
2013-06-14 16:03:55

alaslipknot (68 views)
2013-06-13 07:56:31

Roquen (91 views)
2013-06-12 04:12:32
Smoothing Algorithm Question
by UprightPath
2013-05-28 02:58:26

Smoothing Algorithm Question
by UprightPath
2013-05-28 02:57:33

Complex number cookbook
by Roquen
2013-04-24 12:47:31

2D Dynamic Lighting
by Oskuro
2013-04-17 16:46:12

2D Dynamic Lighting
by Oskuro
2013-04-17 16:45:57

2D Dynamic Lighting
by Oskuro
2013-04-17 16:23:20

Noise (bandpassed white)
by Roquen
2013-04-05 17:36:01

Noise (bandpassed white)
by Roquen
2013-04-03 16:17:38
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!