Advertisement
Guest User

Untitled

a guest
Jun 6th, 2017
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 11.72 KB | None | 0 0
  1. package view;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.Collection;
  5. import java.util.Collections;
  6. import java.util.HashMap;
  7. import java.util.List;
  8. import java.util.Random;
  9. import java.util.Timer;
  10. import java.util.TimerTask;
  11.  
  12. import controller.databaseConnection;
  13. import javafx.collections.ObservableList;
  14. import javafx.event.ActionEvent;
  15. import javafx.event.EventHandler;
  16. import javafx.geometry.Insets;
  17. import javafx.scene.Scene;
  18. import javafx.scene.control.Button;
  19. import javafx.scene.control.ComboBox;
  20. import javafx.scene.control.Label;
  21. import javafx.scene.layout.Background;
  22. import javafx.scene.layout.BackgroundFill;
  23. import javafx.scene.layout.CornerRadii;
  24. import javafx.scene.layout.Pane;
  25. import javafx.scene.layout.VBox;
  26. import javafx.scene.paint.Color;
  27. import javafx.scene.text.Font;
  28. import javafx.scene.text.Text;
  29. import javafx.stage.Stage;
  30.  
  31. public class ChallengeScreen extends Gui {
  32.  
  33. Pane challengePane = new Pane();
  34. Scene challengeScene = new Scene(challengePane, 400, 800);
  35.  
  36. private Stage primaryStage;
  37. private ArrayList<String> players = new ArrayList<>(); // for testing JM
  38. private databaseConnection dbcon = new databaseConnection("jdbc:mysql://databases.aii.avans.nl/sficken_db",
  39. "sficken", "Ab12345");
  40. private ArrayList<ComboBox<String>> comboBoxes = new ArrayList<>();
  41. private ArrayList<Button> buttons = new ArrayList<>();
  42. private ArrayList<String> playersInGame = new ArrayList<>();
  43. private ArrayList<String> occupiedPlayers = new ArrayList<>();
  44. private ArrayList<String> invitedPlayers = new ArrayList<>();
  45.  
  46. private int gameID;
  47. private Button finishButton;
  48. private boolean[] playersSet = new boolean[3];
  49. private Timer timer;
  50. private TimerTask timerTask;
  51. private Button backButton;
  52.  
  53. public ChallengeScreen(Stage primaryStage) {
  54. this.primaryStage = primaryStage;
  55. }
  56.  
  57. public void makeChallengeScreen() {
  58.  
  59. setUpScene();
  60.  
  61. makeBackButton();
  62.  
  63. makeTitleLabel();
  64.  
  65. makeComboBoxes();
  66.  
  67. primaryStage.show(); // for testing, remove when finished JM
  68.  
  69. }
  70.  
  71. private void setUpScene() {
  72.  
  73. primaryStage.setTitle("Spelers uitdagen");
  74. primaryStage.centerOnScreen();
  75. challengeScene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
  76. challengePane.getStyleClass().add("pane");
  77. primaryStage.setScene(challengeScene);
  78. primaryStage.setResizable(false);
  79. }
  80.  
  81. private void makeBackButton() {
  82.  
  83. backButton = new Button("Terug");
  84. backButton.setPrefHeight(50);
  85. backButton.setPrefWidth(150);
  86. backButton.setTranslateX(0);
  87. backButton.setTranslateY(0);
  88. challengePane.getChildren().add(backButton);
  89. backButton.setOnAction(new EventHandler<ActionEvent>() {
  90.  
  91. @Override
  92. public void handle(ActionEvent event) {
  93. MainMenuScreen screen = new MainMenuScreen();
  94. screen.makeMainMenuScreen(primaryStage);
  95. }
  96. });
  97. }
  98.  
  99. private void makeTitleLabel() {
  100. Label titelLabel = new Label("Spelers uitdagen");
  101. titelLabel.setTranslateX(170);
  102. titelLabel.setTranslateY(12.5);
  103. titelLabel.setFont(Font.font("Arial", 28));
  104. titelLabel.setTextFill(Color.WHITESMOKE);
  105. challengePane.getChildren().add(titelLabel);
  106. }
  107.  
  108. private void makeComboBoxes() {
  109.  
  110. if (!dbcon.select(
  111. "SELECT idspel FROM speler WHERE username = '" + player.getName() + "' AND speelstatus = 'uitdager'",
  112. "idspel").isEmpty()) {
  113.  
  114. for (int i = 0; i < (dbcon.select("SELECT idspel FROM speler WHERE username = '" + player.getName()
  115. + "' AND speelstatus = 'uitdager'", "idspel").size()); i++) {
  116. occupiedPlayers.addAll(
  117. dbcon.select("SELECT username FROM speler WHERE speelstatus = 'uitgedaagde' AND idspel = "
  118. + dbcon.select("SELECT idspel FROM speler WHERE username = '" + player.getName()
  119. + "' AND speelstatus = 'uitdager'", "idspel").get(i),
  120. "username"));
  121. }
  122.  
  123. // adds all occupied players to the arraylist of occupied players
  124.  
  125. }
  126.  
  127. // for testing purposes
  128. // ArrayList<String> playersInGame = new ArrayList<>();
  129. // ArrayList<ComboBox<String>> comboBoxes = new ArrayList<>();
  130. // ArrayList<Button> buttons = new ArrayList<>();
  131. players.addAll(dbcon.select("SELECT username FROM account ", "username"));
  132.  
  133. // System.out.println("players: " + players);
  134. // System.out.println(occupiedPlayers);
  135. //
  136. // for (int y = 0; y < dbcon.select("SELECT username FROM speler",
  137. // "username").size(); y++) {
  138. // for (int i = 0; i < occupiedPlayers.size(); i++) {
  139. // if (occupiedPlayers.get(i).equals(dbcon.select("SELECT username FROM
  140. // speler", "username").get(y))) {
  141. // // players.add(dbcon.select("SELECT username FROM account",
  142. // // "").get(i));
  143. // System.out.println("We zijn er!");
  144. // players.remove(dbcon.select("SELECT username FROM account",
  145. // "username").get(i));
  146. // // players.addAll(dbcon.select("SELECT username FROM account
  147. // // ", "username"));
  148. // }
  149. // }
  150. // }
  151.  
  152. ArrayList<String> tempGameIDs = dbcon.select(
  153. "SELECT idspel FROM speler WHERE username = '" + player.getName() + "' AND speelstatus = 'uitdager';",
  154. "idspel");
  155.  
  156. for (String gameID : tempGameIDs) {
  157. occupiedPlayers.addAll(dbcon.select(
  158. "SELECT username, idspel FROM speler WHERE idspel = " + gameID + " AND speelstatus = 'uitgedaagde'",
  159. "username"));
  160.  
  161. }
  162. occupiedPlayers.add(player.getName());
  163. players.removeAll(occupiedPlayers);
  164.  
  165. System.out.println("players: " + players);
  166. System.out.println("occupiedPlayers: " + occupiedPlayers);
  167.  
  168. VBox vbBoxes = new VBox();
  169. vbBoxes.setTranslateX(20);
  170. vbBoxes.setTranslateY(100);
  171. challengePane.getChildren().add(vbBoxes);
  172.  
  173. for (int i = 0; i < 3; i++) {
  174. comboBoxes.add(makeComboBox(i * 100));
  175. vbBoxes.getChildren().add(comboBoxes.get(i));
  176. }
  177.  
  178. for (int i = 0; i < 3; i++) {
  179.  
  180. buttons.add(makeSetButton(i));
  181. vbBoxes.getChildren().add(buttons.get(i));
  182. }
  183.  
  184. setTransXY(buttons.get(0), 310, -120);
  185. setTransXY(buttons.get(1), 310, -19);
  186. setTransXY(buttons.get(2), 310, 82);
  187.  
  188. finishButton = new Button("BEGINNEN!");
  189. finishButton.setDisable(true);
  190. finishButton.setTranslateX(-20);
  191. finishButton.setTranslateY(360);
  192. finishButton.setPrefHeight(100);
  193. finishButton.setPrefWidth(400);
  194. vbBoxes.getChildren().add(finishButton);
  195. finishButton.setOnAction(new EventHandler<ActionEvent>() {
  196.  
  197. @Override
  198. public void handle(ActionEvent event) {
  199.  
  200. backButton.setDisable(true);
  201. finishButton.setDisable(true);
  202.  
  203. for (ComboBox<String> box : comboBoxes) {
  204. invitedPlayers.add(box.getValue());
  205. }
  206.  
  207. gameID = (Integer.parseInt(dbcon.select("SELECT MAX(idspel) FROM spel", "MAX(idspel)").get(0)) + 1);
  208.  
  209. dbcon.insert("INSERT INTO spel (idspel) VALUES (" + gameID + ");");
  210.  
  211. dbcon.insert("INSERT INTO speler (idspel, username, kleur, speelstatus, volgnr) VALUES (" + gameID
  212. + ", '" + comboBoxes.get(0).getValue().toString() + "', 'wit', 'uitgedaagde', 2)");
  213. dbcon.insert("INSERT INTO speler (idspel, username, kleur, speelstatus, volgnr) VALUES (" + gameID
  214. + ", '" + comboBoxes.get(1).getValue().toString() + "', 'blauw', 'uitgedaagde', 3)");
  215. dbcon.insert("INSERT INTO speler (idspel, username, kleur, speelstatus, volgnr) VALUES (" + gameID
  216. + ", '" + comboBoxes.get(2).getValue().toString() + "', 'oranje', 'uitgedaagde', 4)");
  217. dbcon.insert("INSERT INTO speler (idspel, username, kleur, speelstatus, volgnr) VALUES (" + gameID
  218. + ", '" + player.getName() + "', 'rood', 'uitdager', 1)");
  219.  
  220. startTimer();
  221.  
  222. }
  223.  
  224. });
  225.  
  226. for (int i = 0; i < playersInGame.size(); i++) {
  227. if (dbcon.select("SELECT speelstatus FROM speler WHERE username = '" + playersInGame.get(i) + "'",
  228. "speelstatus").get(0).equals("gereed")) {
  229. buttons.get(i).getStyleClass().add("buttonGreen");
  230. comboBoxes.get(i).getStyleClass().add("comboBoxGreen");
  231. }
  232. }
  233.  
  234. // comboBoxes.get(0).setStyle("-fx-background-color: green");
  235. // comboBoxes.get(0).setDisable(true);
  236. // comboBoxes.get(0).setStyle("-fx-background-color: red");
  237.  
  238. }
  239.  
  240. private void startTimer() {
  241.  
  242. HashMap<String, String> playerStatus = new HashMap<>();
  243.  
  244. timer = new Timer();
  245. timerTask = new TimerTask() {
  246.  
  247. @Override
  248. public void run() {
  249.  
  250. ArrayList<String> usernames = dbcon.select("SELECT * FROM speler WHERE idspel = " + gameID + ";",
  251. "username");
  252. ArrayList<String> status = dbcon.select("SELECT * FROM speler WHERE idspel = " + gameID + ";",
  253. "speelstatus");
  254.  
  255. boolean[] acceptedChallenges = new boolean[playerStatus.size()];
  256. boolean tempBoolean = false;
  257.  
  258. for (int i = 0; i < usernames.size(); i++) {
  259. playerStatus.put(usernames.get(i), status.get(i));
  260. }
  261.  
  262. for (int i = 0; i < comboBoxes.size(); i++) {
  263.  
  264. if (playerStatus.get(usernames.get(i)).equals("geweigerd")) {
  265. comboBoxes.get(i).setStyle("-fx-background-color: red");
  266. acceptedChallenges[i] = false;
  267.  
  268. } else if (playerStatus.get(usernames.get(i)).equals("geaccepteerd")) {
  269. comboBoxes.get(i).setStyle("-fx-background-color: green");
  270. acceptedChallenges[i] = true;
  271. // System.out.println("Geaccepteerd");
  272. }
  273. }
  274.  
  275. for (boolean accept : acceptedChallenges) {
  276.  
  277. if (!accept) {
  278. return;
  279. }
  280. tempBoolean = accept;
  281.  
  282. if (tempBoolean) {
  283. timer.cancel();
  284.  
  285. }
  286. }
  287. }
  288. };
  289.  
  290. timer.scheduleAtFixedRate(timerTask, 0, 1000);
  291. }
  292.  
  293. private void removePlayer(ComboBox<String> box) {
  294. players.remove(box.getValue());
  295. playersInGame.remove(box.getValue());
  296. for (int i = 0; i < comboBoxes.size(); i++) {
  297.  
  298. if (box != comboBoxes.get(i)) {
  299.  
  300. comboBoxes.get(i).getItems().remove(box.getValue());
  301. }
  302. }
  303. }
  304.  
  305. private void addPlayer(ComboBox<String> selectedBox) {
  306.  
  307. players.add(selectedBox.getValue());
  308. for (ComboBox<String> box : comboBoxes) {
  309.  
  310. if (selectedBox != box) {
  311.  
  312. box.getItems().add(selectedBox.getValue());
  313. Collections.sort(box.getItems());
  314. }
  315. }
  316. }
  317.  
  318. // private void addPlayer(ComboBox<String> box){
  319. // players.add(box.getValue());
  320. // for(int i = 0 ; i < comboBoxes.size(); i++){
  321. // if(box != comboBoxes.get(i)){
  322. // comboBoxes.get(i).getItems().add(box.getValue());
  323. // }
  324. // }
  325. // }
  326.  
  327. private void doSelectButton(ComboBox<String> box, Button button, ArrayList<String> playersInGame, int i) {
  328. if (!box.isDisabled()) {
  329. button.setText("X");
  330. playersInGame.add(box.getValue());
  331. box.setDisable(true);
  332. // dbcon.insert("UPDATE speler SET speelstatus = 'uitgedaagde' WHERE
  333. // username = '" + box.getValue().toString() + "'");
  334. removePlayer(box);
  335. playersSet[i] = true;
  336.  
  337. } else {
  338. box.setDisable(true);
  339. playersInGame.remove(box.getValue());
  340. button.setText("+");
  341. box.setDisable(false);
  342. addPlayer(box);
  343. playersSet[i] = false;
  344. }
  345. }
  346.  
  347. private ComboBox<String> makeComboBox(double transY) {
  348. ComboBox<String> box = new ComboBox<>();
  349. box.getItems().addAll(players);
  350. box.setPromptText("Gebruikersnaam");
  351. // vbBoxes.getChildren().add(box1);
  352. box.getStyleClass().add("comboBox");
  353. box.setTranslateY(transY);
  354. box.setPrefHeight(20);
  355. box.setPrefWidth(280);
  356.  
  357. return box;
  358. }
  359.  
  360. private Button makeSetButton(int i) {
  361. Button btn = new Button("+");
  362. btn.getStyleClass().add("setButton");
  363. // vbBoxes.getChildren().add(setButton4);
  364. // buttons.add(setButton4);
  365. btn.setOnAction(new EventHandler<ActionEvent>() {
  366.  
  367. @Override
  368. public void handle(ActionEvent event) {
  369. doSelectButton(comboBoxes.get(i), btn, playersInGame, i);
  370. updateFinishButton();
  371. }
  372. });
  373. return btn;
  374. }
  375.  
  376. private void updateFinishButton() {
  377.  
  378. boolean tempBool = false;
  379.  
  380. for(boolean set : playersSet){
  381.  
  382. }
  383.  
  384. finishButton.setDisable(!tempBool);
  385. }
  386.  
  387. private void setTransXY(Button btn, double x, double y) {
  388. btn.setTranslateX(x);
  389. btn.setTranslateY(y);
  390. }
  391. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement