Browse Source

Added files

shiptest
school 7 years ago
parent
commit
28aaba3ace
  1. 1
      .gitignore
  2. 28
      Battleship.java
  3. 194
      BattleshipMain.java
  4. 4
      GameBoard.java
  5. BIN
      Research Lab 1 Battleship.pdf
  6. 9
      Ships.java

1
.gitignore

@ -12,3 +12,4 @@
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*
._*

28
Battleship.java

@ -0,0 +1,28 @@
// Carrier = 5
// Battleship = 4
// Cruiser = 3
// Submarine = 3
// Pilot = 2
public class Battleship{
private int[][] playerBaoard;
private int[][] computerBoardDisplay;
private int[][] computerBoardHidden;
private static int playerHits;
private static int ComputerHits;
public Battleship(int x, int y){
this.playerBoard = new int[x][y];
this.computerBoardDisplay = new int[x][y];
this.computerBoardHidden = new int[x][y];
}
public getComputerBoardHidden(){
return this.computerBoardHidden;
}
public getComputerBoardDisplay(){
return this.computerBoardDisplay;
}
public getPlayerBoard(){
return this.playerBaoard;
}

194
BattleshipMain.java

@ -0,0 +1,194 @@
import javafx.application.Application;
import javafx.animation.FadeTransition;
import javafx.geometry.Pos;
import javafx.geometry.Insets;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TextField;
import javafx.scene.layout.GridPane;
import javafx.scene.paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.scene.text.Text;
import javafx.scene.text.Font;
import javafx.stage.Stage;
import javafx.util.Duration;
import java.util.Scanner;
public class BattleshipMain extends Application
{
private GridPane windowScreen = new GridPane();
private Battleship battle;
@Override
public void start(Stage primaryStage)
{
this.battle = new Battleship(10, 10);
startingGame();
this.windowScreen.setAlignment(Pos.CENTER);
Scene scene = new Scene(this.windowScreen, battle.getPlayerBoard().length * 70, battle.getPlayerBoard()[0].length * 60);
primaryStage.setTitle("Battleship");
primaryStage.setScene(scene);
primaryStage.show();
promptingPlayer();
}
public void startingGame()
{
this.windowScreen.setPadding(new Insets(10, 10, 10, 10));
Text playerBoard = new Text(" Player Board");
playerBoard.setFont(Font.font("Arial", 20));
GridPane.setConstraints(playerBoard, 1, 1);
setBoardValues(this.battle.getPlayerBoard(), 1);
Text computerBoard = new Text(" Computer Board");
computerBoard.setFont(Font.font("Arial", 20));
GridPane.setConstraints(computerBoard, 1, 12);
setBoardValues(this.battle.getComputerBoardDisplay(), 12);
addSpacing();
this.windowScreen.getChildren().addAll(playerBoard, computerBoard);
}
public void setBoardValues(int[][] p, int columnOffset)
{
for(int row = 0; row < p.length; row++)
for(int col = 0; col < p[row].length; col++)
{
Rectangle player = new Rectangle(0, 0, 20, 20);
player.setStroke(Color.BLACK);
if(p[row][col] == 3)
player.setFill(Color.BLACK);
else if(p[row][col] == 2)
player.setFill(Color.RED);
else if(p[row][col] == 1)
player.setFill(Color.WHITE);
else
player.setFill(Color.LIGHTGRAY);
this.windowScreen.add(player, row + 4, col + columnOffset);
}
}
public void addSpacing()
{
for (int i = 0; i < 2; i++)
{
Text blankSpace = new Text(" ");
this.windowScreen.add(blankSpace, i + 2, 1);
Text blankSpace2 = new Text(" ");
this.windowScreen.add(blankSpace2, i + 14, 1);
}
for (int i = 1; i < 11; i++)
{
Text number = new Text("" + i);
number.setFont(Font.font("Arial", 20));
this.windowScreen.add(number, 3, 11 + i);
Text numberHorizontal = new Text("" + i);
numberHorizontal.setFont(Font.font("Arial", 20));
this.windowScreen.add(numberHorizontal, 3 + i, 11);
}
}
public void promptingPlayer()
{
TextField xInput = createInput("x", 10);
TextField yInput = createInput("y", 11);
Button sendCoordinates = new Button(" Send Coordinates ");
this.windowScreen.add(sendCoordinates, 16, 12);
sendCoordinates.setOnAction( e -> calculatingMove(xInput.getText(), yInput.getText()));
}
public TextField createInput(String coord, int colLoc)
{
TextField input = new TextField();
input.setPromptText("Enter " + coord + " coordinate");
this.windowScreen.add(input, 16, colLoc);
return input;
}
public void calculatingMove(String xInput, String yInput)
{
int[][] computerActual = this.battle.getComputerBoardHidden();
int[][] computerDisplay = this.battle.getComputerBoardDisplay();
int[][] playerBoard = this.battle.getPlayerBoard();
boolean playerWin = false, computerWin = false, checkingHit = false;
int x, y = -1;
Text usedCoord = new Text(" Pick again");
usedCoord.setFont(Font.font("Arial", 12));
this.windowScreen.add(usedCoord, 16, 16);
usedCoord.setOpacity(0.0);
x = Integer.parseInt(xInput) - 1;
y = Integer.parseInt(yInput) - 1;
if ( x < 0 || x > 9 )
handleError("x", 14);
if ( y < 0 || y > 9 )
handleError("y", 15);
if ((x >= 0 && x <= 9) && (y >= 0 && y <= 9))
{
checkingHit = computerDisplay[x][y] == 0;
}
if (checkingHit)
{
this.battle.updateComputerBoards(x, y, computerActual, computerDisplay);
playerWin = this.battle.checkPlayerWin();
this.battle.computerTurn();
computerWin = this.battle.checkComputerWin();
setBoardValues(this.battle.getPlayerBoard(), 1);
setBoardValues(this.battle.getComputerBoardDisplay(), 12);
} else {
usedCoord.setOpacity(1.0);
FadeTransition fading = creatingFader(usedCoord);
fading.play();
}
if (playerWin)
handleWin("You");
if (computerWin)
handleWin("Computer");
}
public void handleWin(String player)
{
Text winner = new Text(" " + player + " won!");
winner.setFont(Font.font("Arial", 18));
this.windowScreen.add(winner, 16, 18);
}
public void handleError(String coord, int colLoc)
{
Text error = new Text(" Invalid " + coord + " coordinate.");
error.setFont(Font.font("Arial", 12));
this.windowScreen.add(error, 16, colLoc);
error.setOpacity(1.0);
FadeTransition fading = creatingFader(error);
fading.play();
}
private FadeTransition creatingFader(Node node)
{
FadeTransition fade = new FadeTransition(Duration.seconds(3), node);
fade.setFromValue(1);
fade.setToValue(0);
return fade;
}
public static void main(String[] args)
{
Application.launch(args);
}
}

4
GameBoard.java

@ -0,0 +1,4 @@
public class GameBoard{
private int xDim;
private int yDim;
private Battleship[5] ships;

BIN
Research Lab 1 Battleship.pdf

9
Ships.java

@ -0,0 +1,9 @@
public class Ship{
private int[2] start;
private int[2] end;
public Ship(int[2] start,int[2] end){
this.start = start;
this.end = end;
}
public int[][]
Loading…
Cancel
Save