From b11db35eb07038507852517f35aedf3c25c53031 Mon Sep 17 00:00:00 2001
From: KahootChampion
Date: Sat, 6 Apr 2019 22:23:57 -0600
Subject: [PATCH] Must fix issues with logic for shipGui still
---
src/ShipWarfareGUI.java | 287 ++++++++++++++++++++++++-----------
src/ShipWarfareGUILogic.java | 242 +----------------------------
2 files changed, 204 insertions(+), 325 deletions(-)
diff --git a/src/ShipWarfareGUI.java b/src/ShipWarfareGUI.java
index a6f7aba..c990308 100644
--- a/src/ShipWarfareGUI.java
+++ b/src/ShipWarfareGUI.java
@@ -14,7 +14,6 @@ import javafx.scene.layout.VBox;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
import javafx.util.Duration;
-
import java.io.FileInputStream;
import java.util.Random;
import java.util.concurrent.ExecutionException;
@@ -28,6 +27,7 @@ import java.util.concurrent.ExecutionException;
public class ShipWarfareGUI extends Player {
+ private ShipWarfareGUI ship;
private Circle cannon;
private VBox buttonBox;
private HBox fightRunBox;
@@ -35,7 +35,6 @@ public class ShipWarfareGUI extends Player {
private Button runButton;
private Button continueButton;
private VBox labelBox;
-
private Label title;
private Label HPLeft;
private Label gunsLeftOrTaken;
@@ -43,13 +42,18 @@ public class ShipWarfareGUI extends Player {
private Label shipsRemaining;
private Label report;
- private int counter;
- private int checkIfDone;
- private int numOfLittyShips;
+ private boolean winOrLose= false;
+ private int counter1;
private int timeCounter;
+ private int numOfLittyShips = 0;
+ private boolean userAttacks = true;
+ private int startingLittyShips = 0;
+ private int howMuchRun = 0;
+ private int counter = 0;
+ private String pirateName = "Liu Yen";
private int beginningX = 150;
private int beginningY = 245;
@@ -71,6 +75,8 @@ public class ShipWarfareGUI extends Player {
}
+
+
/**
* Sets most of the labels invisible except for the "fight or run" label
*/
@@ -97,18 +103,171 @@ public class ShipWarfareGUI extends Player {
}
+
+
+ /**
+ * The user faces off against the litty ships and either prevails, dies, or runs away
+ *
+ * @return true if the user wins, loses, or flees, it returns false otherwise
+ */
+ public boolean destroyLittyShipsOrEscape(Stage stage) throws Exception {
+ ShipWarfareGUILogic logic = new ShipWarfareGUILogic (getPlayer());
+
+ cannon.setLayoutX(beginningX);
+ cannon.setLayoutY(beginningY);
+ int calculateLoot = 0;
+ int chanceOfEnemyRun = 0;
+ int hitCounter = 0;
+ int missCounter = 0;
+ boolean gunFrustration = false;
+
+
+
+
+
+ runAwayOrLeft.setText("No ships ran away");
+ Random randomValue = new Random();
+ int exitValue = 0;
+ //Player volley
+ //while (exitValue == 0) {
+ if (getGuns() > 0) {
+
+ for (int j = 0; j < getGuns(); j++) {
+ if (userAttacks == true) {
+
+ int hitOrMiss = randomValue.nextInt(2) + 1;
+ if (hitOrMiss == 2) {
+ numOfLittyShips--;
+ if (numOfLittyShips <= 0) {
+ exitValue = 1;
+ //break;
+ }
+ hitCounter++;
+
+
+ } else {
+ missCounter++;
+
+ }
+
+
+
+ } else {
+ //continue;
+ }
+ }
+ if (userAttacks == true) {
+ report.setText(String.format("Report: Ships hit: %d, Shots missed: %d", hitCounter, missCounter));
+ }
+ } else {
+ report.setText("We don't have any guns!!!");
+
+ }
+
+
+ if (numOfLittyShips <= 0) {
+ exitValue = 1;
+ //break;
+ }
+ if (getGuns() > 0) {
+ chanceOfEnemyRun = randomValue.nextInt(2) + 1;
+ if (chanceOfEnemyRun == 2) {
+ howMuchRun = randomValue.nextInt(15) + 1;
+ if (howMuchRun != 0 && howMuchRun < numOfLittyShips) {
+
+
+
+ setNumOfLittyShips(numOfLittyShips - howMuchRun);
+ if (userAttacks == true) {
+ if (howMuchRun > 0) {
+ runAwayOrLeft.setText(String.format("Cowards! %d ships ran away %s! ", howMuchRun, getName()));
+
+ //runAwayOrLeft.setVisible(true);
+ }
+
+ } else {
+ report.setText((String.format("Escaped %d of them %s!", howMuchRun, getName())));
+ }
+
+ }
+ }
+ }
+
+ shipsRemaining.setText(String.format("%d ships remaining and they look angry!", numOfLittyShips));
+ //Computer volley
+ int takeGunChance = randomValue.nextInt(4) + 1;
+ if (takeGunChance == 1 && getGuns() > 0) {
+ setGuns(getGuns() - 1);
+ gunFrustration = true;
+ } else {
+ if (numOfLittyShips > 0) {
+ int HPTaken = randomValue.nextInt(10);
+ setHP(getHP() - (HPTaken));
+
+
+ }
+ }
+ if (getHP() <= 0) {
+ exitValue = 2;
+ //break;
+ }
+ if (gunFrustration == true) {
+ gunsLeftOrTaken.setText(String.format("Dang it! We only have %d guns left", getGuns()));
+ playerShoots(getGuns()+1);
+
+ } else {
+ gunsLeftOrTaken.setText(String.format("We still have %d guns left", getGuns()));
+ }
+
+ HPLeft.setText(String.format("EEK, our current ship status is %d%% ", getHP()));
+ if (userAttacks == false) {
+ userAttacks = true;
+ }
+
+
+ if (exitValue == 1) {
+ wipe();
+ int calculateLoot = calculateLoot();
+ report.setText(String.format("Our firm has earned $%,d in loot! ", calculateLoot));
+ continueButton.setVisible(true);
+ completeWipe();
+ fightButton.setVisible(false);
+ runButton.setVisible(false);
+ continueButton.setDefaultButton(true);
+ return true;
+ } else if (exitValue == 2) {
+ GameEndGUI gameEndGUI = new GameEndGUI(getPlayer());
+ gameEndGUI.initializeGameEndGUI(stage);
+ stage.show();
+ return true;
+ } else if (exitValue == 3) {
+ report.setText(String.format("We made it out at %d%% ship status!", getHP()));
+
+ continueButton.setVisible(true);
+ completeWipe();
+ fightButton.setVisible(false);
+ runButton.setVisible(false);
+ continueButton.setDefaultButton(true);
+ return true;
+ }
+ return false;
+
+ }
+
/**
* Player attacks enemy ships in an animation
*/
public void playerShoots(int amountOfShots) {
+ userAttacks=true;
shotsFired.setFromX(0);
shotsFired.setFromY(0);
shotsFired.setToX(endX);
shotsFired.setToY(endY);
shotsFired.setDuration(Duration.seconds(0.5));
- if (getGuns() > 0) {
+ if(getGuns()>0) {
shotsFired.setCycleCount(amountOfShots);
- } else {
+ }
+ else{
shotsFired.setCycleCount(0);
shotsFired.stop();
cannon.setVisible(false);
@@ -121,7 +280,7 @@ public class ShipWarfareGUI extends Player {
* Ships attack player ship back in an animation
*/
- public void shipsRetaliate() {
+ public void shipsRetaliate(){
cannon.setVisible(true);
enemyShots.setFromX(270);
enemyShots.setFromY(0);
@@ -155,53 +314,29 @@ public class ShipWarfareGUI extends Player {
});
}
- public boolean winOrLose(Stage stage) {
- ShipWarfareGUILogic logic = new ShipWarfareGUILogic(getPlayer());
- logic.setNumOfLittyShips(numOfLittyShips);
- int commenceFire = logic.destroyLittyShipsOrEscape(numOfLittyShips);
- if (commenceFire == 1) {
- wipe();
- report.setText(logic.getReportMessage());
- continueButton.setVisible(true);
- completeWipe();
- fightButton.setVisible(false);
- runButton.setVisible(false);
- continueButton.setDefaultButton(true);
- setPlayer(logic.getPlayer());
- return true;
-
-
- } else if (commenceFire == 2) {
- GameEndGUI gameEndGUI = new GameEndGUI(getPlayer());
- gameEndGUI.initializeGameEndGUI(stage);
- stage.show();
- setPlayer(logic.getPlayer());
- return true;
-
- } else if (commenceFire == 3) {
-
- report.setText(logic.getReportMessage());
- continueButton.setVisible(true);
- completeWipe();
- fightButton.setVisible(false);
- runButton.setVisible(false);
- continueButton.setDefaultButton(true);
- setPlayer(logic.getPlayer());
- return true;
- } else {
- setPlayer(logic.getPlayer());
- return false;
- }
- }
-
/**
* Generaties ships and deploys logic for the shipwarfare
- *
* @param primaryStage sets up the stage to whcih the GUI may be based around
* @throws Exception in case of interruptions withing the graphical interface
*/
public void initializeShip(Stage primaryStage) throws Exception {
+ setNumOfLittyShips(numOfShips());
+
+ Pane root = new Pane();
+ HBox usAgainstEnemyDivisor;
+ BorderPane centeringUserShipPane = new BorderPane();
+ Circle cannon;
+ BorderPane centeringLittyShipPane = new BorderPane();
+ BorderPane encompassingPane = new BorderPane();
+ usAgainstEnemyDivisor = new HBox();
+ cannon = new Circle();
+ this.cannon = cannon;
+
+
+
+ cannon.setVisible(false);
+
buttonBox = new VBox();
fightRunBox = new HBox();
fightButton = new Button();
@@ -214,27 +349,8 @@ public class ShipWarfareGUI extends Player {
runAwayOrLeft = new Label();
shipsRemaining = new Label();
report = new Label();
- Pane root = new Pane();
- BorderPane centeringUserShipPane = new BorderPane();
- BorderPane centeringLittyShipPane = new BorderPane();
- BorderPane encompassingPane = new BorderPane();
- HBox usAgainstEnemyDivisor = new HBox();
- Circle cannon = new Circle();
- cannon.setLayoutX(beginningX);
- cannon.setLayoutY(beginningY);
-
- this.cannon = cannon;
-
-
- cannon.setVisible(false);
-
-
- ShipWarfareGUILogic logic = new ShipWarfareGUILogic(getPlayer());
- numOfLittyShips = logic.numOfShips();
- logic.setNumOfLittyShips(numOfLittyShips);
- title.setText(String.format("%d ships from Liu Yuen's Fleet are attacking, Would you like to fight or run?", logic.getNumOfLittyShips()));
- setPlayer(logic.getPlayer());
+ title.setText(String.format("%d ships from Liu Yuen's Fleet are attacking, Would you like to fight or run?", numOfLittyShips));
fightButton.setText("Fight");
@@ -285,7 +401,7 @@ public class ShipWarfareGUI extends Player {
ourShip = new Image(new FileInputStream("src/images/ourShip.png"));
enemyShip = new Image(new FileInputStream("src/images/enemyShip.png"));
- } catch (Exception e) {
+ }catch(Exception e){
ourShip = new Image(new FileInputStream("images/ourShip.png"));
enemyShip = new Image(new FileInputStream("images/enemyShip.png"));
}
@@ -389,23 +505,20 @@ public class ShipWarfareGUI extends Player {
title.setText("Ayy captain we will try to run!");
report.setText("Epic");
counter++;
- ShipWarfareGUILogic logic = new ShipWarfareGUILogic(getPlayer());
- logic.setNumOfLittyShips(numOfLittyShips);
- if (logic.runFromShips() == false) {
+
+ if (runFromShips(userAttacks) == false) {
report.setText(("Couldn't run away"));
try {
- checkIfDone = logic.destroyLittyShipsOrEscape(numOfLittyShips);
+ winOrLose= destroyLittyShipsOrEscape(primaryStage);
} catch (Exception e) {
e.printStackTrace();
}
- if (winOrLose(primaryStage)==false) {
+ if(winOrLose==true){
report.setVisible(true);
title.setVisible(true);
shipsRemaining.setVisible(true);
gunsLeftOrTaken.setVisible(true);
- } else {
-
}
} else {
@@ -414,7 +527,7 @@ public class ShipWarfareGUI extends Player {
}
- setPlayer(logic.getPlayer());
+
}
});
@@ -436,7 +549,7 @@ public class ShipWarfareGUI extends Player {
runButton.setVisible(false);
try {
- winOrLose(primaryStage);
+ winOrLose= destroyLittyShipsOrEscape(primaryStage);
} catch (Exception e) {
e.printStackTrace();
}
@@ -462,9 +575,10 @@ public class ShipWarfareGUI extends Player {
*/
public void handle(ActionEvent event) {
shotsFired.stop();
- if (!winOrLose(primaryStage)) {
+ if(!winOrLose) {
shipsRetaliate();
- } else {
+ }
+ else{
report.setVisible(true);
continueButton.setVisible(true);
usAgainstEnemyDivisor.setVisible(false);
@@ -489,17 +603,8 @@ public class ShipWarfareGUI extends Player {
HPLeft.setVisible(true);
gunsLeftOrTaken.setVisible(true);
- if (!winOrLose(primaryStage)) {
- usAgainstEnemyDivisor.setVisible(true);
- shipsRemaining.setVisible(true);
- gunsLeftOrTaken.setVisible(true);
- ShipWarfareGUILogic logic = new ShipWarfareGUILogic(getPlayer());
- logic.setPlayer(getPlayer());
- System.out.println(logic.getReportMessage());
-
- shipsRemaining.setText(logic.getShipsRemainingMessage());
- gunsLeftOrTaken.setText(logic.getGunsLeftOrTakenMessage());
-
+ if(winOrLose==true){
+ usAgainstEnemyDivisor.setVisible(false);
}
}
diff --git a/src/ShipWarfareGUILogic.java b/src/ShipWarfareGUILogic.java
index ce3e597..2697155 100644
--- a/src/ShipWarfareGUILogic.java
+++ b/src/ShipWarfareGUILogic.java
@@ -11,24 +11,13 @@ import java.util.Random;
public class ShipWarfareGUILogic extends Player {
- private String titleMessage;
- private String HPLeftMessage;
- private String gunsLeftOrTakenMessage;
- private String runAwayOrLeftMessage;
- private String shipsRemainingMessage;
- private String reportMessage;
+
private int numOfLittyShips = 0;
- private boolean userAttacks = true;
- private int startingLittyShips = 0;
- private int howMuchRun = 0;
- private int counter = 0;
- private String pirateName = "Liu Yen";
+ private int startingLittyShips=0;
- private boolean winOrLose = false;
private int counter1;
- private int avenue;
public ShipWarfareGUILogic(Player player) {
Player playerDummy = new Player(player);
@@ -58,7 +47,7 @@ public class ShipWarfareGUILogic extends Player {
*
* @return true if the user is allowed to run, false if not, the "default" is false
*/
- public boolean runFromShips() {
+ public boolean runFromShips(boolean userAttacks) {
userAttacks = false;
Random randomValue = new Random();
int runSuccessChance = randomValue.nextInt(10) + 1;
@@ -70,63 +59,6 @@ public class ShipWarfareGUILogic extends Player {
return false;
}
- public String getTitleMessage() {
- return titleMessage;
- }
-
- public void setTitleMessage(String titleMessage) {
- this.titleMessage = titleMessage;
- }
-
- public String getHPLeftMessage() {
- return HPLeftMessage;
- }
-
- public void setHPLeftMessage(String HPLeftMessage) {
- this.HPLeftMessage = HPLeftMessage;
- }
-
- public String getGunsLeftOrTakenMessage() {
- return gunsLeftOrTakenMessage;
- }
-
- public void setGunsLeftOrTakenMessage(String gunsLeftOrTakenMessage) {
- this.gunsLeftOrTakenMessage = gunsLeftOrTakenMessage;
- }
-
- public String getRunAwayOrLeftMessage() {
- return runAwayOrLeftMessage;
- }
-
- public void setRunAwayOrLeftMessage(String runAwayOrLeftMessage) {
- this.runAwayOrLeftMessage = runAwayOrLeftMessage;
- }
-
- public String getShipsRemainingMessage() {
- return shipsRemainingMessage;
- }
-
- public void setShipsRemainingMessage(String shipsRemainingMessage) {
- this.shipsRemainingMessage = shipsRemainingMessage;
- }
-
- public String getReportMessage() {
- return reportMessage;
- }
-
- public void setReportMessage(String reportMessage) {
- this.reportMessage = reportMessage;
- }
-
-
- public int getAvenue() {
- return avenue;
- }
-
- public void setAvenue(int avenue) {
- this.avenue = avenue;
- }
-
/**
* The number of ships that attack is based on the amount of money one has on hand
*
@@ -155,174 +87,16 @@ public class ShipWarfareGUILogic extends Player {
}
-
- /**
- * The user faces off against the litty ships and either prevails, dies, or runs away
- *
- * @return true if the user wins, loses, or flees, it returns false otherwise
- */
- public int destroyLittyShipsOrEscape(int tempLittyShips) {
-
- this.numOfLittyShips = tempLittyShips;
- int calculateLoot = 0;
- int chanceOfEnemyRun = 0;
- int hitCounter = 0;
- int missCounter = 0;
- boolean gunFrustration = false;
-
- this.setRunAwayOrLeftMessage("No Ships ran away");
-
-
+ public int calculateLoot(){
Random randomValue = new Random();
- int exitValue = 0;
- //Player volley
- //while (exitValue == 0) {
- if (getGuns() > 0) {
-
- for (int j = 0; j < getGuns(); j++) {
- if (userAttacks == true) {
-
- int hitOrMiss = randomValue.nextInt(2) + 1;
- if (hitOrMiss == 2) {
- numOfLittyShips--;
- if (numOfLittyShips <= 0) {
- exitValue = 1;
- //break;
- }
- hitCounter++;
-
-
- } else {
- missCounter++;
-
- }
-
-
- } else {
- //continue;
- }
- }
- if (userAttacks == true) {
- this.setReportMessage(String.format("Report: Ships hit: %d, Shots missed: %d", hitCounter, missCounter));
- }
- } else {
- this.setReportMessage(("We don't have any guns!!!"));
- }
-
-
- if (numOfLittyShips <= 0) {
- exitValue = 1;
- //break;
- }
- if (getGuns() > 0) {
- chanceOfEnemyRun = randomValue.nextInt(2) + 1;
- if (chanceOfEnemyRun == 2) {
- howMuchRun = randomValue.nextInt(15) + 1;
- if (howMuchRun != 0 && howMuchRun < numOfLittyShips) {
-
-
- this.setNumOfLittyShips(numOfLittyShips - howMuchRun);
- if (userAttacks == true) {
- if (howMuchRun > 0) {
- this.setRunAwayOrLeftMessage(String.format("Cowards! %d ships ran away %s! ", howMuchRun, getName()));
- }
-
- } else {
- this.setReportMessage((String.format("Escaped %d of them %s!", howMuchRun, getName())));
- }
-
- }
- }
- }
-
- this.setShipsRemainingMessage(String.format("%d ships remaining and they look angry!", numOfLittyShips));
-
- //Computer volley
- int takeGunChance = randomValue.nextInt(4) + 1;
- if (takeGunChance == 1 && getGuns() > 0) {
- this.setGuns(getGuns() - 1);
- gunFrustration = true;
- } else {
- if (getNumOfLittyShips() > 0) {
- int HPTaken = randomValue.nextInt(10);
- this.setHP(getHP() - (HPTaken));
-
- }
- }
- if (getHP() <= 0) {
- exitValue = 2;
- //break;
- }
- if (gunFrustration == true) {
- this.setGunsLeftOrTakenMessage(String.format("Dang it! We only have %d guns left", getGuns()));
- //playerShoots(getGuns() + 1);
-
- } else {
- this.setGunsLeftOrTakenMessage(String.format("We still have %d guns left", getGuns()));
- }
-
- this.setHPLeftMessage(String.format("EEK, our current ship status is %d%% ", getHP()));
-
- if (userAttacks == false) {
- userAttacks = true;
- }
-
-
- if (exitValue == 1) {
- setAvenue(1);
- calculateLoot = (startingLittyShips * 100) + randomValue.nextInt(startingLittyShips) * 200;
- this.setMoney(getMoney() + calculateLoot);
- this.setReportMessage(String.format("Our firm has earned $%,d in loot! ", calculateLoot));
-
- return 1;
-
- } else if (exitValue == 2) {
- this.setAvenue(2);
- return 2;
-
- } else if (exitValue == 3) {
- this.setAvenue(3);
- this.setReportMessage(String.format("We made it out at %d%% ship status!", getHP()));
- return 3;
- }
- else{
- return 4;
- }
+ int calculateLoot;
+ calculateLoot = (startingLittyShips * 100) + randomValue.nextInt(startingLittyShips) * 200;
+ setMoney(getMoney() + calculateLoot);
+ return calculateLoot;
}
- /*
- if (destroyLittyShipsOrEscape() == 1) {
- wipe();
- calculateLoot = (startingLittyShips * 100) + randomValue.nextInt(startingLittyShips) * 200;
- this.setMoney(getMoney() + calculateLoot);
- reportMessage = String.format("Our firm has earned $%,d in loot! ", calculateLoot);
- continueButton.this.setVisible(true);
- completeWipe();
- fightButton.this.setVisible(false);
- runButton.this.setVisible(false);
- continueButton.this.setDefaultButton(true);
- return true;
-
-
- } else if (destroyLittyShipsOrEscape() == 2) {
- GameEndGUI gameEndGUI = new GameEndGUI(getPlayer());
- gameEndGUI.initializeGameEndGUI(stage);
- stage.show();
- return true;
-
- } else if (destroyLittyShipsOrEscape() == 3) {
- report.this.setText(String.format("We made it out at %d%% ship status!", getHP()));
-
- continueButton.this.setVisible(true);
- completeWipe();
- fightButton.this.setVisible(false);
- runButton.this.setVisible(false);
- continueButton.this.setDefaultButton(true);
- return true;
- }
- */