Batalla naval - ayuda
Publicado por Micaela Ayala (1 intervención) el 09/11/2017 16:33:01
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
package id_201703102;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Random;
import java.util.Scanner;
/*Proyecto Naval
* Autora: Adriana Bolaños
* id = 201703102
*/
import batallaNaval.BatallaNaval;
public class oficial extends ListaDeAtaques {
public static void main(String[] args) {
oficial ej = new oficial();
int[][] miMatriz = ej.MiTablero();
BatallaNaval.IniciarJuego("Adri", miMatriz);
ArrayList<Integer[]> matrizEnemiga = ej.pruebaListaLista();
while (!BatallaNaval.HayUnGanador()) {
if (BatallaNaval.HayUnGanador() == true) {
System.out.println("Hay un ganador");
} else {
System.out.println("Aún no ganó ninguno, seguir jugando");
}
BatallaNaval.ProximoTurno();
int[] pos = BatallaNaval.PreguntarPosicion();
BatallaNaval.RespuestaPosicion(pos, miMatriz[pos[0]][pos[1]]);
System.out.println("(li) En la posición " + pos[0] + "," + pos[1] + " hay: " + miMatriz[pos[0]][pos[1]]);
int posición = ej.disparoLista(matrizEnemiga);
int extra = posición;
Integer[] disparo = ej.coordenadas(posición, matrizEnemiga);
int x = disparo[0];
int y = disparo[1];
int hay = BatallaNaval.QueHayEn(x, y);
System.out.println("(user) En la posición " + x + "," + y + " hay: " + hay);
if ((hay == 1)) {
ej.buscarEliminarDiagonales(matrizEnemiga, extra);
}
}
BatallaNaval.ImprimirResultado();
}
//me dice que pido cosas fufera del límite, intenté condicionar pero ignira nomás mi pedido
public void buscarEliminarDiagonales(ArrayList<Integer[]> lista, int extra) {
if (extra < lista.size()) {
Integer[] posicionesDisparo = lista.get(extra);
int x = posicionesDisparo[0];
int y = posicionesDisparo[1];
if (x >= 1 && x < lista.size() - 1 && y >= 1 && y < lista.size() - 1) {
Integer[] posiciónDerecha = { x + 1, y + 1 };
Integer[] posiciónIzquierda = { x - 1, y - 1 };
Integer[] posiciónIzq = { x + 1, y - 1 };
Integer[] posiciónDer = { x - 1, y + 1 };
if (lista.contains(posiciónDer) && lista.contains(posiciónIzq) && lista.contains(posiciónIzquierda)
&& lista.contains(posiciónDerecha)) {
int a = lista.indexOf(posiciónDerecha);
int b = lista.indexOf(posiciónIzquierda);
int c = lista.indexOf(posiciónDer);
int d = lista.indexOf(posiciónIzq);
lista.remove(a);
lista.remove(b);
lista.remove(c);
lista.remove(d);
}
}
}
}
public int disparoLista(ArrayList<Integer[]> numeros) {
Random rnd = new Random();
int posicion = rnd.nextInt(numeros.size());
return posicion;
}
public Integer[] coordenadas(int posición, ArrayList<Integer[]> numeros) {
Integer[] posiciónDisparo = numeros.get(posición);
numeros.remove(posición);
return posiciónDisparo;
}
public int[][] MiTablero() {
int[][] mat = { { 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 0, 1, 1, 1, 0, 0, 0, 0, 0 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, { 1, 0, 0, 0, 1, 1, 1, 0, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 }, { 0, 0, 1, 0, 0, 0, 0, 1, 0, 0 }, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
{ 1, 1, 0, 1, 1, 0, 0, 0, 0, 1 }, { 0, 0, 0, 0, 0, 0, 1, 1, 0, 0 } };
return mat;
}
//si imprimís esto toma como que la lista sólo tiene diez elementos y necesito 100
public ArrayList<Integer[]> pruebaListaLista() {
ArrayList<Integer[]> arl = new ArrayList<Integer[]>();
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
Integer[] a1 = { i, j };
arl.add(a1);
}
System.out.println(arl.get(i)[0] + "," + (arl.get(i)[1]));
}
return arl;
}
public void imprimir(int[][] matriz) {
int m = matriz.length;
int n = matriz.length;
for (int i = 0; i < m; i++) {
System.out.println();
for (int j = 0; j < n; j++) {
System.out.print(matriz[i][j] + "\t");
}
}
System.out.println();
}
//muchas gracias :)
}
Valora esta pregunta


0