mirror of
https://github.com/inf112-v20/Fiasko.git
synced 2025-01-31 23:29:36 +01:00
Rydder kraftig opp i koden
Legger til alle manglende kommentarer Fikser en del variabelnavn med feil camelCase Legger til en boks som gir beskjed om at et navn ikke kan være tomt Oppdaterer versjon i pom og readme Forenkler noen av testene Fjerner duplisert kode i tester Fikser problemer rapportert av Codacy Bytter navn på respons beholdere for å tydeliggjøre bruk Fjerner ubrukte metoder Fikser noen skrivefeil
This commit is contained in:
parent
6394bd9655
commit
acab7345f2
@ -36,6 +36,6 @@ Dette vil også kjøre alle tester i koden
|
|||||||
### Kjøreprosedyre
|
### Kjøreprosedyre
|
||||||
```shell script
|
```shell script
|
||||||
cd target
|
cd target
|
||||||
java -jar roborally-0.2-alpha-jar-with-dependencies.jar
|
java -jar roborally-0.4-alpha-jar-with-dependencies.jar
|
||||||
```
|
```
|
||||||
Den produserte .jar filen kan alternativt flyttes til en annen mappe og dobbeltklikkes for å kjøres.
|
Den produserte .jar filen kan alternativt flyttes til en annen mappe og dobbeltklikkes for å kjøres.
|
2
pom.xml
2
pom.xml
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>inf112.fiasko.roborally</groupId>
|
<groupId>inf112.fiasko.roborally</groupId>
|
||||||
<artifactId>roborally</artifactId>
|
<artifactId>roborally</artifactId>
|
||||||
<version>0.3-alpha</version>
|
<version>0.4-alpha</version>
|
||||||
|
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
@ -4,11 +4,13 @@ import com.badlogic.gdx.backends.lwjgl.LwjglApplication;
|
|||||||
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
|
import com.badlogic.gdx.backends.lwjgl.LwjglApplicationConfiguration;
|
||||||
import inf112.fiasko.roborally.gamewrapper.RoboRallyWrapper;
|
import inf112.fiasko.roborally.gamewrapper.RoboRallyWrapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The mail class which runs the game
|
||||||
|
*/
|
||||||
public class Main {
|
public class Main {
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
|
LwjglApplicationConfiguration cfg = new LwjglApplicationConfiguration();
|
||||||
cfg.title = "Game Board";
|
cfg.title = "Robo Rally";
|
||||||
cfg.width = 900;
|
cfg.width = 900;
|
||||||
cfg.height = 900;
|
cfg.height = 900;
|
||||||
cfg.samples = 3;
|
cfg.samples = 3;
|
||||||
|
@ -6,7 +6,7 @@ package inf112.fiasko.roborally.elementproperties;
|
|||||||
public enum GameState {
|
public enum GameState {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* At the absolute start of the game, before anything has happended
|
* At the absolute start of the game, before anything has happened
|
||||||
*/
|
*/
|
||||||
BEGINNING_OF_GAME,
|
BEGINNING_OF_GAME,
|
||||||
/**
|
/**
|
||||||
@ -45,9 +45,13 @@ public enum GameState {
|
|||||||
* Indicates that the game is no longer running
|
* Indicates that the game is no longer running
|
||||||
*/
|
*/
|
||||||
EXITED,
|
EXITED,
|
||||||
|
/**
|
||||||
|
* Indicates that the game is in the process of skipping the power down screen
|
||||||
|
*/
|
||||||
SKIP_POWER_DOWN_SCREEN,
|
SKIP_POWER_DOWN_SCREEN,
|
||||||
|
/**
|
||||||
|
* Indicates that the game is in the process of skipping the stay in power down screen
|
||||||
|
*/
|
||||||
SKIP_STAY_IN_POWER_DOWN
|
SKIP_STAY_IN_POWER_DOWN
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
package inf112.fiasko.roborally.elementproperties;
|
package inf112.fiasko.roborally.elementproperties;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This enum represents all possible particle types
|
||||||
|
*/
|
||||||
public enum ParticleType {
|
public enum ParticleType {
|
||||||
/**
|
/**
|
||||||
* The beam emitting from a single laser
|
* The beam emitting from a single laser
|
||||||
|
@ -68,24 +68,81 @@ public enum TileType {
|
|||||||
* A fast conveyor belt with one entrance on the right and one from behind
|
* A fast conveyor belt with one entrance on the right and one from behind
|
||||||
*/
|
*/
|
||||||
CONVEYOR_BELT_FAST_SIDE_ENTRANCE_RIGHT(16),
|
CONVEYOR_BELT_FAST_SIDE_ENTRANCE_RIGHT(16),
|
||||||
|
/**
|
||||||
|
* The first flag a robot has to visit to win the game
|
||||||
|
*/
|
||||||
FLAG_1(17),
|
FLAG_1(17),
|
||||||
|
/**
|
||||||
|
* The second flag a robot has to visit to win the game
|
||||||
|
*/
|
||||||
FLAG_2(18),
|
FLAG_2(18),
|
||||||
|
/**
|
||||||
|
* The third flag a robot has to visit to win the game
|
||||||
|
*/
|
||||||
FLAG_3(19),
|
FLAG_3(19),
|
||||||
|
/**
|
||||||
|
* The fourth flag a robot has to visit to win the game
|
||||||
|
*/
|
||||||
FLAG_4(20),
|
FLAG_4(20),
|
||||||
|
/**
|
||||||
|
* A wrench which repairs a robot
|
||||||
|
*/
|
||||||
WRENCH(21),
|
WRENCH(21),
|
||||||
|
/**
|
||||||
|
* A wrench and hammer which repairs a robot
|
||||||
|
*/
|
||||||
WRENCH_AND_HAMMER(22),
|
WRENCH_AND_HAMMER(22),
|
||||||
|
/**
|
||||||
|
* The spawn location belonging to the first robot
|
||||||
|
*/
|
||||||
ROBOT_SPAWN_1(23),
|
ROBOT_SPAWN_1(23),
|
||||||
|
/**
|
||||||
|
* The spawn location belonging to the second robot
|
||||||
|
*/
|
||||||
ROBOT_SPAWN_2(24),
|
ROBOT_SPAWN_2(24),
|
||||||
|
/**
|
||||||
|
* The spawn location belonging to the third robot
|
||||||
|
*/
|
||||||
ROBOT_SPAWN_3(25),
|
ROBOT_SPAWN_3(25),
|
||||||
|
/**
|
||||||
|
* The spawn location belonging to the fourth robot
|
||||||
|
*/
|
||||||
ROBOT_SPAWN_4(26),
|
ROBOT_SPAWN_4(26),
|
||||||
|
/**
|
||||||
|
* The spawn location belonging to the fifth robot
|
||||||
|
*/
|
||||||
ROBOT_SPAWN_5(27),
|
ROBOT_SPAWN_5(27),
|
||||||
|
/**
|
||||||
|
* The spawn location belonging to the sixth robot
|
||||||
|
*/
|
||||||
ROBOT_SPAWN_6(28),
|
ROBOT_SPAWN_6(28),
|
||||||
|
/**
|
||||||
|
* The spawn location belonging to the seventh robot
|
||||||
|
*/
|
||||||
ROBOT_SPAWN_7(29),
|
ROBOT_SPAWN_7(29),
|
||||||
|
/**
|
||||||
|
* The spawn location belonging to the eight robot
|
||||||
|
*/
|
||||||
ROBOT_SPAWN_8(30),
|
ROBOT_SPAWN_8(30),
|
||||||
|
/**
|
||||||
|
* A pit without edges a robot may fall into
|
||||||
|
*/
|
||||||
PIT_EMPTY(31),
|
PIT_EMPTY(31),
|
||||||
|
/**
|
||||||
|
* A pit with all edges a robot may fall into
|
||||||
|
*/
|
||||||
PIT_FULL(32),
|
PIT_FULL(32),
|
||||||
|
/**
|
||||||
|
* A pit with one edge a robot may fall into
|
||||||
|
*/
|
||||||
PIT_NORMAL(33),
|
PIT_NORMAL(33),
|
||||||
|
/**
|
||||||
|
* A pit with two connected edges the robot may fall into
|
||||||
|
*/
|
||||||
PIT_CORNER(34),
|
PIT_CORNER(34),
|
||||||
|
/**
|
||||||
|
* A pit with three edges the robot may fall into
|
||||||
|
*/
|
||||||
PIT_U(35);
|
PIT_U(35);
|
||||||
|
|
||||||
private final int tileTypeID;
|
private final int tileTypeID;
|
||||||
|
@ -4,9 +4,21 @@ package inf112.fiasko.roborally.elementproperties;
|
|||||||
* This enum represents all possible wall types
|
* This enum represents all possible wall types
|
||||||
*/
|
*/
|
||||||
public enum WallType {
|
public enum WallType {
|
||||||
|
/**
|
||||||
|
* A normal wall
|
||||||
|
*/
|
||||||
WALL_NORMAL(1),
|
WALL_NORMAL(1),
|
||||||
|
/**
|
||||||
|
* A wall which consists of two connected walls
|
||||||
|
*/
|
||||||
WALL_CORNER(2),
|
WALL_CORNER(2),
|
||||||
|
/**
|
||||||
|
* A wall with a laser
|
||||||
|
*/
|
||||||
WALL_LASER_SINGLE(3),
|
WALL_LASER_SINGLE(3),
|
||||||
|
/**
|
||||||
|
* A wall with two lasers
|
||||||
|
*/
|
||||||
WALL_LASER_DOUBLE(4);
|
WALL_LASER_DOUBLE(4);
|
||||||
|
|
||||||
private final int wallTypeID;
|
private final int wallTypeID;
|
||||||
|
@ -15,7 +15,6 @@ import inf112.fiasko.roborally.gamewrapper.screens.WinnerScreen;
|
|||||||
*/
|
*/
|
||||||
public class ScreenManager {
|
public class ScreenManager {
|
||||||
private BoardActiveScreen boardActiveScreen;
|
private BoardActiveScreen boardActiveScreen;
|
||||||
private PowerDownScreen powerDownScreen;
|
|
||||||
private LoadingScreen loadingScreen;
|
private LoadingScreen loadingScreen;
|
||||||
private UsernameScreen usernameScreen;
|
private UsernameScreen usernameScreen;
|
||||||
private IPAddressScreen ipAddressScreen;
|
private IPAddressScreen ipAddressScreen;
|
||||||
|
@ -86,7 +86,6 @@ public class BoardActiveScreen extends AbstractScreen implements InputProcessor
|
|||||||
roboRallyWrapper.setScreen(roboRallyWrapper.screenManager.getPowerDownScreen(roboRallyWrapper));
|
roboRallyWrapper.setScreen(roboRallyWrapper.screenManager.getPowerDownScreen(roboRallyWrapper));
|
||||||
break;
|
break;
|
||||||
case SKIP_STAY_IN_POWER_DOWN:
|
case SKIP_STAY_IN_POWER_DOWN:
|
||||||
System.out.println("Sent false to server");
|
|
||||||
roboRallyWrapper.client.sendElement(false);
|
roboRallyWrapper.client.sendElement(false);
|
||||||
roboRallyWrapper.setScreen(roboRallyWrapper.screenManager.getLoadingScreen(roboRallyWrapper));
|
roboRallyWrapper.setScreen(roboRallyWrapper.screenManager.getLoadingScreen(roboRallyWrapper));
|
||||||
break;
|
break;
|
||||||
@ -212,6 +211,12 @@ public class BoardActiveScreen extends AbstractScreen implements InputProcessor
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the robot with the corresponding robot id
|
||||||
|
*
|
||||||
|
* @param robotID The robot id to get robot for
|
||||||
|
* @return The robot with the robot id
|
||||||
|
*/
|
||||||
private Robot getPlayersRobot(RobotID robotID) {
|
private Robot getPlayersRobot(RobotID robotID) {
|
||||||
for (Robot robot : roboRallyWrapper.roboRallyGame.getAllRobots()) {
|
for (Robot robot : roboRallyWrapper.roboRallyGame.getAllRobots()) {
|
||||||
if (robot.getRobotId() == robotID) {
|
if (robot.getRobotId() == robotID) {
|
||||||
|
@ -98,8 +98,6 @@ public class CardChoiceScreen extends InputAdapter implements Screen {
|
|||||||
for (int i = 4; i > (4 - lockedCardsInt); i--) {
|
for (int i = 4; i > (4 - lockedCardsInt); i--) {
|
||||||
newProgram.add(oldProgram.get(i));
|
newProgram.add(oldProgram.get(i));
|
||||||
}
|
}
|
||||||
System.out.println("fuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuasdasdasda234234234: " + newProgram.size());
|
|
||||||
System.out.println(newProgram);
|
|
||||||
|
|
||||||
roboRallyWrapper.roboRallyGame.setProgram(newProgram);
|
roboRallyWrapper.roboRallyGame.setProgram(newProgram);
|
||||||
roboRallyWrapper.roboRallyGame.setGameState(GameState.CHOOSING_POWER_DOWN);
|
roboRallyWrapper.roboRallyGame.setGameState(GameState.CHOOSING_POWER_DOWN);
|
||||||
|
@ -27,7 +27,7 @@ public class IPAddressScreen extends AbstractScreen {
|
|||||||
private final OrthographicCamera camera;
|
private final OrthographicCamera camera;
|
||||||
private final Viewport viewport;
|
private final Viewport viewport;
|
||||||
private final Stage stage;
|
private final Stage stage;
|
||||||
private TextField txtinput;
|
private TextField textInput;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new ip address screen
|
* Instantiates a new ip address screen
|
||||||
@ -50,7 +50,7 @@ public class IPAddressScreen extends AbstractScreen {
|
|||||||
@Override
|
@Override
|
||||||
public void touchUp(InputEvent e, float x, float y, int point, int button) {
|
public void touchUp(InputEvent e, float x, float y, int point, int button) {
|
||||||
try {
|
try {
|
||||||
roboRallyWrapper.client = new RoboRallyClient(txtinput.getText(), roboRallyWrapper);
|
roboRallyWrapper.client = new RoboRallyClient(textInput.getText(), roboRallyWrapper);
|
||||||
roboRallyWrapper.setScreen(roboRallyWrapper.screenManager.getUsernameScreen(roboRallyWrapper));
|
roboRallyWrapper.setScreen(roboRallyWrapper.screenManager.getUsernameScreen(roboRallyWrapper));
|
||||||
} catch (IOException ex) {
|
} catch (IOException ex) {
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
@ -59,10 +59,10 @@ public class IPAddressScreen extends AbstractScreen {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
txtinput = new TextField("", skin);
|
textInput = new TextField("", skin);
|
||||||
txtinput.setPosition(applicationWidth / 2f - txtinput.getWidth() / 2f, 250);
|
textInput.setPosition(applicationWidth / 2f - textInput.getWidth() / 2f, 250);
|
||||||
txtinput.setSize(150, 40);
|
textInput.setSize(150, 40);
|
||||||
stage.addActor(txtinput);
|
stage.addActor(textInput);
|
||||||
stage.addActor(joinButton);
|
stage.addActor(joinButton);
|
||||||
|
|
||||||
camera = new OrthographicCamera();
|
camera = new OrthographicCamera();
|
||||||
|
@ -46,7 +46,6 @@ public class LoadingScreen extends AbstractScreen {
|
|||||||
|
|
||||||
if (roboRallyWrapper.roboRallyGame != null) {
|
if (roboRallyWrapper.roboRallyGame != null) {
|
||||||
GameState gameState = roboRallyWrapper.roboRallyGame.getGameState();
|
GameState gameState = roboRallyWrapper.roboRallyGame.getGameState();
|
||||||
System.out.println(gameState);
|
|
||||||
if (gameState != GameState.LOADING) {
|
if (gameState != GameState.LOADING) {
|
||||||
handleScreenChange(gameState);
|
handleScreenChange(gameState);
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ import com.badlogic.gdx.utils.viewport.FitViewport;
|
|||||||
import com.badlogic.gdx.utils.viewport.Viewport;
|
import com.badlogic.gdx.utils.viewport.Viewport;
|
||||||
import inf112.fiasko.roborally.gamewrapper.RoboRallyWrapper;
|
import inf112.fiasko.roborally.gamewrapper.RoboRallyWrapper;
|
||||||
import inf112.fiasko.roborally.gamewrapper.SimpleButton;
|
import inf112.fiasko.roborally.gamewrapper.SimpleButton;
|
||||||
import inf112.fiasko.roborally.networking.containers.GameStartInfo;
|
import inf112.fiasko.roborally.networking.containers.GameStartInfoResponse;
|
||||||
import inf112.fiasko.roborally.objects.Player;
|
import inf112.fiasko.roborally.objects.Player;
|
||||||
import inf112.fiasko.roborally.utility.IOUtil;
|
import inf112.fiasko.roborally.utility.IOUtil;
|
||||||
import com.esotericsoftware.kryonet.Connection;
|
import com.esotericsoftware.kryonet.Connection;
|
||||||
@ -48,12 +48,12 @@ public class LobbyScreen extends AbstractScreen {
|
|||||||
@Override
|
@Override
|
||||||
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
|
public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) {
|
||||||
roboRallyWrapper.server.startGame();
|
roboRallyWrapper.server.startGame();
|
||||||
Map<Connection, String> playernames = roboRallyWrapper.server.getPlayerNames();
|
Map<Connection, String> playerNames = roboRallyWrapper.server.getPlayerNames();
|
||||||
List<Player> playerlist = IOUtil.playerGenerator(playernames,
|
List<Player> playerList = IOUtil.playerGenerator(playerNames,
|
||||||
roboRallyWrapper.server.getRobotID());
|
roboRallyWrapper.server.getRobotID());
|
||||||
for (Connection connection : playernames.keySet()) {
|
for (Connection connection : playerNames.keySet()) {
|
||||||
roboRallyWrapper.server.sendToClient(connection, new GameStartInfo("Checkmate.txt"
|
roboRallyWrapper.server.sendToClient(connection, new GameStartInfoResponse("Checkmate.txt"
|
||||||
, playerlist, playernames.get(connection)));
|
, playerList, playerNames.get(connection)));
|
||||||
}
|
}
|
||||||
roboRallyWrapper.setScreen(roboRallyWrapper.screenManager.getLoadingScreen(roboRallyWrapper));
|
roboRallyWrapper.setScreen(roboRallyWrapper.screenManager.getLoadingScreen(roboRallyWrapper));
|
||||||
return true;
|
return true;
|
||||||
|
@ -53,30 +53,30 @@ public class PowerDownScreen extends AbstractScreen {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void render(float delta) {
|
public void render(float delta) {
|
||||||
Gdx.gl.glClearColor(0.2f, 1f, 0.2f, 1);
|
Gdx.gl.glClearColor(0.2f, 0.2f, 0.2f, 1);
|
||||||
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
|
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
|
||||||
camera.update();
|
camera.update();
|
||||||
roboRallyWrapper.batch.setProjectionMatrix(camera.combined);
|
roboRallyWrapper.batch.setProjectionMatrix(camera.combined);
|
||||||
String descriptiontext;
|
String descriptionText;
|
||||||
if (roboRallyWrapper.roboRallyGame.getGameState() == GameState.CHOOSING_POWER_DOWN) {
|
if (roboRallyWrapper.roboRallyGame.getGameState() == GameState.CHOOSING_POWER_DOWN) {
|
||||||
descriptiontext = "click the button to enter powerdown next round";
|
descriptionText = "Click the button to enter power down next round";
|
||||||
} else {
|
} else {
|
||||||
descriptiontext = "continue powerdown?";
|
descriptionText = "Click the button to continue your power down the next round";
|
||||||
}
|
}
|
||||||
int elapsedTime = (int) Math.floor((System.currentTimeMillis() - startTime) / 1000f);
|
int elapsedTime = (int) Math.floor((System.currentTimeMillis() - startTime) / 1000f);
|
||||||
|
|
||||||
roboRallyWrapper.batch.begin();
|
roboRallyWrapper.batch.begin();
|
||||||
|
|
||||||
roboRallyWrapper.font.draw(roboRallyWrapper.batch, descriptiontext,
|
roboRallyWrapper.font.draw(roboRallyWrapper.batch, descriptionText,
|
||||||
applicationWidth / 2f - 380 / 2f, applicationHeight / 2f + 100, 380, 1,
|
applicationWidth / 2f - 380 / 2f, applicationHeight / 2f + 100, 380, 1,
|
||||||
true);
|
true);
|
||||||
roboRallyWrapper.font.draw(roboRallyWrapper.batch, String.valueOf(10 - elapsedTime),
|
roboRallyWrapper.font.draw(roboRallyWrapper.batch, String.valueOf(5 - elapsedTime),
|
||||||
applicationWidth / 2f - 40 / 2f, applicationHeight / 2f - 100, 40, 1,
|
applicationWidth / 2f - 40 / 2f, applicationHeight / 2f - 100, 40, 1,
|
||||||
true);
|
true);
|
||||||
roboRallyWrapper.batch.end();
|
roboRallyWrapper.batch.end();
|
||||||
stage.draw();
|
stage.draw();
|
||||||
|
|
||||||
if (elapsedTime > 10) {
|
if (elapsedTime > 5) {
|
||||||
sendPowerDownStatus(Boolean.FALSE);
|
sendPowerDownStatus(Boolean.FALSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,6 +13,8 @@ import com.badlogic.gdx.utils.viewport.FitViewport;
|
|||||||
import com.badlogic.gdx.utils.viewport.Viewport;
|
import com.badlogic.gdx.utils.viewport.Viewport;
|
||||||
import inf112.fiasko.roborally.gamewrapper.RoboRallyWrapper;
|
import inf112.fiasko.roborally.gamewrapper.RoboRallyWrapper;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This screen allows a user to choose their player name
|
* This screen allows a user to choose their player name
|
||||||
*/
|
*/
|
||||||
@ -46,6 +48,7 @@ public class UsernameScreen extends AbstractScreen {
|
|||||||
public void touchUp(InputEvent e, float x, float y, int point, int button) {
|
public void touchUp(InputEvent e, float x, float y, int point, int button) {
|
||||||
String userName = textInput.getText();
|
String userName = textInput.getText();
|
||||||
if (nameInvalid(userName)) {
|
if (nameInvalid(userName)) {
|
||||||
|
JOptionPane.showMessageDialog(null, "Username cannot be empty.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
roboRallyWrapper.client.sendElement(userName);
|
roboRallyWrapper.client.sendElement(userName);
|
||||||
|
@ -11,8 +11,10 @@ import com.badlogic.gdx.utils.viewport.FitViewport;
|
|||||||
import com.badlogic.gdx.utils.viewport.Viewport;
|
import com.badlogic.gdx.utils.viewport.Viewport;
|
||||||
import inf112.fiasko.roborally.gamewrapper.RoboRallyWrapper;
|
import inf112.fiasko.roborally.gamewrapper.RoboRallyWrapper;
|
||||||
import inf112.fiasko.roborally.gamewrapper.SimpleButton;
|
import inf112.fiasko.roborally.gamewrapper.SimpleButton;
|
||||||
import inf112.fiasko.roborally.gamewrapper.screens.AbstractScreen;
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This screen shows which player won the game
|
||||||
|
*/
|
||||||
public class WinnerScreen extends AbstractScreen {
|
public class WinnerScreen extends AbstractScreen {
|
||||||
private final RoboRallyWrapper roboRallyWrapper;
|
private final RoboRallyWrapper roboRallyWrapper;
|
||||||
|
|
||||||
|
@ -5,9 +5,9 @@ import com.esotericsoftware.kryonet.Listener;
|
|||||||
import inf112.fiasko.roborally.elementproperties.GameState;
|
import inf112.fiasko.roborally.elementproperties.GameState;
|
||||||
import inf112.fiasko.roborally.gamewrapper.RoboRallyWrapper;
|
import inf112.fiasko.roborally.gamewrapper.RoboRallyWrapper;
|
||||||
import inf112.fiasko.roborally.networking.containers.ErrorResponse;
|
import inf112.fiasko.roborally.networking.containers.ErrorResponse;
|
||||||
import inf112.fiasko.roborally.networking.containers.GameStartInfo;
|
import inf112.fiasko.roborally.networking.containers.GameStartInfoResponse;
|
||||||
import inf112.fiasko.roborally.networking.containers.PowerDownContainer;
|
import inf112.fiasko.roborally.networking.containers.PowerDownContainerResponse;
|
||||||
import inf112.fiasko.roborally.networking.containers.ProgamsContainer;
|
import inf112.fiasko.roborally.networking.containers.ProgramsContainerResponse;
|
||||||
import inf112.fiasko.roborally.objects.ProgrammingCardDeck;
|
import inf112.fiasko.roborally.objects.ProgrammingCardDeck;
|
||||||
import inf112.fiasko.roborally.objects.RoboRallyGame;
|
import inf112.fiasko.roborally.objects.RoboRallyGame;
|
||||||
|
|
||||||
@ -42,14 +42,14 @@ class RoboRallyClientListener extends Listener {
|
|||||||
wrapper.quit(errorResponse.getErrorMessage());
|
wrapper.quit(errorResponse.getErrorMessage());
|
||||||
}
|
}
|
||||||
System.out.println(errorResponse.getErrorMessage());
|
System.out.println(errorResponse.getErrorMessage());
|
||||||
} else if (object instanceof GameStartInfo) {
|
} else if (object instanceof GameStartInfoResponse) {
|
||||||
GameStartInfo info = (GameStartInfo) object;
|
GameStartInfoResponse info = (GameStartInfoResponse) object;
|
||||||
wrapper.roboRallyGame = new RoboRallyGame(info.getPlayerList(), info.getBoardName(),
|
wrapper.roboRallyGame = new RoboRallyGame(info.getPlayerList(), info.getBoardName(),
|
||||||
wrapper.server != null, info.getPlayerName(), wrapper.server);
|
wrapper.server != null, info.getPlayerName(), wrapper.server);
|
||||||
} else if (object instanceof ProgrammingCardDeck) {
|
} else if (object instanceof ProgrammingCardDeck) {
|
||||||
if (((ProgrammingCardDeck) object).isEmpty()) {
|
if (((ProgrammingCardDeck) object).isEmpty()) {
|
||||||
wrapper.roboRallyGame.setProgram(new ArrayList<>());
|
wrapper.roboRallyGame.setProgram(new ArrayList<>());
|
||||||
if (wrapper.roboRallyGame.getRobotPowerdown()) {
|
if (wrapper.roboRallyGame.getRobotPowerDown()) {
|
||||||
wrapper.roboRallyGame.setGameState(GameState.SKIP_POWER_DOWN_SCREEN);
|
wrapper.roboRallyGame.setGameState(GameState.SKIP_POWER_DOWN_SCREEN);
|
||||||
} else {
|
} else {
|
||||||
wrapper.roboRallyGame.setGameState(GameState.CHOOSING_POWER_DOWN);
|
wrapper.roboRallyGame.setGameState(GameState.CHOOSING_POWER_DOWN);
|
||||||
@ -58,16 +58,16 @@ class RoboRallyClientListener extends Listener {
|
|||||||
wrapper.roboRallyGame.setGameState(GameState.CHOOSING_CARDS);
|
wrapper.roboRallyGame.setGameState(GameState.CHOOSING_CARDS);
|
||||||
}
|
}
|
||||||
new Thread(() -> wrapper.roboRallyGame.setPlayerHand((ProgrammingCardDeck) object)).start();
|
new Thread(() -> wrapper.roboRallyGame.setPlayerHand((ProgrammingCardDeck) object)).start();
|
||||||
} else if (object instanceof ProgamsContainer) {
|
} else if (object instanceof ProgramsContainerResponse) {
|
||||||
new Thread(() -> {
|
new Thread(() -> {
|
||||||
try {
|
try {
|
||||||
wrapper.roboRallyGame.receiveAllPrograms((ProgamsContainer) object);
|
wrapper.roboRallyGame.receiveAllPrograms((ProgramsContainerResponse) object);
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}).start();
|
}).start();
|
||||||
} else if (object instanceof PowerDownContainer) {
|
} else if (object instanceof PowerDownContainerResponse) {
|
||||||
new Thread(() -> wrapper.roboRallyGame.receiveStayInPowerDown((PowerDownContainer) object)).start();
|
new Thread(() -> wrapper.roboRallyGame.receiveStayInPowerDown((PowerDownContainerResponse) object)).start();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,8 +5,8 @@ import com.esotericsoftware.kryonet.Connection;
|
|||||||
import com.esotericsoftware.kryonet.Listener;
|
import com.esotericsoftware.kryonet.Listener;
|
||||||
import inf112.fiasko.roborally.elementproperties.RobotID;
|
import inf112.fiasko.roborally.elementproperties.RobotID;
|
||||||
import inf112.fiasko.roborally.networking.containers.ErrorResponse;
|
import inf112.fiasko.roborally.networking.containers.ErrorResponse;
|
||||||
import inf112.fiasko.roborally.networking.containers.PowerDownContainer;
|
import inf112.fiasko.roborally.networking.containers.PowerDownContainerResponse;
|
||||||
import inf112.fiasko.roborally.networking.containers.ProgamsContainer;
|
import inf112.fiasko.roborally.networking.containers.ProgramsContainerResponse;
|
||||||
import inf112.fiasko.roborally.networking.containers.ProgramAndPowerdownRequest;
|
import inf112.fiasko.roborally.networking.containers.ProgramAndPowerdownRequest;
|
||||||
import inf112.fiasko.roborally.objects.ProgrammingCard;
|
import inf112.fiasko.roborally.objects.ProgrammingCard;
|
||||||
|
|
||||||
@ -136,7 +136,7 @@ class RoboRallyServerListener extends Listener {
|
|||||||
for (Connection connected : stayInPowerDown.keySet()) {
|
for (Connection connected : stayInPowerDown.keySet()) {
|
||||||
powerDowns.put(playerNames.get(connected), stayInPowerDown.get(connected));
|
powerDowns.put(playerNames.get(connected), stayInPowerDown.get(connected));
|
||||||
}
|
}
|
||||||
server.sendToAllClients(new PowerDownContainer(powerDowns));
|
server.sendToAllClients(new PowerDownContainerResponse(powerDowns));
|
||||||
stayInPowerDown = new HashMap<>();
|
stayInPowerDown = new HashMap<>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -156,7 +156,7 @@ class RoboRallyServerListener extends Listener {
|
|||||||
powerDown.put(playerNames.get(connected), programs.get(connected).getPowerdown());
|
powerDown.put(playerNames.get(connected), programs.get(connected).getPowerdown());
|
||||||
program.put(playerNames.get(connected), programs.get(connected).getProgram());
|
program.put(playerNames.get(connected), programs.get(connected).getProgram());
|
||||||
}
|
}
|
||||||
server.sendToAllClients(new ProgamsContainer(program, powerDown));
|
server.sendToAllClients(new ProgramsContainerResponse(program, powerDown));
|
||||||
programs = new HashMap<>();
|
programs = new HashMap<>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,9 @@ public class ErrorResponse {
|
|||||||
this.critical = false;
|
this.critical = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Empty constructor required by KryoNet. DO NOT REMOVE THIS!!!
|
||||||
|
*/
|
||||||
public ErrorResponse() {
|
public ErrorResponse() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -7,25 +7,25 @@ import java.util.List;
|
|||||||
/**
|
/**
|
||||||
* This class contains information about the game board to be used and the game's players
|
* This class contains information about the game board to be used and the game's players
|
||||||
*/
|
*/
|
||||||
public class GameStartInfo {
|
public class GameStartInfoResponse {
|
||||||
private String boardName;
|
private String boardName;
|
||||||
private List<Player> playerList;
|
private List<Player> playerList;
|
||||||
private String playerName;
|
private String playerName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Empty initialization method required by kryo
|
* Empty constructor required by KryoNet. DO NOT REMOVE THIS!!!
|
||||||
*/
|
*/
|
||||||
public GameStartInfo() {
|
public GameStartInfoResponse() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new GameStartInfo object
|
* Instantiates a new GameStartInfoResponse object
|
||||||
*
|
*
|
||||||
* @param boardName The name of the board to be used, with extension
|
* @param boardName The name of the board to be used, with extension
|
||||||
* @param playerList List of players for the game
|
* @param playerList List of players for the game
|
||||||
* @param playerName The player name of the receiver
|
* @param playerName The player name of the receiver
|
||||||
*/
|
*/
|
||||||
public GameStartInfo(String boardName, List<Player> playerList, String playerName) {
|
public GameStartInfoResponse(String boardName, List<Player> playerList, String playerName) {
|
||||||
this.playerName = playerName;
|
this.playerName = playerName;
|
||||||
this.boardName = boardName;
|
this.boardName = boardName;
|
||||||
this.playerList = playerList;
|
this.playerList = playerList;
|
||||||
@ -40,15 +40,6 @@ public class GameStartInfo {
|
|||||||
return playerName;
|
return playerName;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the player name of the current player
|
|
||||||
*
|
|
||||||
* @param playerName The player name of the current player
|
|
||||||
*/
|
|
||||||
public void setPlayerName(String playerName) {
|
|
||||||
this.playerName = playerName;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the list of players
|
* Gets the list of players
|
||||||
*
|
*
|
||||||
@ -58,15 +49,6 @@ public class GameStartInfo {
|
|||||||
return playerList;
|
return playerList;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the list of players for the game
|
|
||||||
*
|
|
||||||
* @param playerList List of players for the game
|
|
||||||
*/
|
|
||||||
public void setPlayerList(List<Player> playerList) {
|
|
||||||
this.playerList = playerList;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the board name
|
* Gets the board name
|
||||||
*
|
*
|
||||||
@ -76,13 +58,4 @@ public class GameStartInfo {
|
|||||||
return boardName;
|
return boardName;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Sets the name of the board to be used
|
|
||||||
*
|
|
||||||
* @param boardName The name of the board to be used, with extension
|
|
||||||
*/
|
|
||||||
public void setBoardName(String boardName) {
|
|
||||||
this.boardName = boardName;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
@ -5,15 +5,13 @@ import java.util.Map;
|
|||||||
/**
|
/**
|
||||||
* This class is used to contain power down status for all players
|
* This class is used to contain power down status for all players
|
||||||
*/
|
*/
|
||||||
public class PowerDownContainer {
|
public class PowerDownContainerResponse {
|
||||||
private Map<String, Boolean> powerDown;
|
private Map<String, Boolean> powerDown;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* IMPORTANT!!!
|
* Empty constructor required by KryoNet. DO NOT REMOVE THIS!!!
|
||||||
* DO NOT USE!
|
|
||||||
* Kryonet demands a no args constructor or else it throws a exception
|
|
||||||
*/
|
*/
|
||||||
public PowerDownContainer() {
|
public PowerDownContainerResponse() {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -21,7 +19,7 @@ public class PowerDownContainer {
|
|||||||
*
|
*
|
||||||
* @param powerDown A map between player names and whether they should remain in power down
|
* @param powerDown A map between player names and whether they should remain in power down
|
||||||
*/
|
*/
|
||||||
public PowerDownContainer(Map<String, Boolean> powerDown) {
|
public PowerDownContainerResponse(Map<String, Boolean> powerDown) {
|
||||||
this.powerDown = powerDown;
|
this.powerDown = powerDown;
|
||||||
}
|
}
|
||||||
|
|
@ -1,27 +0,0 @@
|
|||||||
package inf112.fiasko.roborally.networking.containers;
|
|
||||||
|
|
||||||
import inf112.fiasko.roborally.objects.ProgrammingCard;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class ProgamsContainer {
|
|
||||||
private Map<String, List<ProgrammingCard>> program;
|
|
||||||
private Map<String, Boolean> powerdown;
|
|
||||||
|
|
||||||
public ProgamsContainer() {
|
|
||||||
}
|
|
||||||
|
|
||||||
public ProgamsContainer(Map<String, List<ProgrammingCard>> program, Map<String, Boolean> powerdown) {
|
|
||||||
this.program = program;
|
|
||||||
this.powerdown = powerdown;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<String, List<ProgrammingCard>> getProgram() {
|
|
||||||
return program;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<String, Boolean> getPowerdown() {
|
|
||||||
return powerdown;
|
|
||||||
}
|
|
||||||
}
|
|
@ -8,6 +8,9 @@ public class ProgramAndPowerdownRequest {
|
|||||||
private Boolean powerdown;
|
private Boolean powerdown;
|
||||||
private List<ProgrammingCard> program;
|
private List<ProgrammingCard> program;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Empty constructor required by KryoNet. DO NOT REMOVE THIS!!!
|
||||||
|
*/
|
||||||
public ProgramAndPowerdownRequest() {
|
public ProgramAndPowerdownRequest() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,49 @@
|
|||||||
|
package inf112.fiasko.roborally.networking.containers;
|
||||||
|
|
||||||
|
import inf112.fiasko.roborally.objects.ProgrammingCard;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This class contains information about all players' programs and whether they want to enter power down
|
||||||
|
*/
|
||||||
|
public class ProgramsContainerResponse {
|
||||||
|
private Map<String, List<ProgrammingCard>> programsMap;
|
||||||
|
private Map<String, Boolean> powerDownMap;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Empty constructor required by KryoNet. DO NOT REMOVE THIS!!!
|
||||||
|
*/
|
||||||
|
public ProgramsContainerResponse() {
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new programs container
|
||||||
|
*
|
||||||
|
* @param programsMap A map between a player name and a player's program
|
||||||
|
* @param powerDownMap A map between a player name and power down
|
||||||
|
*/
|
||||||
|
public ProgramsContainerResponse(Map<String, List<ProgrammingCard>> programsMap, Map<String, Boolean> powerDownMap) {
|
||||||
|
this.programsMap = programsMap;
|
||||||
|
this.powerDownMap = powerDownMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the map of programs
|
||||||
|
*
|
||||||
|
* @return A map between a player name and a player's program
|
||||||
|
*/
|
||||||
|
public Map<String, List<ProgrammingCard>> getProgramsMap() {
|
||||||
|
return programsMap;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the map of power down
|
||||||
|
*
|
||||||
|
* @return A map between a player name and power down
|
||||||
|
*/
|
||||||
|
public Map<String, Boolean> getPowerDownMap() {
|
||||||
|
return powerDownMap;
|
||||||
|
}
|
||||||
|
}
|
@ -11,6 +11,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This class represents a board
|
* This class represents a board
|
||||||
@ -179,10 +180,16 @@ public class Board {
|
|||||||
if (robots.containsKey(robotID)) {
|
if (robots.containsKey(robotID)) {
|
||||||
robots.get(robotID).setPowerDown(powerDown);
|
robots.get(robotID).setPowerDown(powerDown);
|
||||||
} else if (getRobotFromDeadRobots(robotID) != null) {
|
} else if (getRobotFromDeadRobots(robotID) != null) {
|
||||||
getRobotFromDeadRobots(robotID).setPowerDown(powerDown);
|
Objects.requireNonNull(getRobotFromDeadRobots(robotID)).setPowerDown(powerDown);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the backup position of a given robot to a given position
|
||||||
|
*
|
||||||
|
* @param robotID The robot to change backup position for
|
||||||
|
* @param pos The robot's new backup position
|
||||||
|
*/
|
||||||
public void setBackupPositionOfRobot(RobotID robotID, Position pos) {
|
public void setBackupPositionOfRobot(RobotID robotID, Position pos) {
|
||||||
robots.get(robotID).setBackupPosition(pos);
|
robots.get(robotID).setBackupPosition(pos);
|
||||||
}
|
}
|
||||||
@ -197,11 +204,17 @@ public class Board {
|
|||||||
if (robots.containsKey(robotID)) {
|
if (robots.containsKey(robotID)) {
|
||||||
return robots.get(robotID).isInPowerDown();
|
return robots.get(robotID).isInPowerDown();
|
||||||
} else if (getRobotFromDeadRobots(robotID) != null) {
|
} else if (getRobotFromDeadRobots(robotID) != null) {
|
||||||
return getRobotFromDeadRobots(robotID).isInPowerDown();
|
return Objects.requireNonNull(getRobotFromDeadRobots(robotID)).isInPowerDown();
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets a robot from the list of dead robots
|
||||||
|
*
|
||||||
|
* @param robotID The id of the robot to get
|
||||||
|
* @return The dead robot
|
||||||
|
*/
|
||||||
private Robot getRobotFromDeadRobots(RobotID robotID) {
|
private Robot getRobotFromDeadRobots(RobotID robotID) {
|
||||||
for (Robot robot : deadRobots) {
|
for (Robot robot : deadRobots) {
|
||||||
if (robot.getRobotId() == robotID) {
|
if (robot.getRobotId() == robotID) {
|
||||||
@ -223,7 +236,7 @@ public class Board {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* sets the damage taken of robots in powerdown to 0
|
* sets the damage taken of robots in power down to 0
|
||||||
*/
|
*/
|
||||||
public void executePowerDown() {
|
public void executePowerDown() {
|
||||||
for (Robot robot : robots.values()) {
|
for (Robot robot : robots.values()) {
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
package inf112.fiasko.roborally.objects;
|
package inf112.fiasko.roborally.objects;
|
||||||
|
|
||||||
import inf112.fiasko.roborally.elementproperties.GameState;
|
import inf112.fiasko.roborally.elementproperties.GameState;
|
||||||
import inf112.fiasko.roborally.networking.containers.PowerDownContainer;
|
import inf112.fiasko.roborally.networking.containers.PowerDownContainerResponse;
|
||||||
import inf112.fiasko.roborally.networking.containers.ProgamsContainer;
|
import inf112.fiasko.roborally.networking.containers.ProgramsContainerResponse;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This interface describes
|
* This interface describes a game which can be interacted with
|
||||||
*/
|
*/
|
||||||
public interface InteractableGame {
|
public interface InteractableGame {
|
||||||
/**
|
/**
|
||||||
@ -44,14 +44,14 @@ public interface InteractableGame {
|
|||||||
* @param programs The programs container received from the server
|
* @param programs The programs container received from the server
|
||||||
* @throws InterruptedException If interrupted during sleep
|
* @throws InterruptedException If interrupted during sleep
|
||||||
*/
|
*/
|
||||||
void receiveAllPrograms(ProgamsContainer programs) throws InterruptedException;
|
void receiveAllPrograms(ProgramsContainerResponse programs) throws InterruptedException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Continues turn when stay in power down is received from all players
|
* Continues turn when stay in power down is received from all players
|
||||||
*
|
*
|
||||||
* @param powerDowns The power down container received from the server
|
* @param powerDowns The power down container received from the server
|
||||||
*/
|
*/
|
||||||
void receiveStayInPowerDown(PowerDownContainer powerDowns);
|
void receiveStayInPowerDown(PowerDownContainerResponse powerDowns);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the hand of this player
|
* Gets the hand of this player
|
||||||
|
@ -25,7 +25,7 @@ public class Phase {
|
|||||||
private List<BoardElementContainer<Tile>> conveyorBelts;
|
private List<BoardElementContainer<Tile>> conveyorBelts;
|
||||||
private List<BoardElementContainer<Tile>> fastConveyorBelts;
|
private List<BoardElementContainer<Tile>> fastConveyorBelts;
|
||||||
private List<BoardElementContainer<Tile>> flags;
|
private List<BoardElementContainer<Tile>> flags;
|
||||||
private InteractableGame game;
|
private final InteractableGame game;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new phase
|
* Instantiates a new phase
|
||||||
|
@ -36,7 +36,7 @@ public class Player {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gives you the RobotID of a player
|
* Gets the RobotID of a player
|
||||||
*
|
*
|
||||||
* @return A RobotID
|
* @return A RobotID
|
||||||
*/
|
*/
|
||||||
@ -45,7 +45,7 @@ public class Player {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gives you the Name of the player
|
* Gets the name of the player
|
||||||
*
|
*
|
||||||
* @return A player Name
|
* @return A player Name
|
||||||
*/
|
*/
|
||||||
@ -54,16 +54,7 @@ public class Player {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the name of the robot
|
* Gets the players program
|
||||||
*
|
|
||||||
* @param name The new name of the robot
|
|
||||||
*/
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gives you the players program
|
|
||||||
*
|
*
|
||||||
* @return A list of programming cards
|
* @return A list of programming cards
|
||||||
*/
|
*/
|
||||||
@ -85,16 +76,16 @@ public class Player {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gives you the player hand/deck
|
* Gets the player hand/deck
|
||||||
*
|
*
|
||||||
* @return a deck
|
* @return A deck
|
||||||
*/
|
*/
|
||||||
public ProgrammingCardDeck getProgrammingCardDeck() {
|
public ProgrammingCardDeck getProgrammingCardDeck() {
|
||||||
return playerDeck;
|
return playerDeck;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the players deck to the given deck
|
* Sets the players deck to the given deck
|
||||||
*
|
*
|
||||||
* @param playerDeck A deck of cards given to the player
|
* @param playerDeck A deck of cards given to the player
|
||||||
*/
|
*/
|
||||||
@ -103,7 +94,7 @@ public class Player {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gives you the player deck with locked cards
|
* Gets the player deck with locked cards
|
||||||
*
|
*
|
||||||
* @return a deck with locked cards
|
* @return a deck with locked cards
|
||||||
*/
|
*/
|
||||||
@ -112,7 +103,7 @@ public class Player {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gives you the players power down status
|
* Gets the players power down status
|
||||||
*
|
*
|
||||||
* @return Whether the player is to power down
|
* @return Whether the player is to power down
|
||||||
*/
|
*/
|
||||||
|
@ -21,8 +21,10 @@ public class ProgrammingCard implements Comparable<ProgrammingCard> {
|
|||||||
this.cardAction = cardAction;
|
this.cardAction = cardAction;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Empty constructor required by KryoNet. DO NOT REMOVE THIS!!!
|
||||||
|
*/
|
||||||
public ProgrammingCard() {
|
public ProgrammingCard() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -16,6 +16,9 @@ public class ProgrammingCardDeck extends AbstractDeck<ProgrammingCard> {
|
|||||||
super(cardList);
|
super(cardList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Empty constructor required by KryoNet. DO NOT REMOVE THIS!!!
|
||||||
|
*/
|
||||||
public ProgrammingCardDeck() {
|
public ProgrammingCardDeck() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,8 +6,8 @@ import inf112.fiasko.roborally.elementproperties.Position;
|
|||||||
import inf112.fiasko.roborally.elementproperties.RobotID;
|
import inf112.fiasko.roborally.elementproperties.RobotID;
|
||||||
import inf112.fiasko.roborally.elementproperties.TileType;
|
import inf112.fiasko.roborally.elementproperties.TileType;
|
||||||
import inf112.fiasko.roborally.networking.RoboRallyServer;
|
import inf112.fiasko.roborally.networking.RoboRallyServer;
|
||||||
import inf112.fiasko.roborally.networking.containers.PowerDownContainer;
|
import inf112.fiasko.roborally.networking.containers.PowerDownContainerResponse;
|
||||||
import inf112.fiasko.roborally.networking.containers.ProgamsContainer;
|
import inf112.fiasko.roborally.networking.containers.ProgramsContainerResponse;
|
||||||
import inf112.fiasko.roborally.utility.BoardLoaderUtil;
|
import inf112.fiasko.roborally.utility.BoardLoaderUtil;
|
||||||
import inf112.fiasko.roborally.utility.DeckLoaderUtil;
|
import inf112.fiasko.roborally.utility.DeckLoaderUtil;
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ public class RoboRallyGame implements DrawableGame, InteractableGame {
|
|||||||
private String winningPlayerName;
|
private String winningPlayerName;
|
||||||
private List<ProgrammingCard> program;
|
private List<ProgrammingCard> program;
|
||||||
private ProgrammingCardDeck playerHand;
|
private ProgrammingCardDeck playerHand;
|
||||||
private Phase phase;
|
private final Phase phase;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Instantiates a new Robo Rally game
|
* Instantiates a new Robo Rally game
|
||||||
@ -53,7 +53,12 @@ public class RoboRallyGame implements DrawableGame, InteractableGame {
|
|||||||
this.phase = new Phase(gameBoard, playerList, 600, this);
|
this.phase = new Phase(gameBoard, playerList, 600, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Boolean getRobotPowerdown() {
|
/**
|
||||||
|
* Gets the power down status of the client playing this instance of the game
|
||||||
|
*
|
||||||
|
* @return Whether this player's robot is in power down
|
||||||
|
*/
|
||||||
|
public Boolean getRobotPowerDown() {
|
||||||
if (getPlayerFromName(this.playerName) != null) {
|
if (getPlayerFromName(this.playerName) != null) {
|
||||||
return gameBoard.getPowerDown(Objects.requireNonNull(getPlayerFromName(this.playerName)).getRobotID());
|
return gameBoard.getPowerDown(Objects.requireNonNull(getPlayerFromName(this.playerName)).getRobotID());
|
||||||
}
|
}
|
||||||
@ -140,10 +145,10 @@ public class RoboRallyGame implements DrawableGame, InteractableGame {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void receiveAllPrograms(ProgamsContainer programs) throws InterruptedException {
|
public void receiveAllPrograms(ProgramsContainerResponse programs) throws InterruptedException {
|
||||||
//Reads data from server and updates player objects
|
//Reads data from server and updates player objects
|
||||||
Map<String, List<ProgrammingCard>> programMap = programs.getProgram();
|
Map<String, List<ProgrammingCard>> programMap = programs.getProgramsMap();
|
||||||
Map<String, Boolean> powerDown = programs.getPowerdown();
|
Map<String, Boolean> powerDown = programs.getPowerDownMap();
|
||||||
String playerName;
|
String playerName;
|
||||||
for (Player player : playerList) {
|
for (Player player : playerList) {
|
||||||
playerName = player.getName();
|
playerName = player.getName();
|
||||||
@ -175,7 +180,7 @@ public class RoboRallyGame implements DrawableGame, InteractableGame {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void receiveStayInPowerDown(PowerDownContainer powerDowns) {
|
public void receiveStayInPowerDown(PowerDownContainerResponse powerDowns) {
|
||||||
for (Player player : playerList) {
|
for (Player player : playerList) {
|
||||||
if (gameBoard.getPowerDown(player.getRobotID())) {
|
if (gameBoard.getPowerDown(player.getRobotID())) {
|
||||||
player.setPowerDownNextRound(powerDowns.getPowerDown().get(player.getName()));
|
player.setPowerDownNextRound(powerDowns.getPowerDown().get(player.getName()));
|
||||||
@ -198,26 +203,6 @@ public class RoboRallyGame implements DrawableGame, InteractableGame {
|
|||||||
this.winningPlayerName = winningPlayerName;
|
this.winningPlayerName = winningPlayerName;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Initializes the game with a debugging board
|
|
||||||
*/
|
|
||||||
private void initializeDebugMode() {
|
|
||||||
List<Robot> robots = new ArrayList<>();
|
|
||||||
robots.add(new Robot(RobotID.ROBOT_1, new Position(0, 18)));
|
|
||||||
robots.add(new Robot(RobotID.ROBOT_2, new Position(1, 18)));
|
|
||||||
robots.add(new Robot(RobotID.ROBOT_3, new Position(2, 18)));
|
|
||||||
robots.add(new Robot(RobotID.ROBOT_4, new Position(3, 18)));
|
|
||||||
robots.add(new Robot(RobotID.ROBOT_5, new Position(4, 18)));
|
|
||||||
robots.add(new Robot(RobotID.ROBOT_6, new Position(5, 18)));
|
|
||||||
robots.add(new Robot(RobotID.ROBOT_7, new Position(6, 18)));
|
|
||||||
robots.add(new Robot(RobotID.ROBOT_8, new Position(7, 18)));
|
|
||||||
try {
|
|
||||||
gameBoard = BoardLoaderUtil.loadBoard("boards/all_tiles_test_board.txt", robots);
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Initializes the game with a playable board
|
* Initializes the game with a playable board
|
||||||
*/
|
*/
|
||||||
@ -255,7 +240,7 @@ public class RoboRallyGame implements DrawableGame, InteractableGame {
|
|||||||
RobotID robotID = player.getRobotID();
|
RobotID robotID = player.getRobotID();
|
||||||
TileType robotSpawn = TileType.getTileTypeFromID(robotID.getRobotIDID() + 22);
|
TileType robotSpawn = TileType.getTileTypeFromID(robotID.getRobotIDID() + 22);
|
||||||
List<BoardElementContainer<Tile>> spawnTileContainerList = gameBoard.getPositionsOfTileOnBoard(robotSpawn);
|
List<BoardElementContainer<Tile>> spawnTileContainerList = gameBoard.getPositionsOfTileOnBoard(robotSpawn);
|
||||||
if (spawnTileContainerList.size() != 1) {
|
if (spawnTileContainerList.size() < 1) {
|
||||||
throw new IllegalArgumentException("The chosen board seems to be missing a robot spawn");
|
throw new IllegalArgumentException("The chosen board seems to be missing a robot spawn");
|
||||||
}
|
}
|
||||||
BoardElementContainer<Tile> spawnTileContainer = spawnTileContainerList.get(0);
|
BoardElementContainer<Tile> spawnTileContainer = spawnTileContainerList.get(0);
|
||||||
|
@ -132,9 +132,9 @@ public class Robot {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* setBackupPosition
|
* Sets the backup position of the robot
|
||||||
*
|
*
|
||||||
* @param backupPosition
|
* @param backupPosition The new backup position of the robot
|
||||||
*/
|
*/
|
||||||
public void setBackupPosition(Position backupPosition) {
|
public void setBackupPosition(Position backupPosition) {
|
||||||
this.backupPosition = backupPosition;
|
this.backupPosition = backupPosition;
|
||||||
|
@ -4,9 +4,9 @@ import com.esotericsoftware.kryo.Kryo;
|
|||||||
import inf112.fiasko.roborally.elementproperties.Action;
|
import inf112.fiasko.roborally.elementproperties.Action;
|
||||||
import inf112.fiasko.roborally.elementproperties.RobotID;
|
import inf112.fiasko.roborally.elementproperties.RobotID;
|
||||||
import inf112.fiasko.roborally.networking.containers.ErrorResponse;
|
import inf112.fiasko.roborally.networking.containers.ErrorResponse;
|
||||||
import inf112.fiasko.roborally.networking.containers.GameStartInfo;
|
import inf112.fiasko.roborally.networking.containers.GameStartInfoResponse;
|
||||||
import inf112.fiasko.roborally.networking.containers.PowerDownContainer;
|
import inf112.fiasko.roborally.networking.containers.PowerDownContainerResponse;
|
||||||
import inf112.fiasko.roborally.networking.containers.ProgamsContainer;
|
import inf112.fiasko.roborally.networking.containers.ProgramsContainerResponse;
|
||||||
import inf112.fiasko.roborally.networking.containers.ProgramAndPowerdownRequest;
|
import inf112.fiasko.roborally.networking.containers.ProgramAndPowerdownRequest;
|
||||||
import inf112.fiasko.roborally.objects.Deck;
|
import inf112.fiasko.roborally.objects.Deck;
|
||||||
import inf112.fiasko.roborally.objects.Player;
|
import inf112.fiasko.roborally.objects.Player;
|
||||||
@ -30,17 +30,15 @@ public final class NetworkUtil {
|
|||||||
kryo.register(ErrorResponse.class);
|
kryo.register(ErrorResponse.class);
|
||||||
kryo.register(Deck.class);
|
kryo.register(Deck.class);
|
||||||
kryo.register(ProgrammingCard.class);
|
kryo.register(ProgrammingCard.class);
|
||||||
kryo.register(GameStartInfo.class);
|
kryo.register(GameStartInfoResponse.class);
|
||||||
kryo.register(ArrayList.class);
|
kryo.register(ArrayList.class);
|
||||||
kryo.register(Player.class);
|
kryo.register(Player.class);
|
||||||
kryo.register(RobotID.class);
|
kryo.register(RobotID.class);
|
||||||
kryo.register(ProgrammingCardDeck.class);
|
kryo.register(ProgrammingCardDeck.class);
|
||||||
kryo.register(Action.class);
|
kryo.register(Action.class);
|
||||||
kryo.register(ProgramAndPowerdownRequest.class);
|
kryo.register(ProgramAndPowerdownRequest.class);
|
||||||
kryo.register(ProgamsContainer.class);
|
kryo.register(ProgramsContainerResponse.class);
|
||||||
kryo.register(PowerDownContainer.class);
|
kryo.register(PowerDownContainerResponse.class);
|
||||||
kryo.register(HashMap.class);
|
kryo.register(HashMap.class);
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -366,6 +366,18 @@ public final class TextureConverterUtil {
|
|||||||
private final int xWest;
|
private final int xWest;
|
||||||
private final int yWest;
|
private final int yWest;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Instantiates a new texture converter container
|
||||||
|
*
|
||||||
|
* @param xNorth The x position of the texture for a north-facing instance of the object
|
||||||
|
* @param yNorth The y position of the texture for a north-facing instance of the object
|
||||||
|
* @param xEast The x position of the texture for a east-facing instance of the object
|
||||||
|
* @param yEast The y position of the texture for a east-facing instance of the object
|
||||||
|
* @param xSouth The x position of the texture for a south-facing instance of the object
|
||||||
|
* @param ySouth The y position of the texture for a south-facing instance of the object
|
||||||
|
* @param xWest The x position of the texture for a west-facing instance of the object
|
||||||
|
* @param yWest The y position of the texture for a west-facing instance of the object
|
||||||
|
*/
|
||||||
TextureConverterContainer(int xNorth, int yNorth, int xEast, int yEast, int xSouth, int ySouth,
|
TextureConverterContainer(int xNorth, int yNorth, int xEast, int yEast, int xSouth, int ySouth,
|
||||||
int xWest, int yWest) {
|
int xWest, int yWest) {
|
||||||
this.xNorth = xNorth;
|
this.xNorth = xNorth;
|
||||||
@ -378,34 +390,74 @@ public final class TextureConverterUtil {
|
|||||||
this.yWest = yWest;
|
this.yWest = yWest;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the x position of the texture for a north-facing instance of the object
|
||||||
|
*
|
||||||
|
* @return The x position of the texture for a north-facing instance of the object
|
||||||
|
*/
|
||||||
public int getXNorth() {
|
public int getXNorth() {
|
||||||
return xNorth;
|
return xNorth;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the y position of the texture for a north-facing instance of the object
|
||||||
|
*
|
||||||
|
* @return The y position of the texture for a north-facing instance of the object
|
||||||
|
*/
|
||||||
public int getYNorth() {
|
public int getYNorth() {
|
||||||
return yNorth;
|
return yNorth;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the x position of the texture for a east-facing instance of the object
|
||||||
|
*
|
||||||
|
* @return The x position of the texture for a east-facing instance of the object
|
||||||
|
*/
|
||||||
public int getXEast() {
|
public int getXEast() {
|
||||||
return xEast;
|
return xEast;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the y position of the texture for a east-facing instance of the object
|
||||||
|
*
|
||||||
|
* @return The y position of the texture for a east-facing instance of the object
|
||||||
|
*/
|
||||||
public int getYEast() {
|
public int getYEast() {
|
||||||
return yEast;
|
return yEast;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the x position of the texture for a south-facing instance of the object
|
||||||
|
*
|
||||||
|
* @return The x position of the texture for a south-facing instance of the object
|
||||||
|
*/
|
||||||
public int getXSouth() {
|
public int getXSouth() {
|
||||||
return xSouth;
|
return xSouth;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the y position of the texture for a south-facing instance of the object
|
||||||
|
*
|
||||||
|
* @return The y position of the texture for a south-facing instance of the object
|
||||||
|
*/
|
||||||
public int getYSouth() {
|
public int getYSouth() {
|
||||||
return ySouth;
|
return ySouth;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the x position of the texture for a west-facing instance of the object
|
||||||
|
*
|
||||||
|
* @return The x position of the texture for a west-facing instance of the object
|
||||||
|
*/
|
||||||
public int getXWest() {
|
public int getXWest() {
|
||||||
return xWest;
|
return xWest;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the y position of the texture for a west-facing instance of the object
|
||||||
|
*
|
||||||
|
* @return The y position of the texture for a west-facing instance of the object
|
||||||
|
*/
|
||||||
public int getYWest() {
|
public int getYWest() {
|
||||||
return yWest;
|
return yWest;
|
||||||
}
|
}
|
||||||
|
@ -1,11 +1,14 @@
|
|||||||
package inf112.fiasko.roborally.objects;
|
package inf112.fiasko.roborally.objects;
|
||||||
|
|
||||||
import inf112.fiasko.roborally.elementproperties.GameState;
|
import inf112.fiasko.roborally.elementproperties.GameState;
|
||||||
import inf112.fiasko.roborally.networking.containers.PowerDownContainer;
|
import inf112.fiasko.roborally.networking.containers.PowerDownContainerResponse;
|
||||||
import inf112.fiasko.roborally.networking.containers.ProgamsContainer;
|
import inf112.fiasko.roborally.networking.containers.ProgramsContainerResponse;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A class implementing just enough features of an interactable game to be able to test a phase
|
||||||
|
*/
|
||||||
public class FakeGame implements InteractableGame {
|
public class FakeGame implements InteractableGame {
|
||||||
private String winningPlayerName;
|
private String winningPlayerName;
|
||||||
|
|
||||||
@ -30,12 +33,12 @@ public class FakeGame implements InteractableGame {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void receiveAllPrograms(ProgamsContainer programs) throws InterruptedException {
|
public void receiveAllPrograms(ProgramsContainerResponse programs) {
|
||||||
//Not needed for testing
|
//Not needed for testing
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void receiveStayInPowerDown(PowerDownContainer powerDowns) {
|
public void receiveStayInPowerDown(PowerDownContainerResponse powerDowns) {
|
||||||
//Not needed for testing
|
//Not needed for testing
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,10 +12,13 @@ import java.io.IOException;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static junit.framework.TestCase.*;
|
import static junit.framework.TestCase.assertEquals;
|
||||||
|
import static junit.framework.TestCase.assertTrue;
|
||||||
|
import static org.junit.Assert.assertFalse;
|
||||||
|
import static org.junit.Assert.assertNull;
|
||||||
|
|
||||||
public class PhaseTest {
|
public class PhaseTest {
|
||||||
List<Robot> robots = new ArrayList<>();
|
private List<Robot> robots = new ArrayList<>();
|
||||||
private Phase phase;
|
private Phase phase;
|
||||||
private Board board;
|
private Board board;
|
||||||
private Position robot1Position = new Position(2, 2);
|
private Position robot1Position = new Position(2, 2);
|
||||||
@ -267,36 +270,14 @@ public class PhaseTest {
|
|||||||
List<ProgrammingCard> testProgram1 = new ArrayList<>();
|
List<ProgrammingCard> testProgram1 = new ArrayList<>();
|
||||||
List<ProgrammingCard> testProgram2 = new ArrayList<>();
|
List<ProgrammingCard> testProgram2 = new ArrayList<>();
|
||||||
List<ProgrammingCard> testProgram3 = new ArrayList<>();
|
List<ProgrammingCard> testProgram3 = new ArrayList<>();
|
||||||
ProgrammingCard card1 = new ProgrammingCard(1, Action.MOVE_1);
|
testProgram1.add(new ProgrammingCard(1, Action.MOVE_1));
|
||||||
ProgrammingCard card2 = new ProgrammingCard(2, Action.ROTATE_RIGHT);
|
testProgram2.add(new ProgrammingCard(10, Action.MOVE_1));
|
||||||
ProgrammingCard card3 = new ProgrammingCard(3, Action.MOVE_1);
|
testProgram3.add(new ProgrammingCard(100, Action.ROTATE_LEFT));
|
||||||
ProgrammingCard card4 = new ProgrammingCard(4, Action.MOVE_1);
|
for (int i = 0; i < 4; i++) {
|
||||||
ProgrammingCard card5 = new ProgrammingCard(5, Action.MOVE_1);
|
testProgram1.add(null);
|
||||||
ProgrammingCard card6 = new ProgrammingCard(10, Action.MOVE_1);
|
testProgram2.add(null);
|
||||||
ProgrammingCard card7 = new ProgrammingCard(11, Action.ROTATE_RIGHT);
|
testProgram3.add(null);
|
||||||
ProgrammingCard card8 = new ProgrammingCard(12, Action.MOVE_1);
|
}
|
||||||
ProgrammingCard card9 = new ProgrammingCard(13, Action.MOVE_1);
|
|
||||||
ProgrammingCard card10 = new ProgrammingCard(14, Action.MOVE_1);
|
|
||||||
ProgrammingCard card11 = new ProgrammingCard(100, Action.ROTATE_LEFT);
|
|
||||||
ProgrammingCard card12 = new ProgrammingCard(200, Action.ROTATE_LEFT);
|
|
||||||
ProgrammingCard card13 = new ProgrammingCard(300, Action.ROTATE_LEFT);
|
|
||||||
ProgrammingCard card14 = new ProgrammingCard(400, Action.ROTATE_LEFT);
|
|
||||||
ProgrammingCard card15 = new ProgrammingCard(500, Action.ROTATE_LEFT);
|
|
||||||
testProgram1.add(card1);
|
|
||||||
testProgram1.add(card2);
|
|
||||||
testProgram1.add(card3);
|
|
||||||
testProgram1.add(card4);
|
|
||||||
testProgram1.add(card5);
|
|
||||||
testProgram2.add(card6);
|
|
||||||
testProgram2.add(card7);
|
|
||||||
testProgram2.add(card8);
|
|
||||||
testProgram2.add(card9);
|
|
||||||
testProgram2.add(card10);
|
|
||||||
testProgram3.add(card11);
|
|
||||||
testProgram3.add(card12);
|
|
||||||
testProgram3.add(card13);
|
|
||||||
testProgram3.add(card14);
|
|
||||||
testProgram3.add(card15);
|
|
||||||
player1.setProgram(testProgram3);
|
player1.setProgram(testProgram3);
|
||||||
player2.setProgram(testProgram3);
|
player2.setProgram(testProgram3);
|
||||||
player3.setProgram(testProgram3);
|
player3.setProgram(testProgram3);
|
||||||
@ -310,8 +291,20 @@ public class PhaseTest {
|
|||||||
assertEquals(robot6.getRobotId(), board.getRobotOnPosition(new Position(2, 14)));
|
assertEquals(robot6.getRobotId(), board.getRobotOnPosition(new Position(2, 14)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Loads the test board to the variable and creates a new phase
|
||||||
|
*
|
||||||
|
* @param players A list of players participating in the game
|
||||||
|
* @param robots A list of robots on the board
|
||||||
|
* @return A phase object
|
||||||
|
*/
|
||||||
|
private Phase createPhaseAndLoadBoard(List<Player> players, List<Robot> robots) throws IOException {
|
||||||
|
board = BoardLoaderUtil.loadBoard("boards/test_board.txt", robots);
|
||||||
|
return new Phase(board, players, 0, null);
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void robotsOnConveyorBeltsFacingTheSameEmptyTileDoesNotMove() {
|
public void robotsOnConveyorBeltsFacingTheSameEmptyTileDoesNotMove() throws InterruptedException, IOException {
|
||||||
List<Robot> robots = new ArrayList<>();
|
List<Robot> robots = new ArrayList<>();
|
||||||
List<Player> players = new ArrayList<>();
|
List<Player> players = new ArrayList<>();
|
||||||
robots.add(new Robot(RobotID.ROBOT_1, new Position(8, 11)));
|
robots.add(new Robot(RobotID.ROBOT_1, new Position(8, 11)));
|
||||||
@ -319,19 +312,15 @@ public class PhaseTest {
|
|||||||
players.add(new Player(RobotID.ROBOT_1, "Player 1"));
|
players.add(new Player(RobotID.ROBOT_1, "Player 1"));
|
||||||
players.add(new Player(RobotID.ROBOT_2, "Player 2"));
|
players.add(new Player(RobotID.ROBOT_2, "Player 2"));
|
||||||
|
|
||||||
try {
|
Phase testPhase = createPhaseAndLoadBoard(players, robots);
|
||||||
board = BoardLoaderUtil.loadBoard("boards/test_board.txt", robots);
|
testPhase.moveAllConveyorBelts();
|
||||||
Phase testPhase = new Phase(board, players, 0, null);
|
|
||||||
testPhase.moveAllConveyorBelts();
|
|
||||||
} catch (IOException | InterruptedException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(8, 11)));
|
assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(8, 11)));
|
||||||
assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(7, 10)));
|
assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(7, 10)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void robotsOnConveyorBeltsFacingTheSameHoleTileDoesNotMove() {
|
public void robotsOnConveyorBeltsFacingTheSameHoleTileDoesNotMove() throws IOException, InterruptedException {
|
||||||
List<Robot> robots = new ArrayList<>();
|
List<Robot> robots = new ArrayList<>();
|
||||||
List<Player> players = new ArrayList<>();
|
List<Player> players = new ArrayList<>();
|
||||||
robots.add(new Robot(RobotID.ROBOT_1, new Position(6, 7)));
|
robots.add(new Robot(RobotID.ROBOT_1, new Position(6, 7)));
|
||||||
@ -339,36 +328,28 @@ public class PhaseTest {
|
|||||||
players.add(new Player(RobotID.ROBOT_1, "Player 1"));
|
players.add(new Player(RobotID.ROBOT_1, "Player 1"));
|
||||||
players.add(new Player(RobotID.ROBOT_2, "Player 2"));
|
players.add(new Player(RobotID.ROBOT_2, "Player 2"));
|
||||||
|
|
||||||
try {
|
Phase testPhase = createPhaseAndLoadBoard(players, robots);
|
||||||
board = BoardLoaderUtil.loadBoard("boards/test_board.txt", robots);
|
testPhase.moveAllConveyorBelts();
|
||||||
Phase testPhase = new Phase(board, players, 0, null);
|
|
||||||
testPhase.moveAllConveyorBelts();
|
|
||||||
} catch (IOException | InterruptedException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(6, 7)));
|
assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(6, 7)));
|
||||||
assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(7, 8)));
|
assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(7, 8)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void robotOnConveyorBeltsFacingWallDoesNotMove() {
|
public void robotOnConveyorBeltsFacingWallDoesNotMove() throws IOException, InterruptedException {
|
||||||
List<Robot> robots = new ArrayList<>();
|
List<Robot> robots = new ArrayList<>();
|
||||||
List<Player> players = new ArrayList<>();
|
List<Player> players = new ArrayList<>();
|
||||||
robots.add(new Robot(RobotID.ROBOT_1, new Position(1, 1)));
|
robots.add(new Robot(RobotID.ROBOT_1, new Position(1, 1)));
|
||||||
players.add(new Player(RobotID.ROBOT_1, "Player 1"));
|
players.add(new Player(RobotID.ROBOT_1, "Player 1"));
|
||||||
|
|
||||||
try {
|
Phase testPhase = createPhaseAndLoadBoard(players, robots);
|
||||||
board = BoardLoaderUtil.loadBoard("boards/test_board.txt", robots);
|
testPhase.moveAllConveyorBelts();
|
||||||
Phase testPhase = new Phase(board, players, 0, null);
|
|
||||||
testPhase.moveAllConveyorBelts();
|
|
||||||
} catch (IOException | InterruptedException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(1, 1)));
|
assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(1, 1)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void robotBehindAnotherRobotOnConveyorBeltsFacingWallDoesNotMove() {
|
public void robotBehindAnotherRobotOnConveyorBeltsFacingWallDoesNotMove() throws IOException, InterruptedException {
|
||||||
List<Robot> robots = new ArrayList<>();
|
List<Robot> robots = new ArrayList<>();
|
||||||
List<Player> players = new ArrayList<>();
|
List<Player> players = new ArrayList<>();
|
||||||
robots.add(new Robot(RobotID.ROBOT_1, new Position(1, 1)));
|
robots.add(new Robot(RobotID.ROBOT_1, new Position(1, 1)));
|
||||||
@ -376,19 +357,15 @@ public class PhaseTest {
|
|||||||
players.add(new Player(RobotID.ROBOT_1, "Player 1"));
|
players.add(new Player(RobotID.ROBOT_1, "Player 1"));
|
||||||
players.add(new Player(RobotID.ROBOT_2, "Player 2"));
|
players.add(new Player(RobotID.ROBOT_2, "Player 2"));
|
||||||
|
|
||||||
try {
|
Phase testPhase = createPhaseAndLoadBoard(players, robots);
|
||||||
board = BoardLoaderUtil.loadBoard("boards/test_board.txt", robots);
|
testPhase.moveAllConveyorBelts();
|
||||||
Phase testPhase = new Phase(board, players, 0, null);
|
|
||||||
testPhase.moveAllConveyorBelts();
|
|
||||||
} catch (IOException | InterruptedException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(1, 1)));
|
assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(1, 1)));
|
||||||
assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(1, 2)));
|
assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(1, 2)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void robotBehindOtherRobotsOnSlowConveyorBeltsFacingEmptyTilesMoves() {
|
public void robotBehindOtherRobotsOnSlowConveyorBeltsFacingEmptyTilesMoves() throws IOException, InterruptedException {
|
||||||
List<Robot> robots = new ArrayList<>();
|
List<Robot> robots = new ArrayList<>();
|
||||||
List<Player> players = new ArrayList<>();
|
List<Player> players = new ArrayList<>();
|
||||||
robots.add(new Robot(RobotID.ROBOT_1, new Position(5, 7)));
|
robots.add(new Robot(RobotID.ROBOT_1, new Position(5, 7)));
|
||||||
@ -400,13 +377,9 @@ public class PhaseTest {
|
|||||||
players.add(new Player(RobotID.ROBOT_3, "Player 3"));
|
players.add(new Player(RobotID.ROBOT_3, "Player 3"));
|
||||||
players.add(new Player(RobotID.ROBOT_4, "Player 4"));
|
players.add(new Player(RobotID.ROBOT_4, "Player 4"));
|
||||||
|
|
||||||
try {
|
Phase testPhase = createPhaseAndLoadBoard(players, robots);
|
||||||
board = BoardLoaderUtil.loadBoard("boards/test_board.txt", robots);
|
testPhase.moveAllConveyorBelts();
|
||||||
Phase testPhase = new Phase(board, players, 0, null);
|
|
||||||
testPhase.moveAllConveyorBelts();
|
|
||||||
} catch (IOException | InterruptedException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(5, 6)));
|
assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(5, 6)));
|
||||||
assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(5, 7)));
|
assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(5, 7)));
|
||||||
assertEquals(RobotID.ROBOT_3, board.getRobotOnPosition(new Position(5, 8)));
|
assertEquals(RobotID.ROBOT_3, board.getRobotOnPosition(new Position(5, 8)));
|
||||||
@ -414,7 +387,7 @@ public class PhaseTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void robotBehindOtherRobotsOnFastConveyorBeltsFacingEmptyTilesMoves() {
|
public void robotBehindOtherRobotsOnFastConveyorBeltsFacingEmptyTilesMoves() throws IOException, InterruptedException {
|
||||||
List<Robot> robots = new ArrayList<>();
|
List<Robot> robots = new ArrayList<>();
|
||||||
List<Player> players = new ArrayList<>();
|
List<Player> players = new ArrayList<>();
|
||||||
robots.add(new Robot(RobotID.ROBOT_1, new Position(4, 7)));
|
robots.add(new Robot(RobotID.ROBOT_1, new Position(4, 7)));
|
||||||
@ -426,13 +399,9 @@ public class PhaseTest {
|
|||||||
players.add(new Player(RobotID.ROBOT_3, "Player 3"));
|
players.add(new Player(RobotID.ROBOT_3, "Player 3"));
|
||||||
players.add(new Player(RobotID.ROBOT_4, "Player 4"));
|
players.add(new Player(RobotID.ROBOT_4, "Player 4"));
|
||||||
|
|
||||||
try {
|
Phase testPhase = createPhaseAndLoadBoard(players, robots);
|
||||||
board = BoardLoaderUtil.loadBoard("boards/test_board.txt", robots);
|
testPhase.moveAllConveyorBelts();
|
||||||
Phase testPhase = new Phase(board, players, 0, null);
|
|
||||||
testPhase.moveAllConveyorBelts();
|
|
||||||
} catch (IOException | InterruptedException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(4, 5)));
|
assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(4, 5)));
|
||||||
assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(4, 6)));
|
assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(4, 6)));
|
||||||
assertEquals(RobotID.ROBOT_3, board.getRobotOnPosition(new Position(4, 7)));
|
assertEquals(RobotID.ROBOT_3, board.getRobotOnPosition(new Position(4, 7)));
|
||||||
@ -440,7 +409,7 @@ public class PhaseTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void robotBehindOtherRobotsOnConveyorBeltsShapedAsARoundaboutMoves() {
|
public void robotBehindOtherRobotsOnConveyorBeltsShapedAsARoundaboutMoves() throws IOException, InterruptedException {
|
||||||
long startTime = System.currentTimeMillis();
|
long startTime = System.currentTimeMillis();
|
||||||
List<Robot> robots = new ArrayList<>();
|
List<Robot> robots = new ArrayList<>();
|
||||||
List<Player> players = new ArrayList<>();
|
List<Player> players = new ArrayList<>();
|
||||||
@ -453,13 +422,9 @@ public class PhaseTest {
|
|||||||
players.add(new Player(RobotID.ROBOT_3, "Player 3"));
|
players.add(new Player(RobotID.ROBOT_3, "Player 3"));
|
||||||
players.add(new Player(RobotID.ROBOT_4, "Player 4"));
|
players.add(new Player(RobotID.ROBOT_4, "Player 4"));
|
||||||
|
|
||||||
try {
|
Phase testPhase = createPhaseAndLoadBoard(players, robots);
|
||||||
board = BoardLoaderUtil.loadBoard("boards/test_board.txt", robots);
|
testPhase.moveAllConveyorBelts();
|
||||||
Phase testPhase = new Phase(board, players, 0, null);
|
|
||||||
testPhase.moveAllConveyorBelts();
|
|
||||||
} catch (IOException | InterruptedException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(1, 9)));
|
assertEquals(RobotID.ROBOT_1, board.getRobotOnPosition(new Position(1, 9)));
|
||||||
assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(1, 8)));
|
assertEquals(RobotID.ROBOT_2, board.getRobotOnPosition(new Position(1, 8)));
|
||||||
assertEquals(RobotID.ROBOT_3, board.getRobotOnPosition(new Position(2, 8)));
|
assertEquals(RobotID.ROBOT_3, board.getRobotOnPosition(new Position(2, 8)));
|
||||||
@ -469,38 +434,30 @@ public class PhaseTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void robotOnConveyorBeltFacingHoleMovesAndDies() {
|
public void robotOnConveyorBeltFacingHoleMovesAndDies() throws IOException, InterruptedException {
|
||||||
List<Robot> robots = new ArrayList<>();
|
List<Robot> robots = new ArrayList<>();
|
||||||
List<Player> players = new ArrayList<>();
|
List<Player> players = new ArrayList<>();
|
||||||
robots.add(new Robot(RobotID.ROBOT_1, new Position(6, 7)));
|
robots.add(new Robot(RobotID.ROBOT_1, new Position(6, 7)));
|
||||||
players.add(new Player(RobotID.ROBOT_1, "Player 1"));
|
players.add(new Player(RobotID.ROBOT_1, "Player 1"));
|
||||||
|
|
||||||
try {
|
Phase testPhase = createPhaseAndLoadBoard(players, robots);
|
||||||
board = BoardLoaderUtil.loadBoard("boards/test_board.txt", robots);
|
testPhase.moveAllConveyorBelts();
|
||||||
Phase testPhase = new Phase(board, players, 0, null);
|
|
||||||
testPhase.moveAllConveyorBelts();
|
|
||||||
} catch (IOException | InterruptedException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
assertFalse(board.isRobotAlive(RobotID.ROBOT_1));
|
assertFalse(board.isRobotAlive(RobotID.ROBOT_1));
|
||||||
assertNull(board.getRobotOnPosition(new Position(6, 7)));
|
assertNull(board.getRobotOnPosition(new Position(6, 7)));
|
||||||
assertNull(board.getRobotOnPosition(new Position(7, 7)));
|
assertNull(board.getRobotOnPosition(new Position(7, 7)));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void robotOnConveyorBeltFacingOutOfMapMovesAndDies() {
|
public void robotOnConveyorBeltFacingOutOfMapMovesAndDies() throws IOException, InterruptedException {
|
||||||
List<Robot> robots = new ArrayList<>();
|
List<Robot> robots = new ArrayList<>();
|
||||||
List<Player> players = new ArrayList<>();
|
List<Player> players = new ArrayList<>();
|
||||||
robots.add(new Robot(RobotID.ROBOT_1, new Position(7, 0)));
|
robots.add(new Robot(RobotID.ROBOT_1, new Position(7, 0)));
|
||||||
players.add(new Player(RobotID.ROBOT_1, "Player 1"));
|
players.add(new Player(RobotID.ROBOT_1, "Player 1"));
|
||||||
|
|
||||||
try {
|
Phase testPhase = createPhaseAndLoadBoard(players, robots);
|
||||||
board = BoardLoaderUtil.loadBoard("boards/test_board.txt", robots);
|
testPhase.moveAllConveyorBelts();
|
||||||
Phase testPhase = new Phase(board, players, 0, null);
|
|
||||||
testPhase.moveAllConveyorBelts();
|
|
||||||
} catch (IOException | InterruptedException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
assertFalse(board.isRobotAlive(RobotID.ROBOT_1));
|
assertFalse(board.isRobotAlive(RobotID.ROBOT_1));
|
||||||
assertNull(board.getRobotOnPosition(new Position(7, 0)));
|
assertNull(board.getRobotOnPosition(new Position(7, 0)));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user