quhluh icon

Character Movement

quhluh | 12/09/23 05:24:49 AM UTC | 0 ⭐ | 824 👁️ | Never ⏰ | []
Java |

2.95 KB

|

None

|

0 👍

/

0 👎

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
 
public class MovementGame extends JFrame {
 
    private static final int WIDTH = 400;
    private static final int HEIGHT = 400;
 
    private int characterX = 50;
    private int characterY = 50;
 
    public MovementGame() {
        setTitle("Movement Game");
        setSize(WIDTH, HEIGHT);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 
        MovementPanel movementPanel = new MovementPanel();
        add(movementPanel);
 
        addKeyListener(new MovementKeyListener());
 
        Timer timer = new Timer(10, new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                movementPanel.update();
            }
        });
        timer.start();
    }
 
    private class MovementPanel extends JPanel {
 
        @Override
        protected void paintComponent(Graphics g) {
            super.paintComponent(g);
            g.setColor(Color.BLUE);
            g.fillRect(characterX, characterY, 30, 30);
        }
 
        public void update() {
            repaint();
        }
    }
 
    private class MovementKeyListener implements KeyListener {
 
        @Override
        public void keyPressed(KeyEvent e) {
            int keyCode = e.getKeyCode();
 
            switch (keyCode) {
                case KeyEvent.VK_LEFT:
                    moveLeft();
                    break;
                case KeyEvent.VK_RIGHT:
                    moveRight();
                    break;
                case KeyEvent.VK_UP:
                    moveUp();
                    break;
                case KeyEvent.VK_DOWN:
                    moveDown();
                    break;
            }
        }
 
        @Override
        public void keyTyped(KeyEvent e) {
            // Not used
        }
 
        @Override
        public void keyReleased(KeyEvent e) {
            // Not used
        }
 
        private void moveLeft() {
            characterX -= 5;
        }
 
        private void moveRight() {
            characterX += 5;
        }
 
        private void moveUp() {
            characterY -= 5;
        }
 
        private void moveDown() {
            characterY += 5;
        }
    }
 
    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                new MovementGame().setVisible(true);
            }
        });
    }
}
In this example, the character (represented by a blue rectangle) can be moved using the arrow keys. The MovementGame class contains a MovementPanel class that extends JPanel and handles the drawing of the character. The MovementKeyListener class listens for arrow key presses and updates the character's position accordingly.

Comments