1
- // todo: Implementar los 5 tipos de vecindarios que existen en el juego de la vida
1
+ // todo: Implementar los 5 tipos de vecindarios que existen en el juego de la vida (Hecho)
2
2
3
3
public class Tablero {
4
4
private int [][] matrizGOL ;
5
5
6
+ /**
7
+ * Constructor de la clase
8
+ * @param population String con la matriz
9
+ * @param height Altura de la matriz
10
+ * @param width Ancho de la matriz
11
+ */
12
+
6
13
public Tablero (String population , int height , int width ) {
7
14
this .matrizGOL = convMatriz (population , height , width );
8
15
}
9
16
17
+ /**
18
+ * Convierte el formato de String de la matriz en un arreglo de enteros
19
+ * @param stringMatriz String con la matriz
20
+ * @param height Altura de la matriz
21
+ * @param width Ancho de la matriz
22
+ * @return Matriz de enteros
23
+ */
24
+
10
25
private int [][] convMatriz (String stringMatriz , int height , int width ) {
11
26
if ("rnd" .equals (stringMatriz )) {
12
27
@@ -51,9 +66,9 @@ private int[][] convMatriz(String stringMatriz, int height, int width) {
51
66
}
52
67
}
53
68
54
- /*
55
- * Imprime la matriz en consola
56
- */
69
+ /**
70
+ * Imprime la matriz
71
+ */
57
72
public void imprimirMatriz () {
58
73
System .out .println ("Matriz: " );
59
74
for (int [] ints : this .matrizGOL ) {
@@ -64,8 +79,9 @@ public void imprimirMatriz() {
64
79
}
65
80
}
66
81
67
- /*
68
- * Retorna la matriz con las nuevas generaciones aplicando las reglas del GOL
82
+ /**
83
+ * Calcula el vecindario de la proxima generacion de la matriz
84
+ * @param n
69
85
*/
70
86
71
87
public void vecindario (int n ) {
@@ -98,10 +114,13 @@ public void vecindario(int n) {
98
114
}
99
115
100
116
101
- /*
102
- * Devuelve una matriz de 3x3 con los vecinos de la celda i,j
103
- * Si la celda esta en el borde de la matriz, se rellena con 0 los espacios vacios
117
+ /**
118
+ * Copia el vecindario de la celda actual
119
+ * @param i Fila de la celda
120
+ * @param j Columna de la celda
121
+ * @return Matriz de 3x3 con el vecindario de la celda
104
122
*/
123
+
105
124
private int [][] vecinadrioCopiado (int i , int j ) {
106
125
int [][] vecinos = new int [3 ][3 ];
107
126
for (int k = i - 1 ; k <= i + 1 ; k ++) {
@@ -115,6 +134,12 @@ private int[][] vecinadrioCopiado(int i, int j) {
115
134
}
116
135
117
136
137
+ /**
138
+ * Calcula el vecindario 1 de la celda actual
139
+ * @param i Fila de la celda
140
+ * @param j Columna de la celda
141
+ * @return Numero de vecinos
142
+ */
118
143
119
144
private int vecindario1 (int i , int j ) {
120
145
int vecinos = 0 ;
@@ -133,6 +158,13 @@ private int vecindario1(int i, int j) {
133
158
return vecinos ;
134
159
}
135
160
161
+ /**
162
+ * Calcula el vecindario 2 de la celda actual
163
+ * @param i Fila de la celda
164
+ * @param j Columna de la celda
165
+ * @return Numero de vecinos
166
+ */
167
+
136
168
private int vecindario2 (int i , int j ) {
137
169
int vecinos = 0 ;
138
170
int [][] vecinosCopiados = vecinadrioCopiado (i , j );
@@ -150,6 +182,12 @@ private int vecindario2(int i, int j) {
150
182
return vecinos ;
151
183
}
152
184
185
+ /**
186
+ * Calcula el vecindario 3 de la celda actual
187
+ * @param i Fila de la celda
188
+ * @param j Columna de la celda
189
+ * @return Numero de vecinos
190
+ */
153
191
154
192
private int vecindario3 (int i , int j ) {
155
193
int vecinos = 0 ;
@@ -167,6 +205,13 @@ private int vecindario3(int i, int j) {
167
205
return vecinos - this .matrizGOL [i ][j ];
168
206
}
169
207
208
+ /**
209
+ * Calcula el vecindario 4 de la celda actual
210
+ * @param i Fila de la celda
211
+ * @param j Columna de la celda
212
+ * @return Numero de vecinos
213
+ */
214
+
170
215
private int vecindario4 (int i , int j ) {
171
216
int vecinos = 0 ;
172
217
int [][] vecinosCopiados = vecinadrioCopiado (i , j );
@@ -184,6 +229,13 @@ private int vecindario4(int i, int j) {
184
229
return vecinos - this .matrizGOL [i ][j ];
185
230
}
186
231
232
+ /**
233
+ * Calcula el vecindario 5 de la celda actual
234
+ * @param i Fila de la celda
235
+ * @param j Columna de la celda
236
+ * @return Numero de vecinos
237
+ */
238
+
187
239
private int vecindario5 (int i , int j ) {
188
240
int vecinos = 0 ;
189
241
int [][] vecinosCopiados = vecinadrioCopiado (i , j );
@@ -201,8 +253,28 @@ private int vecindario5(int i, int j) {
201
253
return vecinos ;
202
254
}
203
255
256
+ /**
257
+ * Devuelve la matriz del juego de la vida
258
+ * @return Matriz del juego de la vida
259
+ */
204
260
205
261
public int [][] getMatrizGOL () {
206
262
return matrizGOL ;
207
263
}
264
+
265
+ /**
266
+ * Verifica si la matriz esta extinta
267
+ * @return {@code true} si la matriz esta extinta, {@code false} si no esta extinta
268
+ */
269
+
270
+ public boolean isExtincto () {
271
+ for (int [] ints : this .matrizGOL ) {
272
+ for (int anInt : ints ) {
273
+ if (anInt == 1 ) {
274
+ return false ;
275
+ }
276
+ }
277
+ }
278
+ return true ;
279
+ }
208
280
}
0 commit comments