Advertisement
Guest User

Untitled

a guest
Jun 12th, 2017
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 15.31 KB | None | 0 0
  1. package vl07;
  2.  
  3.  
  4.  
  5. import java.util.Optional;
  6.  
  7. import javafx.application.Application;
  8. import javafx.event.ActionEvent;
  9. import javafx.event.EventHandler;
  10. import javafx.fxml.FXML;
  11. import javafx.fxml.FXMLLoader;
  12. import javafx.geometry.Insets;
  13. import javafx.scene.Parent;
  14. import javafx.scene.Scene;
  15. import javafx.scene.control.Alert;
  16. import javafx.scene.control.Button;
  17. import javafx.scene.control.ButtonType;
  18. import javafx.scene.control.Dialog;
  19. import javafx.scene.control.Label;
  20. import javafx.scene.control.PasswordField;
  21. import javafx.scene.control.TextField;
  22. import javafx.scene.control.Alert.AlertType;
  23. import javafx.scene.control.ButtonBar.ButtonData;
  24. import javafx.scene.layout.GridPane;
  25. import javafx.stage.Stage;
  26.  
  27. /**
  28. * @author FunWithJava Version vom 05. Juni 2017 Dialogfenster aus dialoge.java
  29. * Author Koelle
  30. */
  31. public class TTTControl extends Application implements EventHandler<ActionEvent>
  32. {
  33. // Setzen der ID's der Buttons
  34. @FXML
  35. private Button spielfeld00;
  36. @FXML
  37. private Button spielfeld01;
  38. @FXML
  39. private Button spielfeld02;
  40. @FXML
  41. private Button spielfeld10;
  42. @FXML
  43. private Button spielfeld11;
  44. @FXML
  45. private Button spielfeld12;
  46. @FXML
  47. private Button spielfeld20;
  48. @FXML
  49. private Button spielfeld21;
  50. @FXML
  51. private Button spielfeld22;
  52. @FXML
  53. private Button login;
  54. @FXML
  55. private Button info;
  56.  
  57. // array für buttons definiert
  58. private Button spielfeld[][];
  59.  
  60. // ID reset knopf
  61. @FXML
  62. private Button neuesspiel;
  63. // ID Textfeld momentaner Zug
  64. @FXML
  65. private TextField zug;
  66.  
  67. @FXML
  68. private Button spielBeenden;
  69.  
  70. // zufaellige Zugermittlung
  71. int turn = (Math.random() <= 0.5) ? 1 : 2;
  72. int counter = 0;
  73.  
  74. public static void main(String[] args)
  75. {
  76. launch(args);
  77. }
  78.  
  79. // Implementierung der fxml und erstellen der stage
  80. public void start(Stage stage) throws Exception
  81. {
  82. Parent root = FXMLLoader.load(getClass().getResource("TTTGui.fxml"));
  83. stage.setScene(new Scene(root));
  84. stage.show();
  85.  
  86. }
  87.  
  88. // Buttons in array speichern
  89. @FXML
  90. public void initialize()
  91. {
  92. spielfeld = new Button[][]
  93. {
  94. { spielfeld00, spielfeld01, spielfeld02 },
  95. { spielfeld10, spielfeld11, spielfeld12 },
  96. { spielfeld20, spielfeld21, spielfeld22 } };
  97. if (turn % 2 <= 0)
  98. {
  99. zug.setText("Player1");
  100. } else
  101. {
  102. zug.setText("Player2");
  103. }
  104. }
  105.  
  106. // handle methode "handelt" event beim klicken der buttons
  107. public void handle(ActionEvent event)
  108. {
  109.  
  110.  
  111. // If checkt ob das feld "frei" ist
  112. if (((Button) event.getSource()).getStyle().equals("")
  113. &&((Button) event.getSource()).getText().equals(""))
  114. {
  115. // if zeigt aktuellen spieler an
  116. if (turn % 2 <= 0)
  117. {
  118. zug.setText("Player2");
  119. } else
  120. {
  121. zug.setText("Player1");
  122. }
  123. // setzt gruen als naechst gesetzte farbe
  124. if (turn % 2 <= 0)
  125. {
  126. System.out.println("Das " + ((Button) event.getSource()).getId() + " wurde gr\u00FCn");
  127. ((Button) event.getSource()).setStyle("-fx-base: green;");
  128. turn++;
  129.  
  130. // Gewinnermittlung green
  131.  
  132. // horizontal
  133. for (int i = 0; i < 3; i++)
  134. {
  135. if (spielfeld[i][0].getStyle().equals("-fx-base: green;")
  136. && spielfeld[i][0].getStyle().equals(spielfeld[i][1].getStyle())
  137. && spielfeld[i][0].getStyle().equals(spielfeld[i][2].getStyle())
  138. && spielfeld[i][2].getStyle().equals("-fx-base: green;"))
  139. {
  140. // bei Spielende werden alle variablen zurueckgesetzt
  141. // und ein dialog ploppt auf mit den Optionen abbrechen
  142. // und ok, was ein neues Spiel startet
  143. counter = 0;
  144. turn = (Math.random() <= 0.5) ? 1 : 2;
  145. if (turn % 2 <= 0)
  146. {
  147. zug.setText("Player1");
  148. } else
  149. {
  150. zug.setText("Player2");
  151. }
  152. Alert alert = new Alert(AlertType.CONFIRMATION);
  153. alert.setTitle("Spielstand");
  154. alert.setHeaderText("Gr\u00FCn hat gewonnen!");
  155. alert.setContentText("Neues Spiel?");
  156.  
  157. Optional<ButtonType> result = alert.showAndWait();
  158.  
  159. // Bei okay setzt die schleife den style jedes feldes
  160. // wieder auf "leer"
  161. if (result.get() == ButtonType.OK)
  162. {
  163. for (int k = 0; k < 3; k++)
  164. {
  165. for (int j = 0; j < 3; j++)
  166. {
  167. spielfeld[j][k].setStyle("");
  168. }
  169. }
  170. }
  171. }
  172. }
  173.  
  174. // vertikal
  175. for (int i = 0; i < 3; i++)
  176. {
  177. if (spielfeld[0][i].getStyle().equals("-fx-base: green;")
  178. && spielfeld[0][i].getStyle().equals(spielfeld[1][i].getStyle())
  179. && spielfeld[1][i].getStyle().equals(spielfeld[2][i].getStyle())
  180. && spielfeld[2][i].getStyle().equals("-fx-base: green;"))
  181. {
  182. counter = 0;
  183. turn = (Math.random() <= 0.5) ? 1 : 2;
  184. if (turn % 2 <= 0)
  185. {
  186. zug.setText("Player1");
  187. } else
  188. {
  189. zug.setText("Player2");
  190. }
  191. Alert alert = new Alert(AlertType.CONFIRMATION);
  192. alert.setTitle("Spielstand");
  193. alert.setHeaderText("Gr\u00FCn hat gewonnen!");
  194. alert.setContentText("Neues Spiel?");
  195.  
  196. Optional<ButtonType> result = alert.showAndWait();
  197. if (result.get() == ButtonType.OK)
  198. {
  199.  
  200. for (int k = 0; k < 3; k++)
  201. {
  202. for (int j = 0; j < 3; j++)
  203. {
  204. spielfeld[j][k].setStyle("");
  205. }
  206. }
  207. }
  208. }
  209. }
  210.  
  211. // diagonal
  212. if (spielfeld[0][0].getStyle().equals("-fx-base: green;")
  213. && spielfeld[0][0].getStyle().equals(spielfeld[1][1].getStyle())
  214. && spielfeld[1][1].getStyle().equals(spielfeld[2][2].getStyle())
  215. && spielfeld[2][2].getStyle().equals("-fx-base: green;"))
  216. {
  217. counter = 0;
  218. turn = (Math.random() <= 0.5) ? 1 : 2;
  219. if (turn % 2 <= 0)
  220. {
  221. zug.setText("Player1");
  222. } else
  223. {
  224. zug.setText("Player2");
  225. }
  226. Alert alert = new Alert(AlertType.CONFIRMATION);
  227. alert.setTitle("Spielstand");
  228. alert.setHeaderText("Gr\u00FCn hat gewonnen!");
  229. alert.setContentText("Neues Spiel?");
  230.  
  231. Optional<ButtonType> result = alert.showAndWait();
  232. if (result.get() == ButtonType.OK)
  233. {
  234.  
  235. for (int k = 0; k < 3; k++)
  236. {
  237. for (int j = 0; j < 3; j++)
  238. {
  239. spielfeld[j][k].setStyle("");
  240. }
  241. }
  242. }
  243. }
  244.  
  245. if (spielfeld[0][2].getStyle().equals("-fx-base: green;")
  246. && spielfeld[0][2].getStyle().equals(spielfeld[1][1].getStyle())
  247. && spielfeld[1][1].getStyle().equals(spielfeld[2][0].getStyle())
  248. && spielfeld[2][0].getStyle().equals("-fx-base: green;"))
  249. {
  250. counter = 0;
  251. turn = (Math.random() <= 0.5) ? 1 : 2;
  252. if (turn % 2 <= 0)
  253. {
  254. zug.setText("Player1");
  255. } else
  256. {
  257. zug.setText("Player2");
  258. }
  259. Alert alert = new Alert(AlertType.CONFIRMATION);
  260. alert.setTitle("Spielstand");
  261. alert.setHeaderText("Gr\u00FCn hat gewonnen!");
  262. alert.setContentText("Neues Spiel?");
  263.  
  264. Optional<ButtonType> result = alert.showAndWait();
  265. if (result.get() == ButtonType.OK)
  266. {
  267.  
  268. for (int k = 0; k < 3; k++)
  269. {
  270. for (int j = 0; j < 3; j++)
  271. {
  272. spielfeld[j][k].setStyle("");
  273. }
  274. }
  275. }
  276. }
  277. } else
  278. {
  279. System.out.println("Das " + ((Button) event.getSource()).getId() + " wurde rot");
  280. ((Button) event.getSource()).setStyle("-fx-base: red;");
  281. turn++;
  282. // Gewinnermittlung red
  283.  
  284. // horizontal
  285. for (int i = 0; i < 3; i++)
  286. {
  287. if (spielfeld[i][0].getStyle().equals("-fx-base: red;")
  288. && spielfeld[i][0].getStyle().equals(spielfeld[i][1].getStyle())
  289. && spielfeld[i][0].getStyle().equals(spielfeld[i][2].getStyle())
  290. && spielfeld[i][2].getStyle().equals("-fx-base: red;"))
  291. {
  292. counter = 0;
  293. turn = (Math.random() <= 0.5) ? 1 : 2;
  294. if (turn % 2 <= 0)
  295. {
  296. zug.setText("Player1");
  297. } else
  298. {
  299. zug.setText("Player2");
  300. }
  301. Alert alert = new Alert(AlertType.CONFIRMATION);
  302. alert.setTitle("Spielstand");
  303. alert.setHeaderText("Rot hat gewonnen!");
  304. alert.setContentText("Neues Spiel?");
  305.  
  306. Optional<ButtonType> result = alert.showAndWait();
  307. if (result.get() == ButtonType.OK)
  308. {
  309.  
  310. for (int k = 0; k < 3; k++)
  311. {
  312. for (int j = 0; j < 3; j++)
  313. {
  314. spielfeld[j][k].setStyle("");
  315. }
  316. }
  317. }
  318. }
  319. }
  320.  
  321. // vertikal
  322. for (int i = 0; i < 3; i++)
  323. {
  324. if (spielfeld[0][i].getStyle().equals("-fx-base: red;")
  325. && spielfeld[0][i].getStyle().equals(spielfeld[1][i].getStyle())
  326. && spielfeld[1][i].getStyle().equals(spielfeld[2][i].getStyle())
  327. && spielfeld[2][i].getStyle().equals("-fx-base: red;"))
  328. {
  329. counter = 0;
  330. turn = (Math.random() <= 0.5) ? 1 : 2;
  331. if (turn % 2 <= 0)
  332. {
  333. zug.setText("Player1");
  334. } else
  335. {
  336. zug.setText("Player2");
  337. }
  338. Alert alert = new Alert(AlertType.CONFIRMATION);
  339. alert.setTitle("Spielstand");
  340. alert.setHeaderText("Rot hat gewonnen!");
  341. alert.setContentText("Neues Spiel?");
  342.  
  343. Optional<ButtonType> result = alert.showAndWait();
  344. if (result.get() == ButtonType.OK)
  345. {
  346.  
  347. for (int k = 0; k < 3; k++)
  348. {
  349. for (int j = 0; j < 3; j++)
  350. {
  351. spielfeld[j][k].setStyle("");
  352. }
  353. }
  354. }
  355. }
  356. }
  357.  
  358. // diagonal
  359. if (spielfeld[0][0].getStyle().equals("-fx-base: red;")
  360. && spielfeld[0][0].getStyle().equals(spielfeld[1][1].getStyle())
  361. && spielfeld[1][1].getStyle().equals(spielfeld[2][2].getStyle())
  362. && spielfeld[2][2].getStyle().equals("-fx-base: red;"))
  363. {
  364. counter = 0;
  365. turn = (Math.random() <= 0.5) ? 1 : 2;
  366. if (turn % 2 <= 0)
  367. {
  368. zug.setText("Player1");
  369. } else
  370. {
  371. zug.setText("Player2");
  372. }
  373. Alert alert = new Alert(AlertType.CONFIRMATION);
  374. alert.setTitle("Spielstand");
  375. alert.setHeaderText("Rot hat gewonnen!");
  376. alert.setContentText("Neues Spiel?");
  377.  
  378. Optional<ButtonType> result = alert.showAndWait();
  379. if (result.get() == ButtonType.OK)
  380. {
  381.  
  382. for (int k = 0; k < 3; k++)
  383. {
  384. for (int j = 0; j < 3; j++)
  385. {
  386. spielfeld[j][k].setStyle("");
  387. }
  388. }
  389. }
  390. }
  391.  
  392. if (spielfeld[0][2].getStyle().equals("-fx-base: red;")
  393. && spielfeld[0][2].getStyle().equals(spielfeld[1][1].getStyle())
  394. && spielfeld[1][1].getStyle().equals(spielfeld[2][0].getStyle())
  395. && spielfeld[2][0].getStyle().equals("-fx-base: red;"))
  396. {
  397. counter = 0;
  398. turn = (Math.random() <= 0.5) ? 1 : 2;
  399. if (turn % 2 <= 0)
  400. {
  401. zug.setText("Player1");
  402. } else
  403. {
  404. zug.setText("Player2");
  405. }
  406. Alert alert = new Alert(AlertType.CONFIRMATION);
  407. alert.setTitle("Spielstand");
  408. alert.setHeaderText("Rot hat gewonnen!");
  409. alert.setContentText("Neues Spiel?");
  410.  
  411. Optional<ButtonType> result = alert.showAndWait();
  412. if (result.get() == ButtonType.OK)
  413. {
  414.  
  415. for (int k = 0; k < 3; k++)
  416. {
  417. for (int j = 0; j < 3; j++)
  418. {
  419. spielfeld[j][k].setStyle("");
  420. }
  421. }
  422. }
  423. }
  424. }
  425. // Zugnummer
  426. counter++;
  427.  
  428. // Unentschieden, wenn der Zug counter 9 erreicht und keiner
  429. // gewonnen hat, erscheint der uneentschieden dialog mit den
  430. // fleichen optionen wie der gewonnen dialog
  431. if (counter == 9)
  432. {
  433. counter = 0;
  434. turn = (Math.random() <= 0.5) ? 1 : 2;
  435. if (turn % 2 <= 0)
  436. {
  437. zug.setText("Player1");
  438. } else
  439. {
  440. zug.setText("Player2");
  441. }
  442. Alert alert = new Alert(AlertType.CONFIRMATION);
  443. alert.setTitle("Spielstand");
  444. alert.setHeaderText("Unentschieden");
  445. alert.setContentText("Neues Spiel?");
  446.  
  447. Optional<ButtonType> result = alert.showAndWait();
  448. if (result.get() == ButtonType.OK)
  449. {
  450. counter = 0;
  451. turn = (Math.random() <= 0.5) ? 1 : 2;
  452. if (turn % 2 <= 0)
  453. {
  454. zug.setText("Player1");
  455. } else
  456. {
  457. zug.setText("Player2");
  458. }
  459. for (int k = 0; k < 3; k++)
  460. {
  461. for (int j = 0; j < 3; j++)
  462. {
  463. spielfeld[j][k].setStyle("");
  464. }
  465. }
  466. }
  467. }
  468. }
  469. // Falls das gewaehlte feld nicht frei sein sollte, wird der Spieler
  470. // aufgefordert ein anderes feld zu wählen, counter und turn werden
  471. // nicht erhöht
  472. else
  473. {
  474. System.out.println("Das Feld ist bereits belegt, bitte wählen Sie ein anderes");
  475. }
  476.  
  477. neuesspiel.setOnAction(new EventHandler<ActionEvent>()
  478. {
  479. // Handle methode wird fuer den reset button ueberschrieben, gleiche
  480. // funktionen wie am ende eines spiels
  481. @Override
  482. public void handle(ActionEvent event)
  483. {
  484. counter = 0;
  485. turn = (Math.random() <= 0.5) ? 1 : 2;
  486. if (turn % 2 <= 0)
  487. {
  488. zug.setText("Player1");
  489. } else
  490. {
  491. zug.setText("Player2");
  492. }
  493. for (int k = 0; k < 3; k++)
  494. {
  495. for (int j = 0; j < 3; j++)
  496. {
  497. spielfeld[j][k].setStyle("");
  498. }
  499. }
  500.  
  501. }
  502. });
  503.  
  504. login.setOnAction(new EventHandler<ActionEvent>()
  505. {
  506.  
  507. @Override
  508. public void handle(ActionEvent event)
  509. {
  510. // Create the custom dialog.
  511. Dialog<ButtonType> dialog = new Dialog<>();
  512. dialog.setTitle("Login Dialog");
  513. dialog.setHeaderText("Look, a Custom Login Dialog");
  514.  
  515. // Set the button types.
  516. ButtonType loginButtonType = new ButtonType("Login", ButtonData.OK_DONE);
  517. dialog.getDialogPane().getButtonTypes().addAll(loginButtonType, ButtonType.CANCEL);
  518.  
  519. // Create the username and password labels and fields.
  520. GridPane grid = new GridPane();
  521. grid.setHgap(10);
  522. grid.setVgap(10);
  523. grid.setPadding(new Insets(20, 150, 10, 10));
  524.  
  525. TextField username = new TextField();
  526. username.setPromptText("Username");
  527. PasswordField password = new PasswordField();
  528. password.setPromptText("Password");
  529.  
  530. grid.add(new Label("Username:"), 0, 0);
  531. grid.add(username, 1, 0);
  532. grid.add(new Label("Password:"), 0, 1);
  533. grid.add(password, 1, 1);
  534. dialog.getDialogPane().setContent(grid);
  535.  
  536. Optional<ButtonType> result = dialog.showAndWait();
  537. // System.out.println(result);
  538. if( result.get().getButtonData() == ButtonData.OK_DONE)
  539. {
  540. System.out.println( "Username: " + username.getText());
  541. System.out.println( "Psssword: " + password.getText());
  542. }
  543. else
  544. {
  545. System.out.println( "Abgebrochen");
  546.  
  547. }
  548.  
  549. }
  550. });
  551.  
  552.  
  553. info.setOnAction(new EventHandler<ActionEvent>()
  554. {
  555.  
  556. @Override
  557. public void handle(ActionEvent event)
  558. {
  559. Alert alert = new Alert(AlertType.INFORMATION);
  560. alert.setTitle("About");
  561. alert.setHeaderText("TicTacToe von Fun with Java");
  562. alert.setContentText("Maren Asbeck, Amelie Beutel, Tamara Ines Warthon, Waldemar Blum");
  563.  
  564. alert.showAndWait();
  565.  
  566. }
  567. });
  568. spielBeenden.setOnAction(new EventHandler<ActionEvent>()
  569. {
  570. // Handle methode wird fuer den beenden button mit der
  571. // schließfunktion ueberschrieben
  572. @Override
  573. public void handle(ActionEvent event)
  574. {
  575. counter = 0;
  576. turn = (Math.random() <= 0.5) ? 1 : 2;
  577. System.exit(0);
  578. }
  579. });
  580. }
  581.  
  582.  
  583. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement