Untitled
unknown
java
3 years ago
13 kB
9
Indexable
package tocadoHundido;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.ArrayList;
public class ColocarVentana extends JFrame{
protected Casilla casilla;
protected Casilla casillaCPU;
protected ArrayList<ArrayList<Casilla>> botones = new ArrayList<ArrayList<Casilla>>();
protected ArrayList<ArrayList<Casilla>> botonesCPU = new ArrayList<ArrayList<Casilla>>();
protected ArrayList<Barco> listaBarcos;
protected ArrayList<Barco> listaBarcosCPU;
protected Direccion selecDireccion;
protected JButton horizontal = new JButton("Horizontal");
protected JButton vertical = new JButton("Vertical");
protected JButton jugar = new JButton("Jugar");
protected JPanel arriba = new JPanel();
protected JPanel abajo = new JPanel();
protected JPanel grid = new JPanel();
protected Boolean colocFinalizada = false;
protected ArrayList<Point> coordsCheck = new ArrayList<Point>();
protected int cont = 0;
protected int contDestCPU = 0;
protected Boolean hayGanador = false;
public ColocarVentana() {
setTitle("Colocar Barcos");
setSize(1280, 720);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setVisible(true);
}
public void CreateGrid() {
grid.setLayout(new GridLayout(10,10));
abajo.add(horizontal);
abajo.add(vertical);
for (int i = 0; i < 10; i++) {
ArrayList<Casilla> botonesTemp = new ArrayList<Casilla>();
ArrayList<Casilla> botonesTempCPU = new ArrayList<Casilla>();
for (int j = 0; j < 10; j++) {
//BOTONES CPU
JButton cajaCPU = new JButton();
casillaCPU = new Casilla(cajaCPU, new Point(i,j), false, false);
botonesTempCPU.add(casillaCPU);
//BOTONES JUGADOR
JButton caja = new JButton();
caja.setText("" + i + j);
caja.setBackground(Color.GRAY);
grid.add(caja);
casilla = new Casilla(caja, new Point(i, j), false, false);
botonesTemp.add(casilla);
}
botones.add(botonesTemp);
botonesCPU.add(botonesTempCPU);
}
arriba.add(grid);
add(arriba, BorderLayout.NORTH);
add(abajo, BorderLayout.SOUTH);
}
int contador = -1;
public void ColocarBarcos(ArrayList<Barco> barcos) {
this.listaBarcos = new ArrayList<Barco>(); //COPIA RECURSIVA
for (Barco barco : barcos) {
this.listaBarcos.add(barco);
}
if (contador!=listaBarcos.size()-1) {
for (ArrayList<Casilla> botonTemp : botones) {
for (Casilla boton: botonTemp) {
boton.boton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (!colocFinalizada) {
if (boton.ocupada) {
System.out.println("CASILLA OCUPADA, elija otro sitio");
} else {
if (selecDireccion == Direccion.HORIZONTAL) {
contador++;
boolean ocupado = false;
for (int selector = (int)boton.coordenada.getY(); selector < boton.coordenada.getY()+listaBarcos.get(contador).tamanyo; selector++) {
try {
if (botones.get((int) boton.coordenada.getX()).get(selector).ocupada) {
ocupado = true;
}
} catch (Exception e2) {
ocupado = true;
}
}
if (boton.coordenada.getY() + listaBarcos.get(contador).tamanyo-1 > 9 || ocupado){
System.out.println("CASILLA INCORRECTA, elija otro sitio");
contador--;
} else {
//System.out.println(listaBarcos.get(contador).tipo);
boton.boton.setText(""+listaBarcos.get(contador).tamanyo);
boton.boton.setBackground(Color.RED);
int fila = (int) boton.coordenada.getX();
int columna = (int) boton.coordenada.getY();
for (int i = 0; i < listaBarcos.get(contador).tamanyo; i++) {
botones.get(fila).get(columna+i).boton.setText("" + listaBarcos.get(contador).tamanyo);
botones.get(fila).get(columna+i).boton.setBackground(Color.RED);
botones.get(fila).get(columna+i).ocupada = true;
botones.get(fila).get(columna+i).setBarcoAsignado(listaBarcos.get(contador));
}
}
} else if (selecDireccion == Direccion.VERTICAL) {
contador++;
boolean ocupado = false;
for (int selector = (int)boton.coordenada.getX(); selector < boton.coordenada.getX()+listaBarcos.get(contador).tamanyo; selector++) {
try {
if (botones.get(selector).get((int) boton.coordenada.getY()).ocupada) {
ocupado = true;
}
} catch (Exception e2) {
ocupado = true;
}
}
if (boton.coordenada.getX()+listaBarcos.get(contador).tamanyo-1 > 9 || ocupado) {
System.out.println("CASILLA INCORRECTA, ELIJA OTRO SITIO");
contador--;
} else {
//System.out.println(listaBarcos.get(contador).tipo);
boton.boton.setText(""+listaBarcos.get(contador).tamanyo);
boton.boton.setBackground(Color.BLUE);
int fila = (int) boton.coordenada.getX();
int columna = (int) boton.coordenada.getY();
for (int i = 0; i < listaBarcos.get(contador).tamanyo; i++) {
botones.get(fila+i).get(columna).boton.setText("" + listaBarcos.get(contador).tamanyo);
botones.get(fila+i).get(columna).boton.setBackground(Color.RED);
botones.get(fila+i).get(columna).ocupada = true;
botones.get(fila+i).get(columna).setBarcoAsignado(listaBarcos.get(contador));
}
}
}
}
}
if (contador==listaBarcos.size()-1) {
add(jugar);
colocFinalizada = true;
}
}
});
}
}
horizontal.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
selecDireccion = Direccion.HORIZONTAL;
}
});
vertical.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
selecDireccion = Direccion.VERTICAL;
}
});
}
}
int dirRandom;
int contadorCPU = -1;
public void Atacar(ArrayList<Barco> barcos, Usuario usuario, Cpu cpu) {
this.listaBarcosCPU = new ArrayList<Barco>(); //COPIA RECURSIVA
for (Barco barco : barcos) {
listaBarcosCPU.add(barco);
}
jugar.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
remove(jugar);
remove(abajo);
repaint();
while (contadorCPU != listaBarcos.size()-1) {
contadorCPU++;
int dirRandom = (int)(Math.random()*2);
switch (dirRandom) {
//HORIZONTAL
case 0:
int cordY = (int)(Math.random()*5);
int cordX = (int)(Math.random()*10);
//System.out.println(cordY);
//System.out.println(cordX);
boolean ocupadaCheckH = false;
for (int i = 0; i < listaBarcosCPU.get(contadorCPU).tamanyo; i++) {
if (botonesCPU.get(cordX).get(cordY+i).ocupada) {
ocupadaCheckH = true;
break;
} else {
ocupadaCheckH = false;
}
}
if (!ocupadaCheckH) {
for (int i = 0; i < listaBarcosCPU.get(contadorCPU).tamanyo; i++) {
botonesCPU.get(cordX).get(cordY+i).setOcupada(true);
botonesCPU.get(cordX).get(cordY+i).setBarcoAsignado(listaBarcosCPU.get(contadorCPU));
listaBarcosCPU.get(contadorCPU).getBotones().add(botonesCPU.get(cordX).get(cordY+i));
//System.out.println(botonesCPU.get(cordX).get(cordY+i));
ocupadaCheckH = false;
}
} else {
contadorCPU--;
}
break;
case 1: //VERTICAL
cordY = (int)(Math.random()*10);
cordX = (int)(Math.random()*5);
// System.out.println(cordY);
// System.out.println(cordX);
boolean ocupadaCheckV = false;
for (int i = 0; i < listaBarcosCPU.get(contadorCPU).tamanyo; i++) {
if (botonesCPU.get(cordX+i).get(cordY).ocupada) {
ocupadaCheckV = true;
break;
} else {
ocupadaCheckV = false;
}
}
if (!ocupadaCheckV) {
for (int i = 0; i < listaBarcosCPU.get(contadorCPU).tamanyo; i++) {
botonesCPU.get(cordX+i).get(cordY).setOcupada(true);
botonesCPU.get(cordX+i).get(cordY).setBarcoAsignado(listaBarcosCPU.get(contadorCPU));
listaBarcosCPU.get(contadorCPU).getBotones().add(botonesCPU.get(cordX+i).get(cordY));
// System.out.println(botonesCPU.get(cordX+i).get(cordY));
// System.out.println(listaBarcosCPU.get(contadorCPU));
}
} else {
contadorCPU--;
}
break;
}
}
grid.removeAll();
for (ArrayList<Casilla> botonTemp : botonesCPU) {
for (Casilla boton : botonTemp) {
boton.boton.setText(" ");
grid.add(boton.boton);
}
}
for (ArrayList<Casilla> botonTemp : botonesCPU) {
for (Casilla boton : botonTemp) {
boton.boton.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (boton.ocupada) {
if (!boton.fuePresionado) {
boton.setFuePresionado(true);
boton.boton.setBackground(Color.RED);
boton.barcoAsignado.setTocados(boton.barcoAsignado.getTocados()+1);
System.out.println(listaBarcosCPU);
System.out.println(listaBarcos);
System.out.println(boton.barcoAsignado);
if (boton.barcoAsignado.getTocados()==boton.barcoAsignado.getTamanyo()) {
boton.barcoAsignado.setDestruido(true);
System.out.println("HUNDIDO: "+boton.barcoAsignado.getDestruido());
}
try {
if (boton.barcoAsignado.getDestruido()) {
cont++;
}
} catch (Exception e2) {
}
if (listaBarcos.size() == cont) {
usuario.setGanadas(usuario.getGanadas()+1);
hayGanador = true;
System.out.println("FINAL POR JUGADOR: ");
}
} else {
System.out.println("BOTON PRESIONADO PREVIAMENTE");
}
} else {
boton.boton.setBackground(Color.BLUE);
}
//SELECCION DE LA CPU
//System.out.println(coordsCheck);
int cordY = (int)(Math.random()*10);
int cordX = (int)(Math.random()*10);
Point coordenadaCheck = new Point(cordX,cordY);
while (coordsCheck.contains(coordenadaCheck)) {
cordY = (int)(Math.random()*10);
cordX = (int)(Math.random()*10);
coordenadaCheck = new Point(cordX,cordY);
}
coordsCheck.add(coordenadaCheck);
//
if (botones.get(cordX).get(cordY).getOcupada()) {
botones.get(cordX).get(cordY).getBarcoAsignado().setTocados(botones.get(cordX).get(cordY).getBarcoAsignado().getTocados()+1);
System.out.println(listaBarcosCPU);
System.out.println(listaBarcos);
if (botones.get(cordX).get(cordY).getBarcoAsignado().getTamanyo() == botones.get(cordX).get(cordY).getBarcoAsignado().getTocados()) {
botones.get(cordX).get(cordY).getBarcoAsignado().setDestruido(true);
contDestCPU++;
if (contDestCPU == listaBarcos.size()) {
cpu.setGanadas(cpu.getGanadas()+1);
hayGanador = true;
System.out.println("FINAL POR CPU");
}
}
//System.out.println(botones.get(cordX).get(cordY).getBarcoAsignado());
System.out.println("TOCADO POR LA CPU");
//System.out.println(listaBarcosCPU);
} //else {
System.out.println("AGUA POR LA CPU");
//}
if (hayGanador) {
System.out.println("usuario - "+usuario.getGanadas());
System.out.println("CPU - "+cpu.getGanadas());
System.out.println("== JUEGO TERMINADO ==");
}
}
});;
}
}
}
});
}
}
Editor is loading...