Search code examples
javalwjglslick2d

How to change the coordinates of an object with the press of a key?


I have to create a small 2D Java tile game for schoolwork and I would like to know how can I move an object with the press of a button.

More specifically, I have an item with ' i ' and ' j ' coordinates in a matrix. After I press ENTER on my keyboard, I want the item to move down by 1 position ( i + 1). If I press ENTER over and over again, the object moves down accordingly. As if the game would be 1 frame/second. How can I do that? I'm kind of new to the Java language and I couldn't find the answer online.

(To make the game with GUI, I followed some tutorials and I'm using the Slick2D library.)


Solution

  • You want to implement your "update" method and read the input from the container based on the pressed keys. There is a very good article here that will help you going with your game and i think this is what you are trying to implement. Here is a sample code from the above link:

    public class MyGame extends BasicGame
    {
        public MyGame()
        {
            super("My game");
        }
     
        public static void main(String[] arguments)
        {
            try
            {
                AppGameContainer app = new AppGameContainer(new MyGame());
                app.setDisplayMode(500, 400, false);
                app.start();
            }
            catch (SlickException e)
            {
                e.printStackTrace();
            }
        }
     
        @Override
        public void init(GameContainer container) throws SlickException
        {
        }
     
        @Override
        public void update(GameContainer container, int delta) throws SlickException
        {
            // You need to implement this function
            Input input = container.getInput();
            if (input.isKeyDown(Input.KEY_ENTER))
            {
                 // ... your code here ...
            }
        }
     
        public void render(GameContainer container, Graphics g) throws SlickException
        {
        }
    }