Advertisement
Guest User

Untitled

a guest
Jun 24th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 13.18 KB | None | 0 0
  1. import com.kodilla.ButtonParameters;
  2. import com.kodilla.MoveResult;
  3. import com.kodilla.PawnFactory;
  4. import javafx.application.Application;
  5. import javafx.event.ActionEvent;
  6. import javafx.event.Event;
  7. import javafx.event.EventHandler;
  8. import javafx.geometry.Insets;
  9. import javafx.geometry.Pos;
  10. import javafx.scene.Node;
  11. import javafx.scene.control.Button;
  12. import javafx.scene.image.Image;
  13. import javafx.scene.image.ImageView;
  14. import javafx.scene.input.MouseEvent;
  15. import javafx.scene.layout.*;
  16. import javafx.stage.Stage;
  17. import javafx.scene.Scene;
  18. import javafx.scene.paint.Color;
  19. import java.util.ArrayList;
  20. import java.util.HashMap;
  21. import java.util.List;
  22. import java.util.Random;
  23.  
  24. public class Checkers extends Application {
  25.  
  26. private List<Button> blackButtons = PawnFactory.createButtons(12,true);
  27. private List<Button> whiteButtons = PawnFactory.createButtons(12,false);
  28.  
  29. private Image imageback = new Image("images/board.jpg");
  30. private ImageView imageWhitePawn = new ImageView("images/white_pawn.png");
  31. private Image imageBlackPawnB = new Image("images/black_pawn.png");
  32. private Image imageBlackPawnW = new Image("images/white_pawn.png");
  33. private boolean isMoveBlack = false;
  34. private int whichColumn;
  35. private int whichRow;
  36. private int column;
  37. private int row;
  38. private int moveComputerLeftRight;
  39. private int whichComputerPawn;
  40. private String whichButton;
  41. private int whichColumnComputer;
  42. private int whichRowComputer;
  43. String nameButton;
  44. private boolean noMovePawn;
  45.  
  46. public static void main(String[] args) {
  47. launch(args);
  48. }
  49.  
  50. @Override
  51. public void start(Stage primaryStage) throws Exception {
  52. BackgroundSize backgroundSize = new BackgroundSize(725, 610, true, true, true, false);
  53. BackgroundImage backgroundImage = new BackgroundImage(imageback, BackgroundRepeat.NO_REPEAT, BackgroundRepeat.NO_REPEAT, BackgroundPosition.CENTER, backgroundSize);
  54. Background background = new Background(backgroundImage);
  55.  
  56.  
  57. GridPane grid = new GridPane();
  58. //grid.setAlignment(Pos.CENTER_RIGHT);
  59. grid.setPadding(new Insets(0, 0, 0, 0));
  60. grid.setBackground(background);
  61.  
  62. for (int i = 0; i < 12; i++) {
  63. ColumnConstraints column = new ColumnConstraints(60);
  64. grid.getColumnConstraints().add(column);
  65. }
  66.  
  67. for (int i = 0; i < 10; i++) {
  68. RowConstraints row = new RowConstraints(60);
  69. grid.getRowConstraints().add(row);
  70. }
  71.  
  72.  
  73. grid.getColumnConstraints().add(new ColumnConstraints(120));
  74. grid.getRowConstraints().add(new RowConstraints(120));
  75.  
  76. blackButtons.forEach(button-> buttonSetActionBlack(button, grid, true));
  77. whiteButtons.forEach(button-> buttonSetActionWhite(button, grid, false));
  78.  
  79.  
  80. Button buttonB1 = blackButtons.get(0);
  81. Button buttonB2 = blackButtons.get(1);
  82. Button buttonB3 = blackButtons.get(2);
  83. Button buttonB4 = blackButtons.get(3);
  84. Button buttonB5 = blackButtons.get(4);
  85. Button buttonB6 = blackButtons.get(5);
  86. Button buttonB7 = blackButtons.get(6);
  87. Button buttonB8 = blackButtons.get(7);
  88. Button buttonB9 = blackButtons.get(8);
  89. Button buttonB10 = blackButtons.get(9);
  90. Button buttonB11 = blackButtons.get(10);
  91. Button buttonB12 = blackButtons.get(11);
  92.  
  93.  
  94. grid.add(buttonB1, 1, 1);
  95. grid.add(buttonB2, 3, 1);
  96. grid.add(buttonB3, 5, 1);
  97. grid.add(buttonB4, 7, 1);
  98. grid.add(buttonB5, 2, 2);
  99. grid.add(buttonB6, 4, 2);
  100. grid.add(buttonB7, 6, 2);
  101. grid.add(buttonB8, 8, 2);
  102. grid.add(buttonB9, 1, 3);
  103. grid.add(buttonB10, 3, 3);
  104. grid.add(buttonB11, 5, 3);
  105. grid.add(buttonB12, 7, 3);
  106.  
  107. Button buttonW1 = whiteButtons.get(0);
  108. Button buttonW2 = whiteButtons.get(1);
  109. Button buttonW3 = whiteButtons.get(2);
  110. Button buttonW4 = whiteButtons.get(3);
  111. Button buttonW5 = whiteButtons.get(4);
  112. Button buttonW6 = whiteButtons.get(5);
  113. Button buttonW7 = whiteButtons.get(6);
  114. Button buttonW8 = whiteButtons.get(7);
  115. Button buttonW9 = whiteButtons.get(8);
  116. Button buttonW10 = whiteButtons.get(9);
  117. Button buttonW11 = whiteButtons.get(10);
  118. Button buttonW12 = whiteButtons.get(11);
  119.  
  120. grid.add(buttonW1, 2, 6);
  121. grid.add(buttonW2, 4, 6);
  122. grid.add(buttonW3, 6, 6);
  123. grid.add(buttonW4, 8, 6);
  124. grid.add(buttonW5, 1, 7);
  125. grid.add(buttonW6, 3, 7);
  126. grid.add(buttonW7, 5, 7);
  127. grid.add(buttonW8, 7, 7);
  128. grid.add(buttonW9, 2, 8);
  129. grid.add(buttonW10, 4, 8);
  130. grid.add(buttonW11, 6, 8);
  131. grid.add(buttonW12, 8, 8);
  132.  
  133.  
  134. Scene scene = new Scene(grid, 725, 610, Color.BLACK);
  135.  
  136.  
  137. primaryStage.setTitle("Checkers");
  138. primaryStage.setScene(scene);
  139. //primaryStage.setResizable(false);
  140. primaryStage.show();
  141.  
  142. }
  143.  
  144. private void computerMove(GridPane grid) {
  145. makeMove( false);
  146.  
  147. boolean correctMove = false;
  148.  
  149. if (!noMovePawn) {
  150.  
  151. do {
  152. correctMove = checkIsKillPossibleAndKillBeforeMove(grid);
  153. moveComputerRandom();
  154. if (moveComputerLeftRight == 0) {
  155. correctMove = moveComputerLeft(grid, blackButtons.get(whichComputerPawn - 1));
  156. } else {
  157. correctMove = moveComputerRight(grid, blackButtons.get(whichComputerPawn - 1));
  158. }
  159. } while (!correctMove);
  160. }
  161. }
  162.  
  163. private boolean checkIsKillPossibleAndKillBeforeMove(GridPane grid) {
  164. boolean isPossibleKill = false;
  165. for(int i = 0; i < blackButtons.size(); i++) {
  166.  
  167. Node isFirstEmptyLeft = getNodeFromGridPane(grid, whichColumnComputer - 1, whichRowComputer + 1);
  168. Node isSecondEmptyLeft = getNodeFromGridPane(grid, whichColumnComputer - 2, whichRowComputer + 2);
  169.  
  170. Button pown = (Button) isFirstEmptyLeft;
  171.  
  172. if(isFirstEmptyLeft != null && isSecondEmptyLeft == null && whiteButtons.contains(pown)) {
  173. System.out.println("BICIE!");
  174. isPossibleKill = true;
  175. break;
  176. }
  177. }
  178.  
  179. return false;
  180. }
  181.  
  182. public void makeMove(boolean isBlackPawn) {
  183.  
  184.  
  185. if (!isBlackPawn && !isMoveBlack) {
  186. System.out.println("Wykonał ruch białymi");
  187.  
  188. isMoveBlack = true;
  189. } else if (isBlackPawn && isMoveBlack) {
  190. System.out.println("Wykonał ruch czarnymi");
  191. isMoveBlack = false;
  192. } else {
  193. System.out.println("Błędny pionek");
  194. }
  195. }
  196.  
  197.  
  198. public void moveComputerRandom() {
  199.  
  200. if (isMoveBlack) {
  201. Random random = new Random();
  202.  
  203. whichComputerPawn = random.nextInt(12)+1;
  204. moveComputerLeftRight = random.nextInt(2);
  205.  
  206. }
  207. }
  208.  
  209. public boolean moveComputerLeft(GridPane grid, Button button) {
  210.  
  211. whichColumnComputer = (int) button.getLayoutX() / 60;
  212. whichRowComputer = (int) button.getLayoutY() / 60;
  213.  
  214. Node isEmptyLeft = getNodeFromGridPane(grid, whichColumnComputer - 1, whichRowComputer + 1);
  215.  
  216. if (isEmptyLeft == null && whichColumnComputer - 1 <= 8 && whichRowComputer + 1 <= 8
  217. && whichColumnComputer - 1 > 0 && whichRowComputer + 1 > 0) {
  218. grid.getChildren().remove(button);
  219. grid.add(button, whichColumnComputer - 1, whichRowComputer + 1);
  220.  
  221. checkIsKillPossibleAndKill(whichColumnComputer, whichRowComputer, grid, button);
  222.  
  223. return true;
  224. }
  225. return false;
  226.  
  227. }
  228.  
  229. public boolean moveComputerRight(GridPane grid, Button button) {
  230.  
  231. whichColumnComputer = (int) button.getLayoutX() / 60;
  232. whichRowComputer = (int) button.getLayoutY() / 60;
  233.  
  234. Node isEmptyRight = getNodeFromGridPane(grid, whichColumnComputer + 1, whichRowComputer + 1);
  235.  
  236. if (isEmptyRight == null && whichColumnComputer + 1 <= 8 && whichRowComputer + 1 <= 8
  237. && whichColumnComputer + 1 > 0 && whichRowComputer + 1 > 0) {
  238. grid.getChildren().remove(button);
  239. grid.add(button, whichColumnComputer + 1, whichRowComputer + 1);
  240.  
  241. checkIsKillPossibleAndKill(whichColumnComputer, whichRowComputer, grid, button);
  242.  
  243. return true;
  244. }
  245. return false;
  246. }
  247.  
  248. private void checkIsKillPossibleAndKill(int whichColumnComputer, int whichRowComputer, GridPane grid, Button button) {
  249. Node isFirstEmptyLeft = getNodeFromGridPane(grid, whichColumnComputer - 1, whichRowComputer + 1);
  250. Node isSecondEmptyLeft = getNodeFromGridPane(grid, whichColumnComputer - 2, whichRowComputer + 2);
  251.  
  252. Button pown = (Button) isFirstEmptyLeft;
  253.  
  254. if(isFirstEmptyLeft != null && isSecondEmptyLeft == null && whiteButtons.contains(pown)) {
  255. System.out.println("BICIE!");
  256. }
  257.  
  258. }
  259.  
  260.  
  261. public boolean mouseMovedReleased(MouseEvent event,GridPane grid, Button button, boolean isBlackPawn) {
  262.  
  263. double sceneX;
  264. double sceneY;
  265. sceneX = event.getSceneX();
  266. sceneY = event.getSceneY();
  267. whichColumn = (int) sceneX / 60;
  268. whichRow = (int) sceneY / 60;
  269.  
  270. if (!isBlackPawn && !isMoveBlack) {
  271. System.out.println("Wykonał ruch białymi");
  272.  
  273. isMoveBlack = true;
  274. } else if (isBlackPawn && isMoveBlack) {
  275. System.out.println("Wykonał ruch czarnymi");
  276. isMoveBlack = false;
  277. } else {
  278. System.out.println("Błędny pionek");
  279. }
  280.  
  281. Node isEmpty = getNodeFromGridPane(grid,whichColumn,whichRow);
  282. if (isEmpty == null && whichColumn <=8 && whichRow <=8 && whichColumn >0 && whichRow >0) {
  283. grid.getChildren().remove(button);
  284. grid.add(button,whichColumn, whichRow);
  285. //grid.add(button,whichColumn+1,whichRow+1);
  286.  
  287.  
  288. }
  289. else if (isEmpty == null && whichColumn >=8 && whichRow >=8) {
  290. grid.getChildren().remove(button);
  291. grid.add(button,column,row);
  292. return noMovePawn = true;
  293. }
  294.  
  295. else {
  296. grid.getChildren().remove(button);
  297. grid.add(button,column,row);
  298. return noMovePawn = true;
  299.  
  300. }
  301.  
  302. if (whichColumn == column && whichRow == row) {
  303. return noMovePawn = true;
  304.  
  305. }
  306. else {
  307. return noMovePawn = false;
  308. }
  309.  
  310. }
  311.  
  312. public void mouseMovedPressed(MouseEvent event, Button button) {
  313. double sceneX;
  314. double sceneY;
  315. sceneX = event.getSceneX();
  316. sceneY = event.getSceneY();
  317. whichColumn = (int) sceneX / 60;
  318. whichRow = (int) sceneY / 60;
  319. ButtonParameters buttonParameters = new ButtonParameters(whichColumn,whichRow);
  320. HashMap<Button,ButtonParameters> buttonParametersHashMap = new HashMap<>();
  321. buttonParametersHashMap.put(button,buttonParameters);
  322. ButtonParameters parameters = buttonParametersHashMap.get(button);
  323. column = parameters.getColumn();
  324. row = parameters.getRow();
  325. }
  326.  
  327.  
  328. private Node getNodeFromGridPane(GridPane grid, int col, int row) {
  329. for (Node node : grid.getChildren()) {
  330. if (GridPane.getColumnIndex(node) == col && GridPane.getRowIndex(node) == row) {
  331.  
  332. return node;
  333. }
  334. }
  335. return null;
  336. }
  337. private void buttonSetActionWhite(Button button, GridPane grid, boolean isBlackPawn) {
  338. // button.setOnAction((e) -> {
  339. // makeMove(true);
  340. // });
  341. button.setOnMousePressed((event) -> {
  342. mouseMovedPressed(event, button);
  343. });
  344.  
  345. button.setOnMouseReleased((event) -> {
  346. mouseMovedReleased(event, grid, button,isBlackPawn);
  347. if(!isBlackPawn) {
  348. computerMove(grid);
  349. }
  350. });
  351. }
  352.  
  353. private void buttonSetActionBlack(Button button, GridPane grid, boolean isBlackPawn) {
  354. // button.setOnAction((e) -> {
  355. // makeMove(true);
  356. // });
  357.  
  358.  
  359. button.setOnMouseEntered(event -> {
  360. mouseMovedEntered(event,button);
  361. });
  362.  
  363. }
  364. private void killPawnLeft() {
  365.  
  366.  
  367. }
  368.  
  369. private void killPawnRight() {
  370.  
  371.  
  372. }
  373.  
  374. public void mouseMovedEntered(MouseEvent event, Button button) {
  375. /* double sceneX;
  376. double sceneY;
  377. sceneX = event.getSceneX();
  378. sceneY = event.getSceneY();
  379. whichColumn = (int) sceneX / 60;
  380. whichRow = (int) sceneY / 60;
  381. ButtonParameters buttonParameters = new ButtonParameters(whichColumn,whichRow);
  382. HashMap<Button,ButtonParameters> buttonParametersHashMap = new HashMap<>();
  383. buttonParametersHashMap.put(button,buttonParameters);
  384. ButtonParameters parameters = buttonParametersHashMap.get(button);
  385. column = parameters.getColumn();
  386. row = parameters.getRow(); */
  387. System.out.println("jestem nad pionkiem");
  388. }
  389.  
  390.  
  391. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement