-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathBispo.java
125 lines (103 loc) · 3.73 KB
/
Bispo.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
/**
* Classe Bispo, Define as regras e movimento para essa peca.
*
* @author (Laura Franccine)
* @version (001 10/11/2020)
*/
public class Bispo extends Peca
{
/**
* Constructor for objects of class Cavalo
*/
public Bispo(Casa casa, CorDaPeca cor)
{
//public static final int BISPO = 2;
super(casa, TipoDaPeca.BISPO, cor);
}
/**
* movimenta a peca para o local de destino caso esteja correto.
*/
public Boolean mover(Casa destino, Tabuleiro tabuleiro) {
if(this.verificaDestino(this, destino)) {
if(this.podeMover(this.casa, destino, tabuleiro)){
this.casa.removerPeca();
destino.colocarPeca(this);
this.casa = destino;
return true;
}
return false;
}
return false;
}
/**
* Verifica se o movimento e valido, retorna um boolean.
*/
private Boolean podeMover(Casa casa, Casa destino, Tabuleiro tabuleiro) {
// variaveis para simplificar o codigo (Laura)
// tabuleiro.getCasa(casa.x + i, casa.y + i).getPeca() instanceof Peca
int x = destino.x;
int y = destino.y;
//Verifica se o destino está nas diagonais (Laura)
for(int i = -7; i <= 7; i++) {
if(casa.x + i == x && casa.y + i == y){
if(!this.pulouPeca(1, casa, destino, tabuleiro)) {
return true;
}
return false;
}
if(casa.x + i == x && casa.y + (i * -1) == y){
if(!this.pulouPeca(2, casa, destino, tabuleiro)) {
return true;
}
return false;
}
}
return false;
}
/**
* Verifica se ha uma outra peca na tragetoria de movimentacao da peca
*/
private Boolean pulouPeca(int diagonal, Casa casa, Casa destino, Tabuleiro tabuleiro ){
int x = destino.x;
int y = destino.y;
switch(diagonal){
case 1:
if(x > casa.x){
//verifica se pulou peca
for(int j = 1; j < x - casa.x; j++){
if(tabuleiro.getCasa(casa.x + j, casa.y + j).getPeca() instanceof Peca){
return true;
}
}
}
if(casa.x > x){
//verifica se pulou peca
for(int j = 1; j < casa.x - x; j++){
if(tabuleiro.getCasa(x + j, y + j).getPeca() instanceof Peca){
return true;
}
}
}
return false;
case 2:
if(y > casa.y){
//verifica se pulou peca
for(int j = 1; j < y - casa.y; j++){
if(tabuleiro.getCasa(casa.x - j, casa.y + j).getPeca() instanceof Peca){
return true;
}
}
}
if(casa.y > y){
//verifica se pulou peca
for(int j = 1; j < casa.y - y; j++){
if(tabuleiro.getCasa(casa.x + j, casa.y - j).getPeca() instanceof Peca){
return true;
}
}
}
return false;
}
return true;
}
}