Select Git revision
CoordinateIterator.java
Forked from
YAGOUBI Rim / Game of life 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);
}
}