Java - Buscar tesoro Arrays ayuda

 
Vista:
sin imagen de perfil

Buscar tesoro Arrays ayuda

Publicado por Jose Luis (17 intervenciones) el 26/11/2021 11:13:50
Hola me han propuesto un ejercicio importantisimo que no soy capaz de hacer si alguien es capaz de ayudarme
Deberá crear un juego en el que participe de un personaje (P) y un tesoro (T). Partirás de un mapa como el
siguiente:
Donde las X representan paredes y les – representan las casillas por donde puede moverse el personaje.
Este mapa estará en un array bidimensional de 5x5, donde desde su definición, se encontrará
cargado con la distribución anterior.
Lo primero que tendrá que hacer el programa será pedir al usuario la posición donde se ubicarán, de inicio,
el personaje y el tesoro.
Por eso, recomiendo mostrar unas guías numéricas para que el usuario pueda indicar las casillas.
Vemos un ejemplo con las casillas del personaje (P) y del tesoro (T). Las guías numéricas no
forman parte del array.
Seguidamente, se pedirá al usuario hacia qué dirección quiere moverse, utilizaremos “wasd” para
movernos: arriba (w), abajo (s), derecha (d), izquierda (a).
Tendrás que controlar que la acción no se salga del mapa o choque contra una pared, en este caso
será necesario mostrar un mensaje de “Movimiento erróneo” y dar opción para introducir otra dirección.
Si la dirección es correcta, deberá recargarse el mapa con la nueva posición y volver a pedir
por el siguiente movimiento. Vemos un ejemplo de comportamiento del mapa:
El juego finalizará cuando el personaje llegue al tesoro. En ese momento habrá que mostrar el
mensaje "Has ganado" y finalizar el programa.

Algo asin:

111






De momento tengo esto me da un error
/**
* Minijuego "Busca el tesoro"
*
* Se colocan una mina y un tesoro de forma aleatoria en un cuadrante de
* cuatro filas por cinco columnas. El usuario intentará averiguar dónde
* está el tesoro.
*
* @author Luis José Sánchez
*/

public class BuscaTesoro {

public static void main(String[] args) {

// se definen constantes para representar el
// contenido de las celdas
final int VACIO = 0;
final int MINA = 1;
final int TESORO = 2;
final int INTENTO = 3;


int x;
int y;
int[][] cuadrante = new int[5][4];

// inicializa el array
for(x = 0; x < 4; x++) {
for(y = 0; y < 3; y++) {
cuadrante[x][y] = VACIO;
}
}
// coloca la mina
int minaX = (int)(Math.random() * 5);
int minaY = (int)(Math.random() * 4);
cuadrante[minaX][minaY] = MINA;

// coloca el tesoro
int tesoroX;
int tesoroY;
do {
tesoroX = (int)(Math.random() * 5);
tesoroY = (int)(Math.random() * 4);
} while ((minaX == tesoroX) && (minaY == tesoroY));
cuadrante[tesoroX][tesoroY] = TESORO;

// juego
System.out.println("¡BUSCA EL TESORO!");
boolean salir = false;
String c = "";
do {
// pinta el cuadrante
for(y = 3; y >= 0; y--) {
System.out.print(y + "|");
for(x = 0; x < 5; x++) {
if (cuadrante[x][y] == INTENTO) {
System.out.print("X ");
} else {
System.out.print(" ");
}
}
System.out.println();
}
System.out.println(" ----------\n 0 1 2 3 4\n");

// pide las coordenadas
System.out.print("Coordenada x: ");
x = Integer.parseInt(System.console().readLine());
System.out.print("Coordenada y: ");
y = Integer.parseInt(System.console().readLine());

// mira lo que hay en las coordenadas indicadas por el usuario
switch(cuadrante[x][y]) {
case VACIO:
cuadrante[x][y] = INTENTO;
break;
case MINA:
System.out.println("Lo siento, has perdido.");
salir = true;
break;
case TESORO:
System.out.println("¡Enhorabuena! ¡Has encontrado el tesoro!");
salir = true;
break;
default:
}
} while (!salir);

// pinta el cuadrante
for(y = 3; y >= 0; y--) {
System.out.print(y + " ");
for(x = 0; x < 5; x++) {
switch(cuadrante[x][y]) {
case VACIO:
c = " ";
break;
case MINA:
c = "* ";
break;
case TESORO:
c = "€ ";
break;
case INTENTO:
c = "X ";
break;
default:
}
System.out.print(c);
}
System.out.println();
}
System.out.println(" ----------\n 0 1 2 3 4\n");
}
}



image
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder