Untitled
unknown
java
a year ago
13 kB
1
Indexable
Never
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 =="); } } });; } } } }); } }