Untitled
unknown
java
3 years ago
16 kB
10
Indexable
package tocadoHundido;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
public class ColocarVentana extends JFrame{
protected Casilla casilla;
protected Casilla casillaCPU;
protected ArrayList<ArrayList<Casilla>> botones;
protected ArrayList<ArrayList<Casilla>> botonesCPU;
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 int contador;
protected int contadorCPU;
protected int dirRandom;
protected Boolean colocFinalizada;
protected ArrayList<Point> coordsCheck;
protected int cont;
protected int contDestCPU;
protected Boolean hayGanador;
protected Usuario usuario;
protected Cpu cpu;
protected GuardadoDatos guardadoDatos;
protected JButton nuevaPartida = new JButton("Nueva partida");
protected JButton guardarPartida = new JButton("Guardar partida");
protected JButton cargarPartida = new JButton("Cargar partida");
public ColocarVentana() {
setTitle("Colocar Barcos");
setSize(1280, 720);
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
setVisible(true);
}
public void CreateGrid() {
botones = new ArrayList<ArrayList<Casilla>>();
botonesCPU = new ArrayList<ArrayList<Casilla>>();
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);
}
public void ColocarBarcos(ArrayList<Barco> barcos) {
contador = -1;
colocFinalizada = false;
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) {
System.out.println(contador);
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 {
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 {
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+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;
}
});
}
}
public void Atacar(ArrayList<Barco> barcos, Usuario usuarioP, Cpu cpuP) {
hayGanador = false;
contadorCPU = -1;
cont = 0;
contDestCPU = 0;
coordsCheck = new ArrayList<Point>();
this.usuario = usuarioP;
this.cpu = cpuP;
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();
colocFinalizada = false;
while (contadorCPU != listaBarcos.size()-1) {
contadorCPU++;
dirRandom = (int)(Math.random()*2);
switch (dirRandom) {
//HORIZONTAL
case 0:
int cordY = (int)(Math.random()*5);
int cordX = (int)(Math.random()*10);
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));
ocupadaCheckH = false;
}
} else {
contadorCPU--;
}
break;
case 1: //VERTICAL
cordY = (int)(Math.random()*10);
cordX = (int)(Math.random()*5);
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));
}
} 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);
boton.barcoAsignado.getCoordenadas().add(boton.getCoordenada());
if (boton.barcoAsignado.getTocados()==boton.barcoAsignado.getTamanyo()) {
boton.barcoAsignado.setDestruido(true);
for (Point coord : boton.barcoAsignado.getCoordenadas()) {
botonesCPU.get((int)coord.getX()).get((int)coord.getY()).getBoton().setBackground(Color.GREEN);
}
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
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);
botones.get(cordX).get(cordY).getBarcoAsignado().getCoordenadas().add(boton.getCoordenada());
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("TOCADO POR LA CPU");
} else {
System.out.println("AGUA POR LA CPU");
}
if (hayGanador) {
hayGanador = false;
grid.removeAll();
grid.add(nuevaPartida);
grid.add(guardarPartida, BorderLayout.CENTER);
grid.add(cargarPartida, BorderLayout.CENTER);
repaint();
guardarPartida.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
guardadoDatos = new GuardadoDatos(usuario, cpu);
guardadoDatos.guardarPartida();
}
});
cargarPartida.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
guardadoDatos = new GuardadoDatos(usuario, cpu);
guardadoDatos.cargarPartida();
usuario = guardadoDatos.usuario;
cpu = guardadoDatos.cpu;
}
});
nuevaPartida.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
for (Barco barco : barcos) {
barco.destruido = false;
barco.tocados = 0;
barco.coordenadas = new ArrayList<Point>();
barco.botones = new ArrayList<Casilla>();
}
for (ArrayList<Casilla> botonesTemp : botones) {
for (Casilla boton : botonesTemp) {
boton.fuePresionado = false;
boton.ocupada = false;
boton.boton.setBackground(Color.WHITE);
}
}
for (ArrayList<Casilla> botonesTemp : botonesCPU) {
for (Casilla boton : botonesTemp) {
boton.fuePresionado = false;
boton.ocupada = false;
boton.boton.setBackground(Color.WHITE);
}
}
grid.removeAll();
CreateGrid();
repaint();
System.out.println(barcos);
ColocarBarcos(barcos);
repaint();
System.out.println(barcos);
Atacar(barcos, usuarioP, cpuP);
}
});
}
}
});;
}
}
}
});
}
}
Editor is loading...