Skip to content
Snippets Groups Projects
Select Git revision
  • 7aa7b4950b38e88f3f7932b522652f17c4e93cce
  • main default protected
  • variant
3 results

FirefighterGrid.java

Blame
  • Forked from LABOUREL Arnaud / Firefighter template
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    Kernel.java 3.16 KiB
    package engine;
    
    import pong.PongApp;
    import pong.PongObject;
    
    import javax.swing.*;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Random;
    
    public class Kernel {
    
        engine.Grid grid;
    
        //public HashMap<PongObject, ImageComponent> pongObjectImageComponentHashMap = new HashMap<>();
        public HashMap<PongObject, Movable> pongObjectEntityHashMap = new HashMap<>();
        Movable movable;
    
        public Kernel(Grid grid) {
            System.out.println("Model created");
            this.grid = grid;
        }
    
        /**
         * Start the game. Associate a Movable to each GameObject and draw them.
         * 
         * @throws IOException
         */
        public void start() throws IOException {
            Random random = new Random(); // For random speed
    
            for (PongObject pongObject: PongApp.components) {
                //Coordinates2D speed = new Coordinates2D(random.nextInt(2) - 1, random.nextInt(2) - 1);
                Coordinates2D speed = new Coordinates2D(0, 1);
                pongObjectEntityHashMap.put(pongObject, new Movable(1, pongObject.getPosition(), speed, new Coordinates2D(0, 0), pongObject.getWidth(), pongObject.getHeight()));
                grid.draw(new ImageComponent(pongObject.getImage(), pongObject.getPosition(), pongObject.getWidth(), pongObject.getHeight()));
            }
        }
    
    
        /**
         * One step of the game. Update all objects positions and repaint the grid.
         */
        public void update() {
            System.out.println("One step");
            // Updating all objects positions
            for (PongObject pongObject: PongApp.components) {
                pongObjectEntityHashMap.get(pongObject).updatePosition(); // Updating of the associated movable position
    
                pongObject.setPosition(pongObjectEntityHashMap.get(pongObject).getPosition()); // Updating of the pong object position
    
                try {
                    grid.draw(new ImageComponent(pongObject.getImage(), pongObject.getPosition(), pongObject.getWidth(), pongObject.getHeight()));
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
            // Repainting the grid
            grid.repaint();
            grid.revalidate();
        }
    
        /**
         * Listen to keyboard events.
         */
        public void setKeysListeners(JPanel mainPanel) {
            mainPanel.addKeyListener(new java.awt.event.KeyAdapter() {
                public void keyPressed(java.awt.event.KeyEvent evt) {
                    switch (evt.getKeyCode()) {
                        // J'ai essayé mais je me perds pour gerer les debordements
                        case java.awt.event.KeyEvent.VK_UP -> {
                            movable.setSpeed(new Coordinates2D(0, -1));
                        }
                        case java.awt.event.KeyEvent.VK_DOWN -> {
                            movable.setSpeed(new Coordinates2D(0, 1));
                        }
                        case java.awt.event.KeyEvent.VK_LEFT -> {
                            movable.setSpeed(new Coordinates2D(-1, 0));
                        }
                        case java.awt.event.KeyEvent.VK_RIGHT -> {
                            movable.setSpeed(new Coordinates2D(1, 0));
                        }
                    }
                }
            });
            mainPanel.setFocusable(true);
        }
    
    
    }