Código
package RetoFinal; import java.util.Scanner; public class BuscarTesoro { int dificultad = lector.nextInt(); Juego partida = new Juego(dificultad); do{ partida.imprimir(); partida.mover(); }while(partida.vida>=0&&partida.tesEncontrados<partida.numTesoros); if(partida.vida<0){ partida.imprimir(); }else{ partida.imprimir(); } } }
Código
package RetoFinal; class Comida extends Item{ Comida(int posX, int posY) { this.posX=posX; this.posY=posY; this.afecta=3; } }
Código
package RetoFinal; public class Elemento { int posX; int posY; }
Código
package RetoFinal; class Enemigo extends Item{ Enemigo(int posX, int posY) { this.posX=posX; this.posY=posY; this.afecta=-5; } }
Código
package RetoFinal; class Item extends Elemento{ int afecta; }
Código
package RetoFinal; import java.util.Random; import java.util.Scanner; public class Juego { boolean continuar=true; int tesEncontrados = 0; private boolean hallazgo; private boolean ver; int numTesoros; private int numEnemigos; private int numComida; int vida; private int mapDimension; private Jugador player1; private Mapa map; private Enemigo[] enemies; private Comida[] food; private Tesoro[] chest; public Juego(int dificultad) { switch(dificultad){ case 1: this.mapDimension=5; this.vida = 50; this.numTesoros=1; this.numEnemigos=2; this.numComida=8; break; case 2: this.mapDimension=8; this.numTesoros=2; this.vida = 40; this.numEnemigos=4; this.numComida=6; break; case 3: this.numTesoros=4; this.numEnemigos=8; this.numComida=4; this.vida = 30; this.mapDimension=12; break; default: break; } map = new Mapa(this.mapDimension); this.generarJugador(); this.generarEnemigos(); this.generarComida(); this.generarTesoro(); } private void generarJugador() { int posX = 0+generadorAleatorios.nextInt(this.mapDimension); int posY = 0+generadorAleatorios.nextInt(this.mapDimension); player1 = new Jugador(posX,posY); } private void generarEnemigos() { this.enemies = new Enemigo[this.numEnemigos]; for(int i=0;i<this.numEnemigos;i++){ int posX = 0+generadorAleatorios.nextInt(this.mapDimension); int posY = 0+generadorAleatorios.nextInt(this.mapDimension); int numeroAleatorio = 1+generadorAleatorios.nextInt(5); this.enemies[i] = new Enemigo(posX, posY); } } private void generarComida() { this.food = new Comida[this.numComida]; for(int i=0;i<this.numComida;i++){ int posX = 0+generadorAleatorios.nextInt(this.mapDimension); int posY = 0+generadorAleatorios.nextInt(this.mapDimension); int numeroAleatorio = 1+generadorAleatorios.nextInt(5); food[i] = new Comida(posX, posY); } } private void generarTesoro() { this.chest = new Tesoro[this.numTesoros]; for(int i=0;i<this.numTesoros;i++){ int posX = 0+generadorAleatorios.nextInt(this.mapDimension); int posY = 0+generadorAleatorios.nextInt(this.mapDimension); int numeroAleatorio = 1+generadorAleatorios.nextInt(5); chest[i] = new Tesoro(posX, posY); } } public void imprimir() { map.matriz[player1.posX][player1.posY] = '@'; map.imprimir(); this.generarItem(); } public void mover() { if(!this.hallazgo){ map.matriz[player1.posX][player1.posY] = ' '; } if(ver){ map.matriz[player1.posX][player1.posY] = '?'; } char opcion = lector.next().charAt(0); switch(opcion){ case 'a': player1.moverX(-1); break; case 'w': player1.moverY(-1); break; case 's': player1.moverY(1); break; case 'd': player1.moverX(1); break; } this.encontrarItem(); this.vida-=2; } private void generarItem() { int i; this.hallazgo=false; for(i=0;i<this.numTesoros;i++){ if(player1.posX==chest[i].posX&&player1.posY==chest[i].posY){ map.matriz[player1.posX][player1.posY] = '$'; this.hallazgo=true; } } for(i=0;i<this.numComida;i++){ if(player1.posX==food[i].posX&&player1.posY==food[i].posY){ map.matriz[player1.posX][player1.posY] = '+'; this.hallazgo=true; } } for(i=0;i<this.numEnemigos;i++){ if(player1.posX==enemies[i].posX&&player1.posY==enemies[i].posY){ map.matriz[player1.posX][player1.posY] = '!'; this.hallazgo=true; } } } private void encontrarItem() { int i; for(i=0;i<this.numTesoros;i++){ if(player1.posX==chest[i].posX&&player1.posY==chest[i].posY){ this.tesEncontrados++; } } for(i=0;i<this.numComida;i++){ if(player1.posX==food[i].posX&&player1.posY==food[i].posY){ this.vida+=3; } } for(i=0;i<this.numEnemigos;i++){ if(player1.posX==enemies[i].posX&&player1.posY==enemies[i].posY){ this.vida-=5; } } } }
Código
package RetoFinal; class Jugador extends Elemento{ int vida; Jugador(int posX, int posY) { this.posX=posX; this.posY=posY; } public void moverX(int i){ this.posY += i; } public void moverY(int j){ this.posX += j; } }
Código
package RetoFinal; class Mapa { char[][] matriz; private int dimension; public Mapa(int d) { this.dimension = d; this.matriz = new char[d][d]; for(int i=0;i<this.dimension;i++){ for(int j=0;j<this.dimension;j++){ this.matriz[i][j]='?'; } } } void imprimir() { for(int i=0;i<this.dimension;i++){ for(int j=0;j<this.dimension;j++){ } } } }
Código
package RetoFinal; class Tesoro extends Elemento{ Tesoro(int posX, int posY) { this.posX=posX; this.posY=posY; } }
lo que tengo duda es que al momento de que el jugador haga un movimiento pregunte si se quiere mover o quiere solo ver la casilla si se mueve perderia 2 de vida y si solo ve lo que hay en la casilla perderia 1 vida