0 votos

Hola a tod@s! tengo una duda en un ejercicio que me han mandado en NetBeans, tengo que realizar el Hundir La Flota pero de manera sencilla, en resumen he hecho un código pero me falta implementar un par de cosas que llevo días intentando y no logro conseguirlo, la primera, como hago que en vez de un jugador 2, sea la maquina quien dé coordenadas aleatorias, (se que es con Math.Random pero no consigo que funcione) y la segunda, he realizado un tablero con ceros, pero debo realizarlo con guiones que cuando se alcanzan con un disparo del jugador, se cambian a "A" si no hay ningún barco y a "X" si hay un barco, se que es algo sencillo pero soy algo nuevo en esto y estoy bastante perdido. Os dejo el código a continuación y muchas gracias por adelantado.

(Por cierto cuando leáis el usuario 2 realmente no existe, es decir el objetivo es dejarlo con 1 jugador contra la maquina la cual hará disparos aleatorios.)

 

package hundirlaflotaevauable;

import java.util.Scanner;

public class HundirLaFlotaEvauableplantilla {
/*
*
* @author Jose Ángel Quinto
*
*/
    public static void main(String[] args) {
        //variables
        boolean ganaUsuario1 = false, ganaUsuario2 = false;
        int[][] vectorMapaUsuario1 = new int[10][10];
        int filaUsuario1, columnaUsuario1, filaUsuario2, columnaUsuario2, tiraUsuario1Columna, tiraUsuario1Fila, tiraUsuario2Columna, tiraUsuario2Fila;
        int[][] vectorMapaUsuario2 = new int[10][10];
        //obj
        Scanner sc = new Scanner(System.in);
        //entrada
        System.out.println("VAMOS A JUGAR A HUNDIR LA FLOTA (Solo barcos, 1 espacio)");
        System.out.println();
        System.out.print("Player 1 Introduce tus coordenadas para colocar tu barco: ");
        filaUsuario1 = sc.nextInt();
        columnaUsuario1 = sc.nextInt();
        System.out.print("Player 2 Introduce tus coordenadas para colocar tu barco: ");
        filaUsuario2 = sc.nextInt();
        columnaUsuario2 = sc.nextInt();
        //operaciones
        //cargando mapas
        //mapa del usuario 1
        System.out.println("");
        System.out.println("MAPA DEL USUARIO 1");
        for (int i = 0; i < vectorMapaUsuario1.length; i++) {
            System.out.println("");
            for (int j = 0; j < vectorMapaUsuario1.length; j++) {
                if (i == columnaUsuario1) {
                    if (j == filaUsuario1) {
                        vectorMapaUsuario1[i][j] = 1;
                    }
                } else {
                    vectorMapaUsuario1[i][j] = 0;
                }
                System.out.print(vectorMapaUsuario1[i][j]);
            }
        }
        System.out.println();
        //mapa del usuario 2
        System.out.println();
        System.out.println("MAPA DEL USUARIO 2");
        for (int i = 0; i < vectorMapaUsuario2.length; i++) {
            System.out.println("");
            for (int j = 0; j < vectorMapaUsuario2.length; j++) {
                if (i == columnaUsuario2) {
                    if (j == filaUsuario2) {
                        vectorMapaUsuario2[i][j] = 1;
                    }
                } else {
                    vectorMapaUsuario2[i][j] = 0;
                }
                System.out.print(vectorMapaUsuario2[i][j]);
            }
        }
        System.out.println("");
        while (ganaUsuario1 == false && ganaUsuario2 == false) {
            System.out.println("");
            System.out.println("Usuario 1 introduce tus coordenadas para el disparo: ");
            tiraUsuario1Fila = sc.nextInt();
            tiraUsuario1Columna = sc.nextInt();
            if (tiraUsuario1Columna == columnaUsuario2 && tiraUsuario1Fila == filaUsuario2) {
                ganaUsuario1 = true;
            } else {
                System.out.println("AGUA!");
                System.out.println();
                System.out.println("Usuario 2 introduce tus coordenadas para el disparo: ");
                System.out.println();
                tiraUsuario2Fila = sc.nextInt();
                tiraUsuario2Columna = sc.nextInt();
                if (tiraUsuario2Columna == columnaUsuario1 && tiraUsuario2Fila == filaUsuario1) {
                    ganaUsuario2 = true;
                } else {
                    System.out.println("");
                    System.out.println("AGUA");
                }
            }
        }
        //salida
        if (ganaUsuario1 == true) {
            System.out.println("¡GANA EL USUARIO 1!");
        }
        if (ganaUsuario2 == true) {
            System.out.println("¡GANA EL USUARIO 2!");
        }
    }
}

 

por en Java

1 Respuesta

0 votos

Para videojuegos, existe un "bucle de juego" (que en tu caso es el bucle While: while (ganaUsuario1 == false && ganaUsuario2 == false)...). Dentro de este bucle es donde debes realizar los cálculos y las actualizaciones de pantalla (los for que pintan el tablero).

Para la parte de que el jugador 2 sea la máquina tendrás que modificar la parte de la entrada, como bien has dicho, con un random, para ello me fijaría para cambiar las líneas (en vez de utilizar la entrada por teclado sc...):

tiraUsuario2Fila = sc.nextInt();
tiraUsuario2Columna = sc.nextInt();

 

por