PageRenderTime 42ms CodeModel.GetById 14ms RepoModel.GetById 0ms app.codeStats 0ms

/src/chess/Board.java

https://bitbucket.org/ag1232/chess65
Java | 355 lines | 287 code | 23 blank | 45 comment | 49 complexity | 5eefe8ad821356116c6bbf62bda6e00d MD5 | raw file
  1. package chess;
  2. import chess.pieces.*;
  3. /*
  4. * Board is made of a 2D array of objects called 'Tiles'. It's 9x9 because it includes the game board
  5. * AND the axis labels.
  6. * board[row][column]:
  7. * board[0,0] corresponds to top left tile (a8).
  8. * board[0,7] = top right tile (h8)
  9. * board [7,0] & board[7.7] correspond to a1 & h1 respectively.
  10. */
  11. /**
  12. * @author andrewgonzalez
  13. * @author danielrodriguez
  14. */
  15. public class Board {
  16. public Tile [][] board;
  17. //Board Constructor
  18. public Board(){
  19. this.board = new Tile [9][9];
  20. }
  21. public Player white = new Player("white");
  22. public Player black = new Player("black");
  23. /*populates board*/
  24. void populateBoard(){
  25. for(int i = 0; i < 8; i++){
  26. if(i == 0 || i == 7){
  27. populatePieces(i);
  28. continue;
  29. }
  30. if(i == 1 || i == 6){
  31. populatePawns(i);
  32. continue;
  33. }
  34. if(i>= 2 && i<= 5){
  35. populateMidBoard(i);
  36. continue;
  37. }
  38. }
  39. /*Populates the column all the way at the bottom of grid*/
  40. for(int i = 0; i < 9; i++){
  41. if(i == 8){
  42. for(int k = 0; k < 9; k++){
  43. Tile testTile = new Tile();
  44. switch (k){
  45. case 0 : testTile.xPlane = 'a';
  46. break;
  47. case 1 : testTile.xPlane = 'b';
  48. break;
  49. case 2 : testTile.xPlane = 'c';
  50. break;
  51. case 3 : testTile.xPlane = 'd';
  52. break;
  53. case 4 : testTile.xPlane = 'e';
  54. break;
  55. case 5 : testTile.xPlane = 'f';
  56. break;
  57. case 6 : testTile.xPlane = 'g';
  58. break;
  59. case 7 : testTile.xPlane = 'h';
  60. break;
  61. case 8 : testTile.xPlane = ' ';
  62. }
  63. board[i][k] = testTile;
  64. }
  65. break;
  66. }
  67. /*Populates the column all the way on the right of grid*/
  68. for(int k = 8; k < 9; k++){
  69. Tile testTile = new Tile();
  70. switch (i){
  71. case 0 : testTile.yPlane = '8';
  72. break;
  73. case 1 : testTile.yPlane = '7';
  74. break;
  75. case 2 : testTile.yPlane = '6';
  76. break;
  77. case 3 : testTile.yPlane = '5';
  78. break;
  79. case 4 : testTile.yPlane = '4';
  80. break;
  81. case 5 : testTile.yPlane = '3';
  82. break;
  83. case 6 : testTile.yPlane = '2';
  84. break;
  85. case 7 : testTile.yPlane = '1';
  86. break;
  87. case 8 : testTile.yPlane = ' ';
  88. }
  89. board[i][k] = testTile;
  90. }
  91. }
  92. }
  93. /*prints boards*/
  94. void printBoard(){
  95. for(int i = 0; i < 9; i++){
  96. System.out.println();
  97. //prints out the letters at the bottom of board
  98. if(i == 8){
  99. for(int k = 0; k < 9; k++){
  100. System.out.print(board[i][k].xPlane + " ");
  101. }
  102. break;
  103. }
  104. //second for loop
  105. for(int k = 0; k < 9; k++){
  106. //Prints out the numbers all the way on the right
  107. if (k==8){
  108. System.out.print(board[i][k].yPlane + " ");
  109. }
  110. //Prints out the contents of board
  111. else{
  112. if(board[i][k].piece == null){
  113. System.out.print(board[i][k].symbol +" ");
  114. }
  115. else System.out.print(board[i][k].piece.pieceAbriv + " ");
  116. // if(board[i][k].symbol.equals(" ") || board[i][k].symbol.equals("##") ){
  117. // System.out.print(board[i][k].symbol +" ");
  118. // }
  119. // else{
  120. // System.out.print(board[i][k].piece.pieceAbriv + " ");
  121. // }
  122. }
  123. }
  124. }
  125. }
  126. /**
  127. * Populates pawns given the row x.
  128. * @param x
  129. */
  130. void populatePawns(int row){
  131. //populate black pawns
  132. if(row == 1){
  133. for(int i=0;i<8;i++){
  134. Pawn bPawn = new Pawn(black);
  135. bPawn.pieceAbriv = "bp";
  136. bPawn.row = row;
  137. bPawn.col = i;
  138. Tile tile = new Tile(bPawn);
  139. //If determines the color/symbol of the tile ('#' or blank)
  140. if (i%2 == 0) tile.symbol = "##";
  141. board[row][i] = tile;
  142. }
  143. }
  144. //populates white pawns
  145. else{
  146. for(int i=0;i<8;i++){
  147. Pawn wPawn = new Pawn(white);
  148. wPawn.pieceAbriv = "wp";
  149. wPawn.row = row;
  150. wPawn.col = i;
  151. Tile tile = new Tile(wPawn);
  152. //If determines the color/symbol of the tile ('#' or blank)
  153. if (i%2 == 1) tile.symbol = "##";
  154. board[row][i] = tile;
  155. }
  156. }
  157. }
  158. /**
  159. * Populates pieces given the row x.
  160. * @param x
  161. */
  162. void populatePieces(int row){
  163. //black pieces
  164. if(row == 0){
  165. for(int i=0;i<8;i++){
  166. switch (i){
  167. case 0 : Rook rook = new Rook(black);//Rook
  168. rook.pieceAbriv = "bR";
  169. rook.row = row;
  170. rook.col = i;
  171. Tile tile = new Tile(rook);
  172. board[row][i] = tile;
  173. break;
  174. case 1 : Knight knight = new Knight(black);//Knight
  175. knight.pieceAbriv = "bN";
  176. knight.row = row;
  177. knight.col = i;
  178. Tile tile1 = new Tile(knight);
  179. tile1.symbol = "##";
  180. board[row][i] = tile1;
  181. break;
  182. case 2 : Bishop bishop = new Bishop(black);//Bishop
  183. bishop.pieceAbriv = "bB";
  184. bishop.col = i;
  185. bishop.row = row;
  186. Tile tile2 = new Tile(bishop);
  187. board[row][i] = tile2;
  188. break;
  189. case 3 : Queen queen = new Queen(black);//Queen
  190. queen.pieceAbriv = "bQ";
  191. queen.col = i;
  192. queen.row = row;
  193. Tile tile3 = new Tile(queen);
  194. tile3.symbol = "##";
  195. board[row][i] = tile3;
  196. break;
  197. case 4 : King king = new King(black) ;//King
  198. king.pieceAbriv = "bK";
  199. king.col = i;
  200. king.row = row;
  201. Tile tile4 = new Tile(king);
  202. board[row][i] = tile4;
  203. break;
  204. case 5 : Bishop bishop1 = new Bishop(black);//Bishop
  205. bishop1.pieceAbriv = "bB";
  206. bishop1.col = i;
  207. bishop1.row = row;
  208. Tile tile5 = new Tile(bishop1);
  209. tile5.symbol = "##";
  210. board[row][i] = tile5;
  211. break;
  212. case 6 : Knight knight1 = new Knight(black);//Knight
  213. knight1.pieceAbriv = "bN";
  214. knight1.col = i;
  215. knight1.row = row;
  216. Tile tile6 = new Tile(knight1);
  217. board[row][i] = tile6;
  218. break;
  219. case 7 : Rook rook1 = new Rook(black);//Rook
  220. rook1.pieceAbriv = "bR";
  221. rook1.col = i;
  222. rook1.row = row;
  223. Tile tile7 = new Tile(rook1);
  224. tile7.symbol = "##";
  225. board[row][i] = tile7;
  226. break;
  227. }
  228. }
  229. }
  230. //Populates white pieces
  231. else{
  232. for(int i=0;i<8;i++){
  233. switch (i){
  234. case 0 : Rook rook = new Rook(white);//Rook
  235. rook.pieceAbriv = "wR";
  236. rook.row = row;
  237. rook.col = i;
  238. Tile tile = new Tile(rook);
  239. tile.symbol = "##";
  240. board[row][i] = tile;
  241. break;
  242. case 1 : Knight knight = new Knight(white);//Knight
  243. knight.pieceAbriv = "wN";
  244. knight.row = row;
  245. knight.col = i;
  246. Tile tile1 = new Tile(knight);
  247. board[row][i] = tile1;
  248. break;
  249. case 2 : Bishop bishop = new Bishop(white);//Bishop
  250. bishop.pieceAbriv = "wB";
  251. bishop.row = row;
  252. bishop.col = i;
  253. Tile tile2 = new Tile(bishop);
  254. tile2.symbol = "##";
  255. board[row][i] = tile2;
  256. break;
  257. case 3 : Queen queen = new Queen(white);//Queen
  258. queen.pieceAbriv = "wQ";
  259. queen.row = row;
  260. queen.col = i;
  261. Tile tile3 = new Tile(queen);
  262. board[row][i] = tile3;
  263. break;
  264. case 4 : King king = new King(white) ;//King
  265. king.pieceAbriv = "wK";
  266. king.row = row;
  267. king.col = i;
  268. Tile tile4 = new Tile(king);
  269. tile4.symbol = "##";
  270. board[row][i] = tile4;
  271. break;
  272. case 5 : Bishop bishop1 = new Bishop(white);//Bishop
  273. bishop1.pieceAbriv = "wB";
  274. bishop1.row = row;
  275. bishop1.col = i;
  276. Tile tile5 = new Tile(bishop1);
  277. board[row][i] = tile5;
  278. break;
  279. case 6 : Knight knight1 = new Knight(white);//Knight
  280. knight1.pieceAbriv = "wN";
  281. knight1.row = row;
  282. knight1.col = i;
  283. Tile tile6 = new Tile(knight1);
  284. tile6.symbol = "##";
  285. board[row][i] = tile6;
  286. break;
  287. case 7 : Rook rook1 = new Rook(white);//Rook
  288. rook1.pieceAbriv = "wR";
  289. rook1.row = row;
  290. rook1.col = i;
  291. Tile tile7 = new Tile(rook1);
  292. board[row][i] = tile7;
  293. break;
  294. }
  295. }
  296. }
  297. }
  298. /**
  299. * Populates middle of board with "##" and ' '
  300. */
  301. void populateMidBoard(int row){
  302. //even rows
  303. if(row%2 == 0){
  304. for(int i=0;i<8;i++){
  305. if(i%2 != 0){
  306. Tile tile = new Tile();
  307. tile.symbol = "##";
  308. board[row][i] = tile;
  309. }
  310. else{
  311. Tile tile = new Tile();
  312. tile.symbol = " ";
  313. board[row][i] = tile;
  314. }
  315. }
  316. }
  317. else{
  318. for(int i=0;i<8;i++){
  319. if(i%2 == 0){
  320. Tile tile = new Tile();
  321. tile.symbol = "##";
  322. board[row][i] = tile;
  323. }
  324. else{
  325. Tile tile = new Tile();
  326. tile.symbol = " ";
  327. board[row][i] = tile;
  328. }
  329. }
  330. }
  331. }
  332. }