Commit 25c8bc5d authored by patrick.gustard-sm's avatar patrick.gustard-sm

Updated, stopped the crashes on the loop that counts up enemyship num

parent 0fab2dc8
...@@ -294,4 +294,8 @@ System.exit(0); ...@@ -294,4 +294,8 @@ System.exit(0);
//Cell.setfill put in if statement, to tell if player or enemy, if enemy do nothing, create variable in board, but set player or enemy in main //Cell.setfill put in if statement, to tell if player or enemy, if enemy do nothing, create variable in board, but set player or enemy in main
\ No newline at end of file
...@@ -24,65 +24,65 @@ import javafx.stage.Stage; ...@@ -24,65 +24,65 @@ import javafx.stage.Stage;
public class Main extends Application { public class Main extends Application {
public static int boardsize = 10; public static int boardsize = 10;
//board size, locks the size to always being a square, if the number is changed will always be square //board size, locks the size to always being a square, if the number is changed will always be square
public static boolean vertical = false; public static boolean vertical = false;
static Random random = new Random (); static Random random = new Random ();
public static boolean setup = true; public static boolean setup = true;
static int[] ships = new int[]{5,4,4,3,3,2,2,2}; //Array with all the ship lengths static int[] ships = new int[]{5,4,4,3,3,2,2,2}; //Array with all the ship lengths
static int shipnum = 0; static int shipnum = 0;
static int enemyshipnum = 0; static int enemyshipnum = 0;
static int xInteger; static int xInteger;
static int yInteger; static int yInteger;
static int HealthPlayer = 25; // Sets the health for both enemy and player, this is the total squares for all ships static int HealthPlayer = 25; // Sets the health for both enemy and player, this is the total squares for all ships
static int HealthEnemy = 25; static int HealthEnemy = 25;
static Board BoardPlayer; static Board BoardPlayer;
static Board BoardEnemy; static Board BoardEnemy;
public static void main(String[] args) { public static void main(String[] args) {
launch(args); launch(args);
} }
@Override @Override
public void start(Stage stage) throws Exception { public void start(Stage stage) throws Exception {
BoardPlayer = new Board(boardsize, event -> { BoardPlayer = new Board(boardsize, event -> {
Board.Cell cell = (Board.Cell) event.getSource(); Board.Cell cell = (Board.Cell) event.getSource();
/* grid coordinates of click */ /* grid coordinates of click */
xInteger = cell.xAxis; xInteger = cell.xAxis;
yInteger = cell.yAxis; yInteger = cell.yAxis;
if (event.getButton() == MouseButton.PRIMARY) { if (event.getButton() == MouseButton.PRIMARY) {
vertical = true; vertical = true;
} }
if (setup && !BoardPlayer.obstructed(vertical, ships[shipnum], xInteger, yInteger)) { if (setup && !BoardPlayer.obstructed(vertical, ships[shipnum], xInteger, yInteger)) {
System.out.println("placing"); System.out.println("placing");
BoardPlayer.place(ships[shipnum], vertical, xInteger, yInteger); BoardPlayer.place(ships[shipnum], vertical, xInteger, yInteger);
...@@ -92,120 +92,127 @@ System.out.println("placing"); ...@@ -92,120 +92,127 @@ System.out.println("placing");
// to-do: set setup to false when shipnum is too big? (i.e. when it's 8) // to-do: set setup to false when shipnum is too big? (i.e. when it's 8)
} }
if (shipnum == 8) { if (shipnum == 8) {
startGame(); startGame();
} }
}); });
BoardEnemy = new Board(boardsize, event -> { BoardEnemy = new Board(boardsize, event -> {
Board.Cell cell = (Board.Cell) event.getSource(); Board.Cell cell = (Board.Cell) event.getSource();
if (!cell.shoot && !setup) { if (!cell.shoot && !setup) {
//Ignores if the selected cell has already been shot at //Ignores if the selected cell has already been shot at
cell.shoot(); cell.shoot();
} else { } else {
return; return;
} }
}); });
Scene gameWindow = new Scene(build()); Scene gameWindow = new Scene(build());
//builds the scene, so sets everything up in the window //builds the scene, so sets everything up in the window
stage.setTitle("Battleship"); stage.setTitle("Battleship");
stage.setScene(gameWindow); stage.setScene(gameWindow);
stage.show(); stage.show();
} }
public Parent build() { public Parent build() {
BorderPane workspace = new BorderPane(); BorderPane workspace = new BorderPane();
VBox leftPane = new VBox( BoardPlayer); //Sets where I want each of the boards, in this case next to each other VBox leftPane = new VBox( BoardPlayer); //Sets where I want each of the boards, in this case next to each other
VBox rightPane = new VBox( BoardEnemy); VBox rightPane = new VBox( BoardEnemy);
workspace.setLeft(leftPane); workspace.setLeft(leftPane);
workspace.setRight(rightPane); workspace.setRight(rightPane);
leftPane.setAlignment(Pos.CENTER_LEFT); leftPane.setAlignment(Pos.CENTER_LEFT);
rightPane.setAlignment(Pos.CENTER_LEFT); rightPane.setAlignment(Pos.CENTER_LEFT);
return workspace; return workspace;
} }
public static void enemySetup() { public static void enemySetup() {
enemyshipnum=0; enemyshipnum=0;
}
public static void enemyPlace() { }
int ComputerX = random.nextInt(boardsize); public static void enemyPlace() {
//Generates a random location on the board
int ComputerY = random.nextInt(boardsize);
boolean aiVert = random.nextBoolean(); int ComputerX = random.nextInt(boardsize);
//Generates a random location on the board
System.out.println("maybe placing enemy ship at " + ComputerX + " " + ComputerY); int ComputerY = random.nextInt(boardsize);
System.out.println("obstructed is " + BoardEnemy.obstructed(vertical, boardsize, xInteger, yInteger)); boolean aiVert = random.nextBoolean();
System.out.println("maybe placing enemy ship at " + ComputerX + " " + ComputerY);
if (setup && !BoardEnemy.obstructed(vertical, ships[enemyshipnum], xInteger, yInteger)) { System.out.println("obstructed is " + BoardEnemy.obstructed(aiVert, boardsize, ComputerX, ComputerY));
if (!BoardEnemy.obstructed(aiVert, ComputerX, ComputerY, ComputerY)) {
//prevents placement in obstructed areas
BoardEnemy.place(ComputerY, aiVert, ComputerX, ComputerY); if (setup && !BoardEnemy.obstructed(aiVert, ships[enemyshipnum], ComputerX, ComputerY)) {
//Places the ships from the board
//For Loop to repeat cycle, and something to cancel cycle when it reaches 8 if (!BoardEnemy.obstructed(aiVert, ships[enemyshipnum], ComputerX, ComputerY)) {
//prevents placement in obstructed areas
for (;enemyshipnum < 7; enemyshipnum++); System.out.println("calling place at " + ComputerX + " " + ComputerY);
BoardEnemy.place(ships[enemyshipnum], aiVert, ComputerX, ComputerY);
//Places the ships from the board
} //so the for Loop will count up by one
enemyshipnum++;
System.out.println(enemyshipnum);
} }
} //Repeat enemy place till it reaches 8, use a loop to repeat the statement enemyPlace
public static void startGame(){ }
if (enemyshipnum == 8) {//Stops the loop when the variable is reached starting the game
startGame();
}
enemySetup(); }
enemyPlace(); public static void startGame(){
setup = false; enemySetup();
} enemyPlace();
} setup = false;
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment