Advertisement
Guest User

Untitled

a guest
Jul 2nd, 2015
210
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.79 KB | None | 0 0
  1. package lógica;
  2.  
  3. public class King extends Piece{
  4. private boolean isAttacked;
  5. @Override
  6. public void isValid(Piece[][] spot){
  7. int i;
  8. int j;
  9.  
  10. for(i=0; i<8 ; i++){ //resetar a matriz de validade
  11. for(j=0; j<8; j++){
  12. valid[i][j] = false;
  13. }
  14. }
  15.  
  16. //Movimentos
  17. i= posx+1;
  18. j= posy;
  19. if(i>=0 && i<8 && j>=0 && j<8){ //movimento vertical acima
  20. if(spot[i][j] == null)
  21. valid[i][j] = true;
  22. else if(spot[i][j].color != color)
  23. valid[i][j] = true;
  24. }
  25.  
  26. i= posx-1;
  27. j= posy;
  28. if(i>=0 && i<8 && j>=0 && j<8){ //movimento vertical abaixo
  29. if(spot[i][j] == null)
  30. valid[i][j] = true;
  31. else if(spot[i][j].color != color)
  32. valid[i][j] = true;
  33. }
  34.  
  35. i= posx;
  36. j= posy+1;
  37. if(i>=0 && i<8 && j>=0 && j<8){ //movimento horizontal à direita
  38. if(spot[i][j] == null)
  39. valid[i][j] = true;
  40. else if(spot[i][j].color != color)
  41. valid[i][j] = true;
  42. }
  43.  
  44. i= posx;
  45. j= posy-1;
  46. if(i>=0 && i<8 && j>=0 && j<8){ //movimento horizontal à esquerda
  47. if(spot[i][j] == null)
  48. valid[i][j] = true;
  49. else if(spot[i][j].color != color)
  50. valid[i][j] = true;
  51. }
  52.  
  53. i= posx+1;
  54. j= posy+1;
  55. if(i>=0 && i<8 && j>=0 && j<8){ //movimento na diagonal ascendente acima
  56. if(spot[i][j] == null)
  57. valid[i][j] = true;
  58. else if(spot[i][j].color != color)
  59. valid[i][j] = true;
  60. }
  61.  
  62. i= posx-1;
  63. j= posy-1;
  64. if(i>=0 && i<8 && j>=0 && j<8){ //movimento na diagonal ascendente abaixo
  65. if(spot[i][j] == null)
  66. valid[i][j] = true;
  67. else if(spot[i][j].color != color)
  68. valid[i][j] = true;
  69. }
  70.  
  71. i= posx+1;
  72. j= posy-1;
  73. if(i>=0 && i<8 && j>=0 && j<8){ //movimento na diagonal descendente acima
  74. if(spot[i][j] == null)
  75. valid[i][j] = true;
  76. else if(spot[i][j].color != color)
  77. valid[i][j] = true;
  78. }
  79.  
  80. i= posx-1;
  81. j= posy+1;
  82. if(i>=0 && i<8 && j>=0 && j<8){ //movimento na diagonal descendente abaixo
  83. if(spot[i][j] == null)
  84. valid[i][j] = true;
  85. else if(spot[i][j].color != color)
  86. valid[i][j] = true;
  87. }
  88.  
  89. if(!isMoved && !isChecked){ //rock
  90. if(posy == 3){
  91. isAttacked = false;
  92. if(spot[posx][4] == null && spot[posx][5] == null && spot[posx][6] == null){ //rock longo
  93. for(int k=0; k<8; k++){ //Verificar ataques
  94. for(int l=0; l<8; l++){
  95. if(spot[k][l] != null && spot[k][l].color != color){
  96. if(spot[k][l].type == pawn && (l == 6 || l == 5 || l == 4 || l == 3))
  97. isAttacked = true;
  98. if(spot[k][l].valid[posx][4] || spot[k][l].valid[posx][5])
  99. isAttacked = true;
  100. }
  101. }
  102. }
  103. }
  104. if(spot[posx][7] != null && !spot[posx][7].isMoved && !isAttacked)
  105. valid[posx][5] = true;
  106.  
  107. isAttacked = false;
  108. if(spot[posx][1] == null && spot[posx][2] == null){ //rock curto
  109. for(int k=0; k<8; k++){ //Verificar ataques
  110. for(int l=0; l<8; l++){
  111. if(spot[k][l] != null && spot[k][l].color != color){
  112. if(spot[k][l].type == pawn && (l == 3 || l == 2 || l == 1 || l == 0))
  113. isAttacked = true;
  114. if(spot[k][l].valid[posx][1] || spot[k][l].valid[posx][2])
  115. isAttacked = true;
  116. }
  117. }
  118. }
  119. }
  120. if(spot[posx][0] != null && !spot[posx][0].isMoved && !isAttacked)
  121. valid[posx][1] = true;
  122. }
  123.  
  124.  
  125. if(posy == 4){
  126. isAttacked = false;
  127. if(spot[posx][3] == null && spot[posx][2] == null && spot[posx][1] == null){ //rock longo
  128. for(int k=0; k<8; k++){ //Verificar ataque
  129. for(int l=0; l<8; l++){
  130. if(spot[k][l] != null && spot[k][l].color != color){
  131. if(spot[k][l].type == pawn && (l == 4 || l == 3 || l == 2 || l == 1))
  132. isAttacked = true;
  133. if(spot[k][l].valid[posx][3] || spot[k][l].valid[posx][2])
  134. isAttacked = true;
  135. }
  136. }
  137. }
  138. }
  139. if(spot[posx][0] != null && !spot[posx][0].isMoved && !isAttacked)
  140. valid[posx][2] = true;
  141.  
  142. isAttacked = false;
  143. if(spot[posx][5] == null && spot[posx][6] == null){ //rock curto
  144. for(int k=0; k<8; k++){ //Verificar ataque
  145. for(int l=0; l<8; l++){
  146. if(spot[k][l] != null && spot[k][l].color != color){
  147. if(spot[k][l].type == pawn && (l == 4 || l == 5 || l == 6 || l == 7))
  148. isAttacked = true;
  149. if(spot[k][l].valid[posx][5] || spot[k][l].valid[posx][6]){
  150. isAttacked = true;
  151. }
  152. }
  153. }
  154. }
  155. }
  156. if(spot[posx][7] != null && !spot[posx][7].isMoved && !isAttacked)
  157. valid[posx][6] = true;
  158. }
  159. }
  160. }
  161.  
  162. King(int x0, int y0, int cor) {
  163. type = king;
  164. color = cor;
  165. posx = x0;
  166. posy = y0;
  167. lastMoved = 0;
  168. isMoved = false;
  169. isChecked = false;
  170. movedTwo = false;
  171. }
  172.  
  173. King(King p){ //construtor de cópia
  174. type = p.type;
  175. color = p.color;
  176. posx = p.posx;
  177. posy = p.posy;
  178. lastMoved = p.lastMoved;
  179. isMoved = p.isMoved;
  180. isChecked = p.isChecked;
  181. movedTwo = p.movedTwo;
  182.  
  183. for(int i=0; i<8; i++){
  184. for(int j=0; j<8; j++){
  185. valid[i][j] = p.valid[i][j];
  186. }
  187. }
  188.  
  189. }
  190.  
  191. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement