PageRenderTime 57ms CodeModel.GetById 24ms RepoModel.GetById 1ms app.codeStats 0ms

/src/control/SquareControl.java

https://gitlab.com/matheus0510/Chess
Java | 850 lines | 757 code | 93 blank | 0 comment | 216 complexity | 4a73abb03893ac9bc6c4f0c81f7f3939 MD5 | raw file
  1. package control;
  2. import java.awt.Color;
  3. import java.util.ArrayList;
  4. import java.awt.Point;
  5. import model.Peca;
  6. import model.Torre;
  7. import model.Square;
  8. import model.Square.SquareEventListener;
  9. import model.outOfPossibleSquaresException;
  10. public class SquareControl implements SquareEventListener {
  11. public static final int ROW_NUMBER = 8;
  12. public static final int COL_NUMBER = 8;
  13. public static final Color DEFAULT_COLOR_ONE = Color.WHITE;
  14. public static final Color DEFAULT_COLOR_TWO = Color.GRAY;
  15. public static final Color DEFAULT_COLOR_HOVER = Color.BLUE;
  16. public static final Color DEFAULT_COLOR_SELECTED = Color.GREEN;
  17. public static final Color DEFAULT_COLOR_MOVE = Color.CYAN;
  18. public static final Square EMPTY_SQUARE = null;
  19. private Color colorOne;
  20. private Color colorTwo;
  21. private Color colorHover;
  22. private Color colorSelected;
  23. private Color colorMove;
  24. private Square selectedSquare;
  25. private ArrayList<Square> squareList;
  26. private ArrayList<Square> possibleSquares;
  27. public SquareControl() {
  28. this(DEFAULT_COLOR_ONE, DEFAULT_COLOR_TWO, DEFAULT_COLOR_HOVER,
  29. DEFAULT_COLOR_SELECTED, DEFAULT_COLOR_MOVE);
  30. }
  31. public SquareControl(Color colorOne, Color colorTwo, Color colorHover,
  32. Color colorSelected, Color colorMove) {
  33. this.colorOne = colorOne;
  34. this.colorTwo = colorTwo;
  35. this.colorHover = colorHover;
  36. this.colorSelected = colorSelected;
  37. this.colorMove = colorMove;
  38. this.squareList = new ArrayList<>();
  39. this.possibleSquares = new ArrayList<>();
  40. createSquares();
  41. }
  42. public void resetColor(Square square) {
  43. int index = this.squareList.indexOf(square);
  44. int row = index / COL_NUMBER;
  45. int col = index % COL_NUMBER;
  46. square.setColor(getGridColor(row, col));
  47. }
  48. @Override
  49. public void onHoverEvent(Square square) {
  50. System.out.println("x=" + square.getPosition().x + " y=" + square.getPosition().y);
  51. square.setColor(this.colorHover);
  52. }
  53. @Override
  54. public void onSelectEvent(Square square) throws outOfPossibleSquaresException{
  55. if (haveSelectedCellPanel()) {
  56. if(!possibleSquares.contains(square) && !this.selectedSquare.equals(square))
  57. {
  58. throw new outOfPossibleSquaresException("Movimentação não diponível!");
  59. }
  60. if (!this.selectedSquare.equals(square)) {
  61. moveContentOfSelectedSquare(square);
  62. } else {
  63. unselectSquare(square);
  64. }
  65. } else {
  66. selectSquare(square);
  67. }
  68. }
  69. @Override
  70. public void onOutEvent(Square square) {
  71. if (this.selectedSquare != square && !possibleSquares.contains(square) ) {
  72. resetColor(square);
  73. }else {
  74. if(this.selectedSquare == square)
  75. square.setColor(this.colorSelected);
  76. else
  77. square.setColor(Color.CYAN);
  78. }
  79. }
  80. public Square getSquare(int row, int col) {
  81. return this.squareList.get((row * COL_NUMBER) + col);
  82. }
  83. public ArrayList<Square> getSquareList() {
  84. return this.squareList;
  85. }
  86. public Color getGridColor(int row, int col) {
  87. if ((row + col) % 2 == 0) {
  88. return this.colorOne;
  89. } else {
  90. return this.colorTwo;
  91. }
  92. }
  93. private void addSquare() {
  94. Square square = new Square();
  95. this.squareList.add(square);
  96. resetColor(square);
  97. resetPosition(square);
  98. square.setSquareEventListener(this);
  99. }
  100. private void resetPosition(Square square) {
  101. int index = this.squareList.indexOf(square);
  102. int row = index / COL_NUMBER;
  103. int col = index % COL_NUMBER;
  104. square.getPosition().setLocation(row, col);
  105. }
  106. private boolean haveSelectedCellPanel() {
  107. return this.selectedSquare != EMPTY_SQUARE;
  108. }
  109. private void moveContentOfSelectedSquare(Square square) {
  110. square.setPeca(this.selectedSquare.getPeca());
  111. this.selectedSquare.removePeca();
  112. unselectSquare(square);
  113. }
  114. private void selectSquare(Square square) {
  115. if (square.haveImagePath()) {
  116. this.selectedSquare = square;
  117. this.selectedSquare.setColor(this.colorSelected);
  118. this.showPossibleMoves(this.selectedSquare);
  119. }
  120. }
  121. private void unselectSquare(Square square) {
  122. resetColor(this.selectedSquare);
  123. for(int i = 0; i<possibleSquares.size(); i++){
  124. resetColor(possibleSquares.get(i));
  125. }
  126. possibleSquares.clear();
  127. this.selectedSquare = EMPTY_SQUARE;
  128. }
  129. private void createSquares() {
  130. for (int i = 0; i < (ROW_NUMBER * COL_NUMBER); i++) {
  131. addSquare();
  132. }
  133. }
  134. private void showPossibleMovesPeaoB(Square square) {
  135. ArrayList<Point> movesPeao = square.getPeca().getMoveB(square.getPosition().x, square.getPosition().y);
  136. for (int i = 0; i <movesPeao.size(); i++) {
  137. Square squares = getSquare(movesPeao.get(i).x, movesPeao.get(i).y);
  138. Square squareEsquerdo = getSquare(square.getPosition().x+1, square.getPosition().y+1);
  139. Square squareDireito = getSquare(square.getPosition().x+1, square.getPosition().y-1);
  140. Square squareF = getSquare(square.getPosition().x+1, square.getPosition().y);
  141. if( ( square.getPosition().y != 0 && squares == squareDireito && squareDireito.haveImagePath() )
  142. || (square.getPosition().y != 7 && squares == squareEsquerdo && squareEsquerdo.haveImagePath() ) ) {
  143. if(squares.getPeca().getImagePath().contains("White")) {
  144. squares.setColor(this.colorMove);
  145. possibleSquares.add(squares);
  146. }
  147. }
  148. if(squares != squareDireito && squares != squareEsquerdo) {
  149. if(!squares.haveImagePath() && !squareF.haveImagePath()) {
  150. squares.setColor(this.colorMove);
  151. possibleSquares.add(squares);
  152. }
  153. }
  154. }
  155. }
  156. private void showPossibleMovesPeaoW(Square square) {
  157. ArrayList<Point> movesPeao = square.getPeca().getMoveW(square.getPosition().x, square.getPosition().y);
  158. for (int i = 0; i <movesPeao.size(); i++) {
  159. Square squares = getSquare(movesPeao.get(i).x, movesPeao.get(i).y);
  160. Square squareEsquerdo = getSquare(square.getPosition().x-1, square.getPosition().y-1);
  161. Square squareDireito = getSquare(square.getPosition().x-1, square.getPosition().y+1);
  162. Square squareF = getSquare(square.getPosition().x-1, square.getPosition().y);
  163. if( ( square.getPosition().y != 7 && squares == squareDireito && squareDireito.haveImagePath() )
  164. || (square.getPosition().y != 0 && squares == squareEsquerdo && squareEsquerdo.haveImagePath() ) ) {
  165. if(squares.getPeca().getImagePath().contains("Black")) {
  166. squares.setColor(this.colorMove);
  167. possibleSquares.add(squares);
  168. }
  169. }
  170. if(squares != squareDireito && squares != squareEsquerdo) {
  171. if(!squares.haveImagePath() && !squareF.haveImagePath()) {
  172. squares.setColor(this.colorMove);
  173. possibleSquares.add(squares);
  174. }
  175. }
  176. }
  177. }
  178. private void showPossibleMovesRainha(Square square) {
  179. ArrayList<Point> movesRainha = square.getPeca().getMove(square.getPosition().x, square.getPosition().y);
  180. int i = 0;
  181. Square squares = getSquare(movesRainha.get(i).x, movesRainha.get(i).y);
  182. while( squares.getPosition().x == square.getPosition().x && squares.getPosition().y > square.getPosition().y) {
  183. if(squares.haveImagePath())
  184. {
  185. System.out.println(squares.getPosition().x + " POSIÇÃO DO BREAK DIREITA " + squares.getPosition().y);
  186. if(square.getPeca().getImagePath().contains("White")) {
  187. if(squares.getPeca().getImagePath().contains("Black")) {
  188. squares.setColor(this.colorMove);
  189. possibleSquares.add(squares);
  190. }
  191. }
  192. if(square.getPeca().getImagePath().contains("Black")) {
  193. if(squares.getPeca().getImagePath().contains("White")) {
  194. squares.setColor(this.colorMove);
  195. possibleSquares.add(squares);
  196. }
  197. }
  198. while(squares.getPosition().x == square.getPosition().x && squares.getPosition().y > square.getPosition().y) {
  199. i++;
  200. squares = getSquare(movesRainha.get(i).x, movesRainha.get(i).y);
  201. }
  202. break;
  203. }
  204. else {
  205. System.out.println(squares.getPosition().x + " POSIÇÃO QUE PINTA DIREITA " + squares.getPosition().y);
  206. squares.setColor(this.colorMove);
  207. possibleSquares.add(squares);
  208. }
  209. i++;
  210. squares = getSquare(movesRainha.get(i).x, movesRainha.get(i).y);
  211. }
  212. System.out.println("I = " + i);
  213. squares = getSquare(movesRainha.get(i).x, movesRainha.get(i).y);
  214. while( squares.getPosition().x == square.getPosition().x && squares.getPosition().y < square.getPosition().y) {
  215. if(squares.haveImagePath())
  216. {
  217. System.out.println(squares.getPosition().x + " POSIÇÃO DO BREAK ESQUERDA " + squares.getPosition().y);
  218. if(square.getPeca().getImagePath().contains("White")) {
  219. if(squares.getPeca().getImagePath().contains("Black")) {
  220. squares.setColor(this.colorMove);
  221. possibleSquares.add(squares);
  222. }
  223. }
  224. if(square.getPeca().getImagePath().contains("Black")) {
  225. if(squares.getPeca().getImagePath().contains("White")) {
  226. squares.setColor(this.colorMove);
  227. possibleSquares.add(squares);
  228. }
  229. }
  230. while(squares.getPosition().x == square.getPosition().x && squares.getPosition().y < square.getPosition().y) {
  231. i++;
  232. squares = getSquare(movesRainha.get(i).x, movesRainha.get(i).y);
  233. }
  234. break;
  235. }
  236. else {
  237. System.out.println(squares.getPosition().x + " POSIÇÃO QUE PINTA ESQUERDA " + squares.getPosition().y);
  238. squares.setColor(this.colorMove);
  239. possibleSquares.add(squares);
  240. }
  241. i++;
  242. squares = getSquare(movesRainha.get(i).x, movesRainha.get(i).y);
  243. }
  244. squares = getSquare(movesRainha.get(i).x, movesRainha.get(i).y);
  245. while( squares.getPosition().y == square.getPosition().y && squares.getPosition().x > square.getPosition().x) {
  246. if(squares.haveImagePath())
  247. {
  248. System.out.println(squares.getPosition().x + " POSIÇÃO DO BREAK BAIXO " + squares.getPosition().y);
  249. if(square.getPeca().getImagePath().contains("White")) {
  250. if(squares.getPeca().getImagePath().contains("Black")) {
  251. squares.setColor(this.colorMove);
  252. possibleSquares.add(squares);
  253. }
  254. }
  255. if(square.getPeca().getImagePath().contains("Black")) {
  256. if(squares.getPeca().getImagePath().contains("White")) {
  257. squares.setColor(this.colorMove);
  258. possibleSquares.add(squares);
  259. }
  260. }
  261. while(squares.getPosition().y == square.getPosition().y && squares.getPosition().x > square.getPosition().x) {
  262. i++;
  263. squares = getSquare(movesRainha.get(i).x, movesRainha.get(i).y);
  264. }
  265. break;
  266. }
  267. else {
  268. System.out.println(squares.getPosition().x + " POSIÇÃO QUE PINTA BAIXO " + squares.getPosition().y);
  269. squares.setColor(this.colorMove);
  270. possibleSquares.add(squares);
  271. }
  272. i++;
  273. squares = getSquare(movesRainha.get(i).x, movesRainha.get(i).y);
  274. }
  275. squares = getSquare(movesRainha.get(i).x, movesRainha.get(i).y);
  276. while( squares.getPosition().y == square.getPosition().y && squares.getPosition().x < square.getPosition().x) {
  277. if(squares.haveImagePath())
  278. {
  279. System.out.println(squares.getPosition().x + " POSIÇÃO DO BREAK CIMA " + squares.getPosition().y);
  280. if(square.getPeca().getImagePath().contains("White")) {
  281. if(squares.getPeca().getImagePath().contains("Black")) {
  282. squares.setColor(this.colorMove);
  283. possibleSquares.add(squares);
  284. }
  285. }
  286. if(square.getPeca().getImagePath().contains("Black")) {
  287. if(squares.getPeca().getImagePath().contains("White")) {
  288. squares.setColor(this.colorMove);
  289. possibleSquares.add(squares);
  290. }
  291. }
  292. while( squares.getPosition().y == square.getPosition().y && squares.getPosition().x < square.getPosition().x) {
  293. i++;
  294. squares = getSquare(movesRainha.get(i).x, movesRainha.get(i).y);
  295. }
  296. break;
  297. }
  298. else {
  299. System.out.println(squares.getPosition().x + " POSIÇÃO QUE PINTA CIMA " + squares.getPosition().y);
  300. squares.setColor(this.colorMove);
  301. possibleSquares.add(squares);
  302. }
  303. i++;
  304. squares = getSquare(movesRainha.get(i).x, movesRainha.get(i).y);
  305. }
  306. squares = getSquare(movesRainha.get(i).x, movesRainha.get(i).y);
  307. while(squares.getPosition().x > square.getPosition().x && squares.getPosition().y > square.getPosition().y) {
  308. if(squares.haveImagePath())
  309. {
  310. System.out.println(squares.getPosition().x + " POSIÇÃO DO BREAK DIREITA " + squares.getPosition().y);
  311. if(square.getPeca().getImagePath().contains("White")) {
  312. if(squares.getPeca().getImagePath().contains("Black")) {
  313. squares.setColor(this.colorMove);
  314. possibleSquares.add(squares);
  315. }
  316. }
  317. if(square.getPeca().getImagePath().contains("Black")) {
  318. if(squares.getPeca().getImagePath().contains("White")) {
  319. squares.setColor(this.colorMove);
  320. possibleSquares.add(squares);
  321. }
  322. }
  323. while(squares.getPosition().x > square.getPosition().x && squares.getPosition().y > square.getPosition().y) {
  324. i++;
  325. squares = getSquare(movesRainha.get(i).x, movesRainha.get(i).y);
  326. }
  327. break;
  328. }
  329. else {
  330. System.out.println(squares.getPosition().x + " POSIÇÃO QUE PINTA DIREITA " + squares.getPosition().y);
  331. squares.setColor(this.colorMove);
  332. possibleSquares.add(squares);
  333. }
  334. i++;
  335. squares = getSquare(movesRainha.get(i).x, movesRainha.get(i).y);
  336. }
  337. squares = getSquare(movesRainha.get(i).x, movesRainha.get(i).y);
  338. while(squares.getPosition().x > square.getPosition().x && squares.getPosition().y < square.getPosition().y) {
  339. if(squares.haveImagePath())
  340. {
  341. System.out.println(squares.getPosition().x + " POSIÇÃO DO BREAK ESQUERDA " + squares.getPosition().y);
  342. if(square.getPeca().getImagePath().contains("White")) {
  343. if(squares.getPeca().getImagePath().contains("Black")) {
  344. squares.setColor(this.colorMove);
  345. possibleSquares.add(squares);
  346. }
  347. }
  348. if(square.getPeca().getImagePath().contains("Black")) {
  349. if(squares.getPeca().getImagePath().contains("White")) {
  350. squares.setColor(this.colorMove);
  351. possibleSquares.add(squares);
  352. }
  353. }
  354. while(squares.getPosition().x > square.getPosition().x && squares.getPosition().y < square.getPosition().y) {
  355. i++;
  356. squares = getSquare(movesRainha.get(i).x, movesRainha.get(i).y);
  357. }
  358. break;
  359. }
  360. else {
  361. System.out.println(squares.getPosition().x + " POSIÇÃO QUE PINTA ESQUERDA " + squares.getPosition().y);
  362. squares.setColor(this.colorMove);
  363. possibleSquares.add(squares);
  364. }
  365. i++;
  366. squares = getSquare(movesRainha.get(i).x, movesRainha.get(i).y);
  367. }
  368. squares = getSquare(movesRainha.get(i).x, movesRainha.get(i).y);
  369. while(squares.getPosition().x < square.getPosition().x && squares.getPosition().y > square.getPosition().y ) {
  370. if(squares.haveImagePath())
  371. {
  372. System.out.println(squares.getPosition().x + " POSIÇÃO DO BREAK ESQUERDA " + squares.getPosition().y);
  373. if(square.getPeca().getImagePath().contains("White")) {
  374. if(squares.getPeca().getImagePath().contains("Black")) {
  375. squares.setColor(this.colorMove);
  376. possibleSquares.add(squares);
  377. }
  378. }
  379. if(square.getPeca().getImagePath().contains("Black")) {
  380. if(squares.getPeca().getImagePath().contains("White")) {
  381. squares.setColor(this.colorMove);
  382. possibleSquares.add(squares);
  383. }
  384. }
  385. while(squares.getPosition().x < square.getPosition().x && squares.getPosition().y > square.getPosition().y ) {
  386. i++;
  387. squares = getSquare(movesRainha.get(i).x, movesRainha.get(i).y);
  388. }
  389. break;
  390. }
  391. else {
  392. System.out.println(squares.getPosition().x + " POSIÇÃO QUE PINTA ESQUERDA " + squares.getPosition().y);
  393. squares.setColor(this.colorMove);
  394. possibleSquares.add(squares);
  395. }
  396. i++;
  397. squares = getSquare(movesRainha.get(i).x, movesRainha.get(i).y);
  398. }
  399. squares = getSquare(movesRainha.get(i).x, movesRainha.get(i).y);
  400. while( squares.getPosition().x < square.getPosition().x && squares.getPosition().y < square.getPosition().y ) {
  401. if(squares.haveImagePath())
  402. {
  403. System.out.println(squares.getPosition().x + " POSIÇÃO DO BREAK DA ESQUERDA " + squares.getPosition().y);
  404. if(square.getPeca().getImagePath().contains("White")) {
  405. if(squares.getPeca().getImagePath().contains("Black")) {
  406. squares.setColor(this.colorMove);
  407. possibleSquares.add(squares);
  408. }
  409. }
  410. if(square.getPeca().getImagePath().contains("Black")) {
  411. if(squares.getPeca().getImagePath().contains("White")) {
  412. squares.setColor(this.colorMove);
  413. possibleSquares.add(squares);
  414. }
  415. }
  416. break;
  417. }
  418. else {
  419. System.out.println(squares.getPosition().x + " POSIÇÃO QUE PINTA ESQUERDA " + squares.getPosition().y);
  420. squares.setColor(this.colorMove);
  421. possibleSquares.add(squares);
  422. }
  423. i++;
  424. squares = getSquare(movesRainha.get(i).x, movesRainha.get(i).y);
  425. }
  426. }
  427. private void showPossibleMovesRei(Square square) {
  428. ArrayList<Point> movesRei = square.getPeca().getMove(square.getPosition().x, square.getPosition().y);
  429. for (int i = 0; i <movesRei.size(); i++) {
  430. Square squares = getSquare(movesRei.get(i).x, movesRei.get(i).y);
  431. if(square.getPeca().getImagePath().contains("White")) {
  432. if(!squares.haveImagePath()) {
  433. squares.setColor(this.colorMove);
  434. possibleSquares.add(squares);
  435. }
  436. else {
  437. if(squares.getPeca().getImagePath().contains("Black")) {
  438. squares.setColor(this.colorMove);
  439. possibleSquares.add(squares);
  440. }
  441. }
  442. }
  443. if(square.getPeca().getImagePath().contains("Black")) {
  444. if(!squares.haveImagePath()) {
  445. squares.setColor(this.colorMove);
  446. possibleSquares.add(squares);
  447. }
  448. else {
  449. if(squares.getPeca().getImagePath().contains("White")) {
  450. squares.setColor(this.colorMove);
  451. possibleSquares.add(squares);
  452. }
  453. }
  454. }
  455. }
  456. }
  457. private void showPossibleMovesBispo(Square square) {
  458. ArrayList<Point> movesBispo = square.getPeca().getMove(square.getPosition().x, square.getPosition().y);
  459. int i = 0;
  460. Square squares = getSquare(movesBispo.get(i).x, movesBispo.get(i).y);
  461. while(squares.getPosition().x > square.getPosition().x && squares.getPosition().y > square.getPosition().y) {
  462. if(squares.haveImagePath())
  463. {
  464. System.out.println(squares.getPosition().x + " POSIÇÃO DO BREAK DIREITA " + squares.getPosition().y);
  465. if(square.getPeca().getImagePath().contains("White")) {
  466. if(squares.getPeca().getImagePath().contains("Black")) {
  467. squares.setColor(this.colorMove);
  468. possibleSquares.add(squares);
  469. }
  470. }
  471. if(square.getPeca().getImagePath().contains("Black")) {
  472. if(squares.getPeca().getImagePath().contains("White")) {
  473. squares.setColor(this.colorMove);
  474. possibleSquares.add(squares);
  475. }
  476. }
  477. while(squares.getPosition().x > square.getPosition().x && squares.getPosition().y > square.getPosition().y) {
  478. i++;
  479. squares = getSquare(movesBispo.get(i).x, movesBispo.get(i).y);
  480. }
  481. break;
  482. }
  483. else {
  484. System.out.println(squares.getPosition().x + " POSIÇÃO QUE PINTA DIREITA " + squares.getPosition().y);
  485. squares.setColor(this.colorMove);
  486. possibleSquares.add(squares);
  487. }
  488. i++;
  489. squares = getSquare(movesBispo.get(i).x, movesBispo.get(i).y);
  490. }
  491. squares = getSquare(movesBispo.get(i).x, movesBispo.get(i).y);
  492. while(squares.getPosition().x > square.getPosition().x && squares.getPosition().y < square.getPosition().y) {
  493. if(squares.haveImagePath())
  494. {
  495. System.out.println(squares.getPosition().x + " POSIÇÃO DO BREAK ESQUERDA " + squares.getPosition().y);
  496. if(square.getPeca().getImagePath().contains("White")) {
  497. if(squares.getPeca().getImagePath().contains("Black")) {
  498. squares.setColor(this.colorMove);
  499. possibleSquares.add(squares);
  500. }
  501. }
  502. if(square.getPeca().getImagePath().contains("Black")) {
  503. if(squares.getPeca().getImagePath().contains("White")) {
  504. squares.setColor(this.colorMove);
  505. possibleSquares.add(squares);
  506. }
  507. }
  508. while(squares.getPosition().x > square.getPosition().x && squares.getPosition().y < square.getPosition().y) {
  509. i++;
  510. squares = getSquare(movesBispo.get(i).x, movesBispo.get(i).y);
  511. }
  512. break;
  513. }
  514. else {
  515. System.out.println(squares.getPosition().x + " POSIÇÃO QUE PINTA ESQUERDA " + squares.getPosition().y);
  516. squares.setColor(this.colorMove);
  517. possibleSquares.add(squares);
  518. }
  519. i++;
  520. squares = getSquare(movesBispo.get(i).x, movesBispo.get(i).y);
  521. }
  522. squares = getSquare(movesBispo.get(i).x, movesBispo.get(i).y);
  523. while(squares.getPosition().x < square.getPosition().x && squares.getPosition().y > square.getPosition().y ) {
  524. if(squares.haveImagePath()){
  525. System.out.println(squares.getPosition().x + " POSIÇÃO DO BREAK ESQUERDA " + squares.getPosition().y);
  526. if(square.getPeca().getImagePath().contains("White")) {
  527. if(squares.getPeca().getImagePath().contains("Black")) {
  528. squares.setColor(this.colorMove);
  529. possibleSquares.add(squares);
  530. }
  531. }
  532. if(square.getPeca().getImagePath().contains("Black")) {
  533. if(squares.getPeca().getImagePath().contains("White")) {
  534. squares.setColor(this.colorMove);
  535. possibleSquares.add(squares);
  536. }
  537. }
  538. while(squares.getPosition().x < square.getPosition().x && squares.getPosition().y > square.getPosition().y ) {
  539. i++;
  540. squares = getSquare(movesBispo.get(i).x, movesBispo.get(i).y);
  541. }
  542. break;
  543. }else{
  544. System.out.println(squares.getPosition().x + " POSIÇÃO QUE PINTA ESQUERDA " + squares.getPosition().y);
  545. squares.setColor(this.colorMove);
  546. possibleSquares.add(squares);
  547. }
  548. i++;
  549. squares = getSquare(movesBispo.get(i).x, movesBispo.get(i).y);
  550. }
  551. squares = getSquare(movesBispo.get(i).x, movesBispo.get(i).y);
  552. while(squares.getPosition().x < square.getPosition().x && squares.getPosition().y < square.getPosition().y ) {
  553. if(squares.haveImagePath())
  554. {
  555. System.out.println(squares.getPosition().x + " POSIÇÃO DO BREAK ESQUERDA " + squares.getPosition().y);
  556. if(square.getPeca().getImagePath().contains("White")) {
  557. if(squares.getPeca().getImagePath().contains("Black")) {
  558. squares.setColor(this.colorMove);
  559. possibleSquares.add(squares);
  560. }
  561. }
  562. if(square.getPeca().getImagePath().contains("Black")) {
  563. if(squares.getPeca().getImagePath().contains("White")) {
  564. squares.setColor(this.colorMove);
  565. possibleSquares.add(squares);
  566. }
  567. }
  568. break;
  569. }
  570. else {
  571. System.out.println(squares.getPosition().x + " POSIÇÃO QUE PINTA ESQUERDA " + squares.getPosition().y);
  572. squares.setColor(this.colorMove);
  573. possibleSquares.add(squares);
  574. }
  575. i++;
  576. squares = getSquare(movesBispo.get(i).x, movesBispo.get(i).y);
  577. }
  578. }
  579. private void showPossibleMovesCavalo(Square square) {
  580. ArrayList<Point> movesCavalo = square.getPeca().getMove(square.getPosition().x, square.getPosition().y);
  581. for (int i = 0; i <movesCavalo.size(); i++) {
  582. Square squares = getSquare(movesCavalo.get(i).x, movesCavalo.get(i).y);
  583. if(square.getPeca().getImagePath().contains("White")) {
  584. if(!squares.haveImagePath()) {
  585. squares.setColor(this.colorMove);
  586. possibleSquares.add(squares);
  587. }
  588. else {
  589. if(squares.getPeca().getImagePath().contains("Black")) {
  590. squares.setColor(this.colorMove);
  591. possibleSquares.add(squares);
  592. }
  593. }
  594. }
  595. if(square.getPeca().getImagePath().contains("Black")) {
  596. if(!squares.haveImagePath()) {
  597. squares.setColor(this.colorMove);
  598. possibleSquares.add(squares);
  599. }
  600. else {
  601. if(squares.getPeca().getImagePath().contains("White")) {
  602. squares.setColor(this.colorMove);
  603. possibleSquares.add(squares);
  604. }
  605. }
  606. }
  607. }
  608. }
  609. private void showPossibleMovesTorre(Square square) {
  610. Torre torre = (Torre) square.getPeca();
  611. ArrayList<Point> movesTorre = torre.getMove(square.getPosition().x, square.getPosition().y);
  612. int i = 0;
  613. Square squares = getSquare(movesTorre.get(i).x, movesTorre.get(i).y);
  614. while(squares.getPosition().x == square.getPosition().x && squares.getPosition().y > square.getPosition().y) {
  615. if(squares.haveImagePath()) {
  616. System.out.println(squares.getPosition().x + " POSIÇÃO DO BREAK DIREITA " + squares.getPosition().y);
  617. if(square.getPeca().getImagePath().contains("White")) {
  618. if(squares.getPeca().getImagePath().contains("Black")) {
  619. squares.setColor(this.colorMove);
  620. possibleSquares.add(squares);
  621. }
  622. }
  623. if(square.getPeca().getImagePath().contains("Black")) {
  624. if(squares.getPeca().getImagePath().contains("White")) {
  625. squares.setColor(this.colorMove);
  626. possibleSquares.add(squares);
  627. }
  628. }
  629. while(squares.getPosition().x == square.getPosition().x && squares.getPosition().y > square.getPosition().y) {
  630. i++;
  631. squares = getSquare(movesTorre.get(i).x, movesTorre.get(i).y);
  632. }
  633. break;
  634. }
  635. else {
  636. System.out.println(squares.getPosition().x + " POSIÇÃO QUE PINTA DIREITA " + squares.getPosition().y);
  637. squares.setColor(this.colorMove);
  638. possibleSquares.add(squares);
  639. }
  640. i++;
  641. squares = getSquare(movesTorre.get(i).x, movesTorre.get(i).y);
  642. }
  643. System.out.println("I = " + i);
  644. squares = getSquare(movesTorre.get(i).x, movesTorre.get(i).y);
  645. while( squares.getPosition().x == square.getPosition().x && squares.getPosition().y < square.getPosition().y) {
  646. if(squares.haveImagePath())
  647. {
  648. System.out.println(squares.getPosition().x + " POSIÇÃO DO BREAK ESQUERDA " + squares.getPosition().y);
  649. if(square.getPeca().getImagePath().contains("White")) {
  650. if(squares.getPeca().getImagePath().contains("Black")) {
  651. squares.setColor(this.colorMove);
  652. possibleSquares.add(squares);
  653. }
  654. }
  655. if(square.getPeca().getImagePath().contains("Black")) {
  656. if(squares.getPeca().getImagePath().contains("White")) {
  657. squares.setColor(this.colorMove);
  658. possibleSquares.add(squares);
  659. }
  660. }
  661. while(squares.getPosition().x == square.getPosition().x && squares.getPosition().y < square.getPosition().y) {
  662. i++;
  663. squares = getSquare(movesTorre.get(i).x, movesTorre.get(i).y);
  664. }
  665. break;
  666. }
  667. else {
  668. System.out.println(squares.getPosition().x + " POSIÇÃO QUE PINTA ESQUERDA " + squares.getPosition().y);
  669. squares.setColor(this.colorMove);
  670. possibleSquares.add(squares);
  671. }
  672. i++;
  673. squares = getSquare(movesTorre.get(i).x, movesTorre.get(i).y);
  674. }
  675. squares = getSquare(movesTorre.get(i).x, movesTorre.get(i).y);
  676. while( squares.getPosition().y == square.getPosition().y && squares.getPosition().x > square.getPosition().x) {
  677. if(squares.haveImagePath())
  678. {
  679. System.out.println(squares.getPosition().x + " POSIÇÃO DO BREAK BAIXO " + squares.getPosition().y);
  680. if(square.getPeca().getImagePath().contains("White")) {
  681. if(squares.getPeca().getImagePath().contains("Black")) {
  682. squares.setColor(this.colorMove);
  683. possibleSquares.add(squares);
  684. }
  685. }
  686. if(square.getPeca().getImagePath().contains("Black")) {
  687. if(squares.getPeca().getImagePath().contains("White")) {
  688. squares.setColor(this.colorMove);
  689. possibleSquares.add(squares);
  690. }
  691. }
  692. while(squares.getPosition().y == square.getPosition().y && squares.getPosition().x > square.getPosition().x) {
  693. i++;
  694. squares = getSquare(movesTorre.get(i).x, movesTorre.get(i).y);
  695. }
  696. break;
  697. }
  698. else {
  699. System.out.println(squares.getPosition().x + " POSIÇÃO QUE PINTA BAIXO " + squares.getPosition().y);
  700. squares.setColor(this.colorMove);
  701. possibleSquares.add(squares);
  702. }
  703. i++;
  704. squares = getSquare(movesTorre.get(i).x, movesTorre.get(i).y);
  705. }
  706. squares = getSquare(movesTorre.get(i).x, movesTorre.get(i).y);
  707. while( squares.getPosition().y == square.getPosition().y && squares.getPosition().x < square.getPosition().x) {
  708. if(squares.haveImagePath())
  709. {
  710. System.out.println(squares.getPosition().x + " POSIÇÃO DO BREAK CIMA " + squares.getPosition().y);
  711. if(square.getPeca().getImagePath().contains("White")) {
  712. if(squares.getPeca().getImagePath().contains("Black")) {
  713. squares.setColor(this.colorMove);
  714. possibleSquares.add(squares);
  715. }
  716. }
  717. if(square.getPeca().getImagePath().contains("Black")) {
  718. if(squares.getPeca().getImagePath().contains("White")) {
  719. squares.setColor(this.colorMove);
  720. possibleSquares.add(squares);
  721. }
  722. }
  723. break;
  724. }else {
  725. System.out.println(squares.getPosition().x + " POSIÇÃO QUE PINTA CIMA " + squares.getPosition().y);
  726. squares.setColor(this.colorMove);
  727. possibleSquares.add(squares);
  728. }
  729. i++;
  730. squares = getSquare(movesTorre.get(i).x, movesTorre.get(i).y);
  731. }
  732. }
  733. private void showPossibleMoves(Square square){
  734. Peca peca = square.getPeca();
  735. if(peca.getTypeOfObject().equalsIgnoreCase("Peao")){
  736. if(peca.getImagePath().contains("White"))
  737. showPossibleMovesPeaoW(square);
  738. if(peca.getImagePath().contains("Black"))
  739. showPossibleMovesPeaoB(square);
  740. }
  741. if(peca.getTypeOfObject().equalsIgnoreCase("Rainha")){
  742. showPossibleMovesRainha(square);
  743. }
  744. if(peca.getTypeOfObject().equalsIgnoreCase("Rei")){
  745. showPossibleMovesRei(square);
  746. }
  747. if(peca.getTypeOfObject().equalsIgnoreCase("Bispo")) {
  748. showPossibleMovesBispo(square);
  749. }
  750. if(peca.getTypeOfObject().equalsIgnoreCase("Torre")) {
  751. showPossibleMovesTorre(square);
  752. }
  753. if(peca.getTypeOfObject().equalsIgnoreCase("Cavalo")) {
  754. showPossibleMovesCavalo(square);
  755. }
  756. }
  757. }