Untitled
unknown
java
a year ago
16 kB
2
Indexable
Never
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); } }); } } });; } } } }); } }