mirror of
https://github.com/inf112-v20/Fiasko.git
synced 2025-06-25 10:44:42 +02:00
Merge branch 'master' into player-and-zoom
This commit is contained in:
@ -42,8 +42,6 @@ public class GameLauncher extends ApplicationAdapter {
|
||||
camera.setToOrtho(false, game.getWidth() * tileDimensions,
|
||||
game.getHeight() * tileDimensions);
|
||||
batch = new SpriteBatch();
|
||||
/*MyTextInputListener listener = new MyTextInputListener();
|
||||
Gdx.input.getTextInput(listener, "Input name", "", "Name");*/
|
||||
}
|
||||
|
||||
/**
|
||||
@ -86,15 +84,4 @@ public class GameLauncher extends ApplicationAdapter {
|
||||
textureSheet.dispose();
|
||||
batch.dispose();
|
||||
}
|
||||
|
||||
/*public static class MyTextInputListener implements Input.TextInputListener {
|
||||
@Override
|
||||
public void input (String text) {
|
||||
System.out.println(text);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void canceled () {
|
||||
}
|
||||
}*/
|
||||
}
|
@ -8,8 +8,8 @@ public class Main {
|
||||
public static void main(String[] args) {
|
||||
LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
|
||||
cfg.title = "Game Board";
|
||||
cfg.width = 768;
|
||||
cfg.height = 769;
|
||||
cfg.width = 900;
|
||||
cfg.height = 900;
|
||||
|
||||
new LwjglApplication(new GameLauncher(), cfg);
|
||||
}
|
||||
|
@ -1,14 +0,0 @@
|
||||
package inf112.fiasko.roborally.element_properties;
|
||||
|
||||
/**
|
||||
* This enum represents an action on a programming card
|
||||
*/
|
||||
public enum Action {
|
||||
ROTATE_RIGHT,
|
||||
ROTATE_LEFT,
|
||||
U_TURN,
|
||||
MOVE_1,
|
||||
MOVE_2,
|
||||
MOVE_3,
|
||||
BACK_UP
|
||||
}
|
@ -1,6 +1,5 @@
|
||||
package inf112.fiasko.roborally.game;
|
||||
|
||||
import inf112.fiasko.roborally.element_properties.Direction;
|
||||
import inf112.fiasko.roborally.element_properties.Position;
|
||||
import inf112.fiasko.roborally.element_properties.RobotID;
|
||||
import inf112.fiasko.roborally.objects.Board;
|
||||
@ -30,7 +29,7 @@ public class Game implements IDrawableGame {
|
||||
try {
|
||||
runGameLoop();
|
||||
} catch (InterruptedException e) {
|
||||
e.printStackTrace();
|
||||
Thread.currentThread().interrupt();
|
||||
}
|
||||
}).start();
|
||||
} catch (IOException e) {
|
||||
@ -43,29 +42,49 @@ public class Game implements IDrawableGame {
|
||||
* @throws InterruptedException If interrupted while trying to sleep
|
||||
*/
|
||||
private void runGameLoop() throws InterruptedException {
|
||||
long cycleDelay = 600;
|
||||
TimeUnit.SECONDS.sleep(3);
|
||||
gameBoard.rotateRobotRight(RobotID.ROBOT_1);
|
||||
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||
gameBoard.rotateRobotRight(RobotID.ROBOT_1);
|
||||
TimeUnit.SECONDS.sleep(1);
|
||||
gameBoard.moveRobot(RobotID.ROBOT_1, Direction.SOUTH);
|
||||
TimeUnit.SECONDS.sleep(1);
|
||||
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||
gameBoard.moveRobotForward(RobotID.ROBOT_1);
|
||||
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||
gameBoard.rotateRobotLeft(RobotID.ROBOT_1);
|
||||
TimeUnit.SECONDS.sleep(1);
|
||||
gameBoard.moveRobot(RobotID.ROBOT_1, Direction.EAST);
|
||||
TimeUnit.SECONDS.sleep(1);
|
||||
gameBoard.moveRobot(RobotID.ROBOT_1, Direction.EAST);
|
||||
TimeUnit.SECONDS.sleep(1);
|
||||
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||
gameBoard.moveRobotForward(RobotID.ROBOT_1);
|
||||
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||
gameBoard.moveRobotForward(RobotID.ROBOT_1);
|
||||
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||
gameBoard.rotateRobotRight(RobotID.ROBOT_1);
|
||||
TimeUnit.SECONDS.sleep(1);
|
||||
gameBoard.moveRobot(RobotID.ROBOT_1, Direction.SOUTH);
|
||||
TimeUnit.SECONDS.sleep(1);
|
||||
gameBoard.moveRobot(RobotID.ROBOT_2, Direction.EAST);
|
||||
TimeUnit.SECONDS.sleep(1);
|
||||
gameBoard.moveRobot(RobotID.ROBOT_2, Direction.WEST);
|
||||
TimeUnit.SECONDS.sleep(1);
|
||||
gameBoard.moveRobot(RobotID.ROBOT_2, Direction.EAST);
|
||||
TimeUnit.SECONDS.sleep(1);
|
||||
gameBoard.moveRobot(RobotID.ROBOT_2, Direction.EAST);
|
||||
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||
gameBoard.moveRobotForward(RobotID.ROBOT_1);
|
||||
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
||||
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||
gameBoard.moveRobotForward(RobotID.ROBOT_2);
|
||||
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
||||
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
||||
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||
gameBoard.moveRobotForward(RobotID.ROBOT_2);
|
||||
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
||||
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
||||
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||
gameBoard.moveRobotForward(RobotID.ROBOT_2);
|
||||
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||
gameBoard.moveRobotForward(RobotID.ROBOT_2);
|
||||
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
||||
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
||||
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||
gameBoard.moveRobotForward(RobotID.ROBOT_2);
|
||||
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
||||
gameBoard.moveRobotForward(RobotID.ROBOT_2);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -19,7 +19,6 @@ public class Board {
|
||||
private IGrid<Wall> walls;
|
||||
private IGrid<Tile> tiles;
|
||||
private Map<RobotID, Robot> robots;
|
||||
private List<Robot> deadRobots;
|
||||
|
||||
/**
|
||||
* Initializes the board
|
||||
@ -38,7 +37,6 @@ public class Board {
|
||||
}
|
||||
this.robots.put(robot.getRobotId(), robot);
|
||||
}
|
||||
this.deadRobots = new ArrayList<>();
|
||||
this.boardWidth = tiles.getWidth();
|
||||
this.boardHeight = tiles.getHeight();
|
||||
this.walls = walls;
|
||||
@ -61,18 +59,6 @@ public class Board {
|
||||
return boardWidth;
|
||||
}
|
||||
|
||||
/**
|
||||
* Moves all dead robots to their backups and makes them part of the board again
|
||||
*/
|
||||
public void respawnRobots() {
|
||||
//TODO: Account for several robots re-spawning at same backup
|
||||
for (Robot robot : deadRobots) {
|
||||
robot.setPosition(robot.getBackupPosition());
|
||||
robots.put(robot.getRobotId(), robot);
|
||||
}
|
||||
deadRobots = new ArrayList<>();
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all alive robots from the board
|
||||
* @return A list of alive robots
|
||||
@ -103,7 +89,6 @@ public class Board {
|
||||
*/
|
||||
public void removeDeadRobotFromBoard(Robot robot) {
|
||||
robots.remove(robot.getRobotId());
|
||||
deadRobots.add(robot);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -126,6 +111,14 @@ public class Board {
|
||||
robot.setFacingDirection(newDirection);
|
||||
}
|
||||
|
||||
/**
|
||||
* Moves a robot one unit forward according to the direction it's currently facing
|
||||
* @param robotID The robot to move
|
||||
*/
|
||||
public void moveRobotForward(RobotID robotID) {
|
||||
moveRobot(robotID, robots.get(robotID).getFacingDirection());
|
||||
}
|
||||
|
||||
/**
|
||||
* Moves a robot one unit in a specified direction
|
||||
* @param robotID ID of the robot to move
|
||||
@ -212,7 +205,7 @@ public class Board {
|
||||
* @param robot The robot to kill
|
||||
*/
|
||||
private void killRobot(Robot robot) {
|
||||
//TODO: Must remove a life from the robot/player
|
||||
robot.setAmountOfLives(robot.getAmountOfLives() - 1);
|
||||
removeDeadRobotFromBoard(robot);
|
||||
}
|
||||
|
||||
|
@ -1,20 +0,0 @@
|
||||
package inf112.fiasko.roborally.objects;
|
||||
|
||||
/**
|
||||
* This Interface describes a card without a card suit
|
||||
* @param <S> The value type
|
||||
* @param <T> The symbol type
|
||||
*/
|
||||
public interface ICardWithoutSuit<S,T> {
|
||||
/**
|
||||
* Gets the value of the card
|
||||
* @return The card value
|
||||
*/
|
||||
S getValue();
|
||||
|
||||
/**
|
||||
* Gets the symbol of the card
|
||||
* @return The card symbol
|
||||
*/
|
||||
T getSymbol();
|
||||
}
|
@ -8,6 +8,7 @@ import inf112.fiasko.roborally.element_properties.RobotID;
|
||||
* This class represents a robot
|
||||
*/
|
||||
public class Robot {
|
||||
private int amountOfLives = 3;
|
||||
private int robotDamageTaken = 0;
|
||||
private final RobotID robotId;
|
||||
private boolean inPowerDown = false;
|
||||
@ -18,8 +19,8 @@ public class Robot {
|
||||
|
||||
/**
|
||||
* Instantiates a new robot
|
||||
* @param robotId gives the robot a identifier that links it too the correct player
|
||||
* @param spawnPosition gives the robot its starting position on the map
|
||||
* @param robotId The global identifier of the robot
|
||||
* @param spawnPosition The starting position of the robot
|
||||
*/
|
||||
public Robot (RobotID robotId, Position spawnPosition) {
|
||||
this.robotId = robotId;
|
||||
@ -30,67 +31,69 @@ public class Robot {
|
||||
|
||||
/**
|
||||
* Gets the damage the robot has taken
|
||||
* @return the amount of damage the robot has received
|
||||
* @return The amount of damage the robot has received
|
||||
*/
|
||||
public int getDamage(){
|
||||
public int getDamageTaken() {
|
||||
return robotDamageTaken;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the robot's damage to a given amount
|
||||
* @param damage the amount of damage the robot has received
|
||||
* Sets the robot's taken damage to a given amount
|
||||
* @param damage The amount of damage the robot has received
|
||||
*/
|
||||
public void setDamage (int damage){
|
||||
public void setDamageTaken(int damage) {
|
||||
this.robotDamageTaken = damage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the robot's current position on the map
|
||||
* @return the robot's current position
|
||||
* Gets the robot's current position on the board
|
||||
* @return The robot's current position
|
||||
*/
|
||||
public Position getPosition(){
|
||||
public Position getPosition() {
|
||||
return currentPosition;
|
||||
}
|
||||
|
||||
/**
|
||||
* places the robot on a new position
|
||||
* @param newPosition the new position for the robot
|
||||
* Sets the robot's current position on the board
|
||||
* @param newPosition The new position of the robot
|
||||
*/
|
||||
public void setPosition( Position newPosition ){
|
||||
public void setPosition( Position newPosition ) {
|
||||
this.currentPosition = newPosition;
|
||||
}
|
||||
|
||||
/**
|
||||
* Places the status of the powerdown field
|
||||
* @param powerDownStatus True if robot is going to go to powerdown. False otherwise
|
||||
* Sets power-down status
|
||||
* @param powerDownStatus Whether the robot is currently in power-down
|
||||
*/
|
||||
public void setPowerDown(Boolean powerDownStatus){
|
||||
public void setPowerDown(Boolean powerDownStatus) {
|
||||
this.inPowerDown = powerDownStatus;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the status of the robot's powerdown field
|
||||
* @return robot's powerdown status
|
||||
* Gets the robot's power-down status
|
||||
* @return Whether the robot is currently in power-down
|
||||
*/
|
||||
public Boolean isInPowerDown(){
|
||||
return inPowerDown;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the robot's last visited flag too the new flag and places its backup on the flags position
|
||||
* @param currentFlag the flag the robot is standing on
|
||||
* @param newBackupPosition the position of the flag
|
||||
* Set the robot's last visited flag to the new flag and places its backup on the flag's position
|
||||
* @param currentFlag The flag the robot is standing on
|
||||
*/
|
||||
public void setLastFlagVisitedAndBackupPosition(int currentFlag, Position newBackupPosition){
|
||||
public void setLastFlagVisitedAndUpdateBackupPosition(int currentFlag) {
|
||||
if (currentFlag - 1 != this.lastFlagVisited) {
|
||||
throw new IllegalArgumentException("The robot has not yet visited the previous flag!");
|
||||
}
|
||||
this.lastFlagVisited = currentFlag;
|
||||
this.backupPosition = newBackupPosition;
|
||||
this.backupPosition = currentPosition;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the correct flag the robot visited
|
||||
* @return last visited flag
|
||||
* Gets the last flag the robot visited
|
||||
* @return Last visited flag
|
||||
*/
|
||||
public int getLastFlagVisited(){
|
||||
public int getLastFlagVisited() {
|
||||
return lastFlagVisited;
|
||||
}
|
||||
|
||||
@ -98,15 +101,15 @@ public class Robot {
|
||||
* Gets the robot's backup position
|
||||
* @return The robot's backup position
|
||||
*/
|
||||
public Position getBackupPosition(){
|
||||
public Position getBackupPosition() {
|
||||
return backupPosition;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the identifier of the players controlling the robot
|
||||
* @return player identifier
|
||||
* Gets the robot ID
|
||||
* @return Robot ID
|
||||
*/
|
||||
public RobotID getRobotId(){
|
||||
public RobotID getRobotId() {
|
||||
return robotId;
|
||||
}
|
||||
|
||||
@ -128,4 +131,18 @@ public class Robot {
|
||||
}
|
||||
this.facingDirection = newFacingDirection;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the amount if life the robot has left
|
||||
* @param amountOfLives the new amount if lives the robot has left
|
||||
*/
|
||||
public void setAmountOfLives(int amountOfLives) {
|
||||
this.amountOfLives = amountOfLives;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the amount of life a robot has left.
|
||||
* @return amount of life left
|
||||
*/
|
||||
public int getAmountOfLives() { return this.amountOfLives; }
|
||||
}
|
||||
|
@ -13,7 +13,7 @@ import inf112.fiasko.roborally.objects.Wall;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class IOUtil {
|
||||
public final class IOUtil {
|
||||
private IOUtil() {}
|
||||
|
||||
/**
|
||||
@ -108,7 +108,7 @@ public class IOUtil {
|
||||
Direction direction;
|
||||
if (element.getClass().isAssignableFrom(Robot.class)) {
|
||||
Robot robot = (Robot) element;
|
||||
hasRotatedTexture = TextureConverterUtil.hasRotatedTexture(robot);
|
||||
hasRotatedTexture = false;
|
||||
direction = robot.getFacingDirection();
|
||||
} else if (element.getClass().isAssignableFrom(Tile.class)) {
|
||||
Tile tile = (Tile) element;
|
||||
@ -116,7 +116,7 @@ public class IOUtil {
|
||||
direction = tile.getDirection();
|
||||
} else if (element.getClass().isAssignableFrom(Wall.class)) {
|
||||
Wall wall = (Wall) element;
|
||||
hasRotatedTexture = TextureConverterUtil.hasRotatedTexture(wall);
|
||||
hasRotatedTexture = true;
|
||||
direction = wall.getDirection();
|
||||
} else {
|
||||
throw new IllegalArgumentException("Unknown element type passed to function.");
|
||||
|
@ -2,7 +2,7 @@ package inf112.fiasko.roborally.utility;
|
||||
|
||||
import java.io.InputStream;
|
||||
|
||||
public class ResourceUtil {
|
||||
public final class ResourceUtil {
|
||||
private ResourceUtil() {}
|
||||
|
||||
/**
|
||||
|
@ -110,24 +110,6 @@ public final class TextureConverterUtil {
|
||||
return tileSheetTileHasRotatedTextureMappings.get(tile.getTileType());
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether a wall has textures for different rotations
|
||||
* @param wall The wall to check
|
||||
* @return True if rotated versions of the texture exists. False otherwise
|
||||
*/
|
||||
public static boolean hasRotatedTexture(Wall wall) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks whether a robot has textures for different rotations
|
||||
* @param robot The robot to check
|
||||
* @return True if rotated versions of the texture exists. False otherwise
|
||||
*/
|
||||
public static boolean hasRotatedTexture(Robot robot) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads mappings between a tile and texture
|
||||
*
|
||||
|
Reference in New Issue
Block a user