-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTabuleiro.java
154 lines (136 loc) · 4.59 KB
/
Tabuleiro.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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/**
* Representa o tabuleiro do jogo.
*
* @author Alan Moraes / [email protected]
* @author Victor Koehler / [email protected]
*/
import java.util.ArrayList;
public class Tabuleiro {
// Armazena as casas de início das diferentes cores.
private CasaComum casaInicioAmarelo;
private CasaComum casaInicioAzul;
private CasaComum casaInicioVerde;
private CasaComum casaInicioVermelho;
// Armazena as guaritas do tabuleiro.
private Guarita guaritaAmarelo;
private Guarita guaritaAzul;
private Guarita guaritaVerde;
private Guarita guaritaVermelho;
private ArrayList<Casa> casas_finais;
/**
* Construtor padrão de um tabuleiro.
*/
public Tabuleiro() {
// Casas de Inicio
casaInicioAmarelo = new CasaComum("AMARELO");
casaInicioAzul = new CasaComum("AZUL");
casaInicioVerde = new CasaComum("VERDE");
casaInicioVermelho = new CasaComum("VERMELHO");
guaritaAmarelo = new Guarita("AMARELO", casaInicioAmarelo);
guaritaAzul = new Guarita("AZUL", casaInicioAzul);
guaritaVerde = new Guarita("VERDE", casaInicioVerde);
guaritaVermelho = new Guarita("VERMELHO", casaInicioVermelho);
casas_finais = new ArrayList<Casa>();
// Inicializamos um tabuleiro de Ludo
// Casas comuns
// Usaremos uma espécie de lista encadeada informal para guardar as casas.
popularCasas(casaInicioAmarelo, casaInicioVerde);
popularCasas(casaInicioVerde, casaInicioVermelho);
popularCasas(casaInicioVermelho, casaInicioAzul);
popularCasas(casaInicioAzul, casaInicioAmarelo);
}
/**
* Método usado na construção do tabuleiro para popular as casas com for.
*
* @param casa
* @param ultimaCasa
*/
private void popularCasas(Casa primeiraCasa, Casa ultimaCasa) {
Casa casa = primeiraCasa;
for (int i = 0; i < 12; i++) {
Casa casaSeguinte = new CasaComum();
casa.setCasaSeguinte(casaSeguinte);
casaSeguinte.setCasaAnterior(casa);
if (i == 10) {
casaSeguinte = new CasaEntrada(ultimaCasa.getCor());
casa.setCasaSeguinte(casaSeguinte);
casaSeguinte.setCasaAnterior(casa);
casa = casaSeguinte;
criarCasasZonaSegura(casa, ultimaCasa.getCor());
}
casa = casaSeguinte;
}
casa.setCasaSeguinte(ultimaCasa);
ultimaCasa.setCasaAnterior(casa);
}
/**
* Método usado na construção do tabuleiro para popular as casas seguras com
* for.
*
* @param casaEntradaZonaSegura
* @param cor
*/
private void criarCasasZonaSegura(Casa casaEntradaZonaSegura, String cor) {
Casa casaZonaSegura = new CasaSegura(cor, null);
casaEntradaZonaSegura.setCasaSegura(casaZonaSegura);
for (int i = 0; i < 5; i++) {
Casa casaNova = new CasaSegura(cor, casaZonaSegura);
casaZonaSegura.setCasaSeguinte(casaNova);
casaZonaSegura = casaNova;
}
casas_finais.add(casaZonaSegura);
}
/**
* Obtém a guarita do jogador especificado. Consulte a classe Guarita para mais
* detalhes.
*
* @param cor Cor do jogador. Consulte a classe Cores.
* @return Guarita do jogador
*/
public Guarita getGuarita(String cor) {
switch (cor) {
case "AMARELO":
return guaritaAmarelo;
case "AZUL":
return guaritaAzul;
case "VERDE":
return guaritaVerde;
case "VERMELHO":
return guaritaVermelho;
default:
return null;
}
}
/**
* Obtém a casa de início da cor especificada.
*
* @param cor Cor do jogador. Consulte a classe Cores.
* @return Casa de início.
*/
public Casa getCasaInicio(String cor) {
switch (cor) {
case "AMARELO":
return casaInicioAmarelo;
case "AZUL":
return casaInicioAzul;
case "VERDE":
return casaInicioVerde;
case "VERMELHO":
return casaInicioVermelho;
default:
return null;
}
}
public ArrayList<Casa> getCasasFinais() {
return casas_finais;
}
public boolean ehVitoria() {
for (Casa casa : casas_finais) {
if (casa.possuiPeca()) {
if (casa.getPeca().getNivel() == 4)
return true;
}
}
return false;
}
}