quhluh

Character Movement

Dec 9th, 2023
592
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.95 KB | None | 0 0
  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5. import java.awt.event.KeyEvent;
  6. import java.awt.event.KeyListener;
  7.  
  8. public class MovementGame extends JFrame {
  9.  
  10.     private static final int WIDTH = 400;
  11.     private static final int HEIGHT = 400;
  12.  
  13.     private int characterX = 50;
  14.     private int characterY = 50;
  15.  
  16.     public MovementGame() {
  17.         setTitle("Movement Game");
  18.         setSize(WIDTH, HEIGHT);
  19.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  20.  
  21.         MovementPanel movementPanel = new MovementPanel();
  22.         add(movementPanel);
  23.  
  24.         addKeyListener(new MovementKeyListener());
  25.  
  26.         Timer timer = new Timer(10, new ActionListener() {
  27.             @Override
  28.             public void actionPerformed(ActionEvent e) {
  29.                 movementPanel.update();
  30.             }
  31.         });
  32.         timer.start();
  33.     }
  34.  
  35.     private class MovementPanel extends JPanel {
  36.  
  37.         @Override
  38.         protected void paintComponent(Graphics g) {
  39.             super.paintComponent(g);
  40.             g.setColor(Color.BLUE);
  41.             g.fillRect(characterX, characterY, 30, 30);
  42.         }
  43.  
  44.         public void update() {
  45.             repaint();
  46.         }
  47.     }
  48.  
  49.     private class MovementKeyListener implements KeyListener {
  50.  
  51.         @Override
  52.         public void keyPressed(KeyEvent e) {
  53.             int keyCode = e.getKeyCode();
  54.  
  55.             switch (keyCode) {
  56.                 case KeyEvent.VK_LEFT:
  57.                     moveLeft();
  58.                     break;
  59.                 case KeyEvent.VK_RIGHT:
  60.                     moveRight();
  61.                     break;
  62.                 case KeyEvent.VK_UP:
  63.                     moveUp();
  64.                     break;
  65.                 case KeyEvent.VK_DOWN:
  66.                     moveDown();
  67.                     break;
  68.             }
  69.         }
  70.  
  71.         @Override
  72.         public void keyTyped(KeyEvent e) {
  73.             // Not used
  74.         }
  75.  
  76.         @Override
  77.         public void keyReleased(KeyEvent e) {
  78.             // Not used
  79.         }
  80.  
  81.         private void moveLeft() {
  82.             characterX -= 5;
  83.         }
  84.  
  85.         private void moveRight() {
  86.             characterX += 5;
  87.         }
  88.  
  89.         private void moveUp() {
  90.             characterY -= 5;
  91.         }
  92.  
  93.         private void moveDown() {
  94.             characterY += 5;
  95.         }
  96.     }
  97.  
  98.     public static void main(String[] args) {
  99.         SwingUtilities.invokeLater(new Runnable() {
  100.             @Override
  101.             public void run() {
  102.                 new MovementGame().setVisible(true);
  103.             }
  104.         });
  105.     }
  106. }
  107. 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.
Advertisement
Add Comment
Please, Sign In to add comment