2020-02-04 17:52:17 +01:00
|
|
|
package inf112.fiasko.roborally.game;
|
|
|
|
|
2020-02-24 18:07:26 +01:00
|
|
|
import inf112.fiasko.roborally.element_properties.Position;
|
|
|
|
import inf112.fiasko.roborally.element_properties.RobotID;
|
2020-02-22 23:36:01 +01:00
|
|
|
import inf112.fiasko.roborally.objects.Board;
|
|
|
|
import inf112.fiasko.roborally.objects.Robot;
|
2020-02-24 18:07:26 +01:00
|
|
|
import inf112.fiasko.roborally.objects.Tile;
|
|
|
|
import inf112.fiasko.roborally.objects.Wall;
|
2020-02-22 23:36:01 +01:00
|
|
|
import inf112.fiasko.roborally.utility.BoardLoaderUtil;
|
2020-01-31 13:53:08 +01:00
|
|
|
|
2020-02-22 23:36:01 +01:00
|
|
|
import java.io.IOException;
|
2020-02-03 14:10:52 +01:00
|
|
|
import java.util.ArrayList;
|
2020-01-31 13:53:08 +01:00
|
|
|
import java.util.List;
|
2020-02-24 18:07:26 +01:00
|
|
|
import java.util.concurrent.TimeUnit;
|
2020-01-31 13:53:08 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* This class represent a game which is drawable using libgdx
|
|
|
|
*/
|
|
|
|
public class Game implements IDrawableGame {
|
2020-02-22 23:36:01 +01:00
|
|
|
private Board gameBoard;
|
|
|
|
|
|
|
|
public Game() {
|
|
|
|
try {
|
|
|
|
List<Robot> robots = new ArrayList<>();
|
2020-02-24 18:07:26 +01:00
|
|
|
robots.add(new Robot(RobotID.ROBOT_1, new Position(1, 1)));
|
2020-02-24 23:35:58 +01:00
|
|
|
robots.add(new Robot(RobotID.ROBOT_2, new Position(1, 2)));
|
2020-02-22 23:36:01 +01:00
|
|
|
gameBoard = BoardLoaderUtil.loadBoard("boards/Checkmate.txt", robots);
|
2020-02-24 18:07:26 +01:00
|
|
|
new Thread(() -> {
|
|
|
|
try {
|
|
|
|
runGameLoop();
|
|
|
|
} catch (InterruptedException e) {
|
2020-02-26 08:10:46 +01:00
|
|
|
Thread.currentThread().interrupt();
|
2020-02-24 18:07:26 +01:00
|
|
|
}
|
|
|
|
}).start();
|
2020-02-22 23:36:01 +01:00
|
|
|
} catch (IOException e) {
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
}
|
2020-01-31 13:53:08 +01:00
|
|
|
|
2020-02-24 22:27:19 +01:00
|
|
|
/**
|
|
|
|
* Does whatever the game wants to do
|
|
|
|
* @throws InterruptedException If interrupted while trying to sleep
|
|
|
|
*/
|
2020-02-24 18:07:26 +01:00
|
|
|
private void runGameLoop() throws InterruptedException {
|
2020-02-26 08:10:46 +01:00
|
|
|
long cycleDelay = 600;
|
2020-02-24 22:27:19 +01:00
|
|
|
TimeUnit.SECONDS.sleep(3);
|
|
|
|
gameBoard.rotateRobotRight(RobotID.ROBOT_1);
|
2020-02-26 08:10:46 +01:00
|
|
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
2020-02-24 22:27:19 +01:00
|
|
|
gameBoard.rotateRobotRight(RobotID.ROBOT_1);
|
2020-02-26 08:10:46 +01:00
|
|
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
2020-02-25 17:45:39 +01:00
|
|
|
gameBoard.moveRobotForward(RobotID.ROBOT_1);
|
2020-02-26 08:10:46 +01:00
|
|
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
2020-02-24 22:27:19 +01:00
|
|
|
gameBoard.rotateRobotLeft(RobotID.ROBOT_1);
|
2020-02-26 08:10:46 +01:00
|
|
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
2020-02-25 17:45:39 +01:00
|
|
|
gameBoard.moveRobotForward(RobotID.ROBOT_1);
|
2020-02-26 08:10:46 +01:00
|
|
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
2020-02-25 17:45:39 +01:00
|
|
|
gameBoard.moveRobotForward(RobotID.ROBOT_1);
|
2020-02-26 08:10:46 +01:00
|
|
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
2020-02-24 22:27:19 +01:00
|
|
|
gameBoard.rotateRobotRight(RobotID.ROBOT_1);
|
2020-02-26 08:10:46 +01:00
|
|
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
2020-02-25 17:45:39 +01:00
|
|
|
gameBoard.moveRobotForward(RobotID.ROBOT_1);
|
2020-02-26 08:10:46 +01:00
|
|
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
2020-02-25 17:45:39 +01:00
|
|
|
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
2020-02-26 08:10:46 +01:00
|
|
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
2020-02-25 17:45:39 +01:00
|
|
|
gameBoard.moveRobotForward(RobotID.ROBOT_2);
|
2020-02-26 08:10:46 +01:00
|
|
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
2020-02-25 17:45:39 +01:00
|
|
|
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
2020-02-26 08:10:46 +01:00
|
|
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
2020-02-25 17:45:39 +01:00
|
|
|
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
2020-02-26 08:10:46 +01:00
|
|
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
2020-02-25 17:45:39 +01:00
|
|
|
gameBoard.moveRobotForward(RobotID.ROBOT_2);
|
2020-02-26 08:10:46 +01:00
|
|
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
2020-02-25 17:45:39 +01:00
|
|
|
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
2020-02-26 08:10:46 +01:00
|
|
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
2020-02-25 17:45:39 +01:00
|
|
|
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
2020-02-26 08:10:46 +01:00
|
|
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
2020-02-25 17:45:39 +01:00
|
|
|
gameBoard.moveRobotForward(RobotID.ROBOT_2);
|
2020-02-26 08:10:46 +01:00
|
|
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
2020-02-25 17:45:39 +01:00
|
|
|
gameBoard.moveRobotForward(RobotID.ROBOT_2);
|
2020-02-26 08:10:46 +01:00
|
|
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
2020-02-25 17:45:39 +01:00
|
|
|
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
2020-02-26 08:10:46 +01:00
|
|
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
2020-02-25 17:45:39 +01:00
|
|
|
gameBoard.rotateRobotRight(RobotID.ROBOT_2);
|
2020-02-26 08:10:46 +01:00
|
|
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
2020-02-25 17:45:39 +01:00
|
|
|
gameBoard.moveRobotForward(RobotID.ROBOT_2);
|
2020-02-26 08:10:46 +01:00
|
|
|
TimeUnit.MILLISECONDS.sleep(cycleDelay);
|
2020-02-25 17:45:39 +01:00
|
|
|
gameBoard.moveRobotForward(RobotID.ROBOT_2);
|
2020-02-24 18:07:26 +01:00
|
|
|
}
|
|
|
|
|
2020-01-31 13:53:08 +01:00
|
|
|
@Override
|
|
|
|
public int getWidth() {
|
2020-02-24 18:07:26 +01:00
|
|
|
return gameBoard.getBoardWidth();
|
2020-01-31 13:53:08 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public int getHeight() {
|
2020-02-24 18:07:26 +01:00
|
|
|
return gameBoard.getBoardHeight();
|
2020-01-31 13:53:08 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2020-02-24 18:07:26 +01:00
|
|
|
public List<Tile> getTilesToDraw() {
|
|
|
|
return gameBoard.getTiles();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public List<Wall> getWallsToDraw() {
|
|
|
|
return gameBoard.getWalls();
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public List<Robot> getRobotsToDraw() {
|
|
|
|
return gameBoard.getAliveRobots();
|
2020-01-31 13:53:08 +01:00
|
|
|
}
|
|
|
|
}
|