Autor Tema: Se me reinician las variables en un pequeño juego de texto en Java  (Leído 2569 veces)

Ricky

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Hola, estoy aprendiendo java y para aprender estaba haciendo un pequeño juego de texto, pero al perder vida y otras variables siempre seguían a su estado inicial. Antes siempre lo dejaba apartado, pero me gustaría seguir. Os adjunto el código a ver si me podéis ayudar. (Uso java con eclipse neo) Las variables son de esta primera clase main.

Código: [Seleccionar]
package main;

import java.io.IOException;
import java.util.Scanner;


public class main {
private static Scanner in;
public int b;
public int a = (int) (Math.random() * 4);
public int vida = 20;
public int pocion = 0;
public int revivir = 0;
public int descansar = 3;
public static int jugador;

public void inicio() {
in = new Scanner ( System.in );
descansar++;
if(vida >20){
System.out.println("Vida ajustada a su máximo (20)");
vida = 20;
}
if(vida <= 0 & revivir == 0){
System.out.println("Te has quedado sin vidas");
principal zona = new principal();
zona.finalizado();
}
if(vida <= 0 & revivir >= 1){
System.out.println("Te has quedado sin vidas");
System.out.println("Has usado un revivir"); revivir--;
vida = 20;
}
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
try {
Runtime.getRuntime().exec("cls");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println("");
System.out.println("[CALABOZO]");
System.out.println("");
System.out.println("¿Qué quieres hacer?");
System.out.println("[1]-Andar");
System.out.println("[2]-Descansar");
System.out.println("[3]-Ver inventario");
System.out.println("[4]-Usar un objeto");
jugador = in.nextInt();
if(jugador == 1){
System.out.println("Andando...");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
principal zona = new principal();
zona.aleatorio();
}
if(jugador == 2){
if(descansar >= 3){
System.out.println("Descansando...");
descansar = descansar - 3;
System.out.println("¡Has recuperado 3 de vida!");
vida = vida + 3;
principal zona = new principal();
zona.inicio();}
if(descansar < 3){
}
System.out.println("Estás cansado de descansar, tendrás que esperar un poco más");
principal zona = new principal();
zona.inicio();}
if(jugador == 3){
System.out.println("Esta es tu información actual");
System.out.println("Vida: "+vida);
System.out.println("Pociones: "+pocion);
System.out.println("revivir: "+revivir);
System.out.println("Escribe para volver");
jugador = in.nextInt();
principal zona = new principal();
zona.inicio();}
if(jugador == 4){
System.out.println("¿Qué objeto quieres usar?");
System.out.println("[1]-Poción");
System.out.println("[2]-(Proximamente)");
System.out.println("[3]-Volver");
jugador = in.nextInt();
if(jugador == 1){
if(pocion >= 1){
System.out.println("Has usado una poción.");
System.out.println("Recuperas 5 de vida"); vida = vida + 5;
principal zona = new principal();
zona.inicio();
}
else{
System.out.println("No tienes ninguna poción");
principal zona = new principal();
zona.inicio();
}
}
if(jugador == 2){

}
} if(jugador == 3){
principal zona = new principal();
zona.inicio();
}
}


void finalizado() {
System.out.println("-----Juego terminado-----");
System.out.println("¿Quieres volver a jugar?");
System.out.println("[1]-Si");
System.out.println("[2]-No");
jugador = in.nextInt();
if(jugador == 1){
vida = 20;
pocion = 0;
revivir = 0;
principal zona = new principal();
zona.inicio();
}
if(jugador == 2){
System.exit(0);
}
}
public void aleatorio(){
System.out.println(a);
switch(a){
case 0:
System.out.println("Te has encontrado una puerta,¿Cruzar?");
System.out.println("[1]-Si");
System.out.println("[2]-No");
jugador = in.nextInt();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
if(jugador == 1){
b = (int) (Math.random() * 3);
switch(b){
case 0:
System.out.println("¡Has encontrado un nuevo área! Parece un bosque.");
principal zona = new principal();
zona.bosque();
break;
case 1:
System.out.println("¡Hay un cofre!, vamos a abrirlo.");
b = (int) (Math.random() * 6);
switch(b){
case 0:
System.out.println("¡Has encontrado una poción!");
pocion++;
break;
case 1:
System.out.println("¡Has encontrado una poción!");
pocion++;
break;
case 2:
System.out.println("¡Has encontrado un revivir!");
revivir++;
break;
case 3:
System.out.println("Está vacio...");
principal zona2 = new principal();
zona2.inicio();
break;
case 4:
System.out.println("Tan solo había una manzana podrida");
break;
case 5:
System.out.println("Había una rata, te ha mordido");
System.out.println("Pierdes 1 de vida");
vida--;
System.out.println("Te queda "+ vida+" de vida");
principal zona8 = new principal();
zona8.inicio();
break;
}
break;
case 2:
System.out.println("Solo es una abitación vacia...");
principal zona4 = new principal();
zona4.inicio();
break;
}
}
if(jugador == 2){
principal zona = new principal();
zona.inicio();
}
else{
System.out.println("Respuesta no válida, por lo que lo tomaremos como un no...");
principal zona = new principal();
zona.inicio();
}
break;

case 1:
System.out.println("Tropiezas y te caes, pierdes 2 de vida"); vida = vida - 2;
System.out.println("Te queda "+ vida+" de vida");
principal zona = new principal();
zona.inicio();
break;

case 2:
System.out.println("Encuentras un puente muy viejo,¿Quieres atravesarlo?");
System.out.println("[1]-Si");
System.out.println("[2]-No");
jugador = in.nextInt();
if(jugador == 1){
b = (int) (Math.random() * 2);
switch(b){
case 0:
System.out.println("El puente se rompe y caes, con suerte no estaba muy alto");
System.out.println("Pierdes 5 de vida"); vida = vida - 5;
System.out.println("Te queda "+ vida+" de vida");
principal zona3 = new principal();
zona3.inicio();
break;
case 1:
System.out.println("Al otro lado del puente encuentras una mesa con comida y bebida");
System.out.println("Recuperas toda la vida");
vida = 20;
principal zona2 = new principal();
zona2.inicio();

break;
}
}
if(jugador == 2){
principal zona4 = new principal();
zona4.inicio();
}
else{
System.out.println("Respuesta no válida, por lo que lo tomaremos como un no...");
principal zona4 = new principal();
zona4.inicio();
}
break;

case 3:
System.out.println("No encuentras nada");
principal zona6 = new principal();
zona6.inicio();
break;

}
}

public void bosque() {
}

private void aleatorio2() {
System.out.println("");
System.exit(0);
}
}


Por si os lo preguntáis esta es la clase principal

Código: [Seleccionar]
package main;

public class principal {

public static void main(String[] args) {
main main = new main();
main.inicio();

}
public void inicio() {
main main = new main();
main.inicio();

}


public void finalizado() {
main main = new main();
main.finalizado();
}

public void aleatorio() {
main main = new main();
main.aleatorio();

}
public void bosque() {
// TODO Auto-generated method stub

}

}


La vida nunca baja de 20. Por cierto se que esta muy mal expresado y desordenado el código, lo he intentado hacer lo mejor que podía.

Y si necesitáis algún otro dato podéis pedírmelo y perdón por poner un código tan largo, he estado buscando mucho y no sé donde esta el error, creo que puede ser al llamar de la clase principal a la main.

Gracias de antemano.
« Última modificación: 13 de Septiembre 2016, 09:56 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Re:Se me reinician las variables en un pequeño juego de texto en Java
« Respuesta #1 en: 13 de Septiembre 2016, 10:00 »
Hola! Para mejorar en el diseño del código y tener los conceptos básicos de Java recomendamos el curso Java desde cero: http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=68&Itemid=188

En el código parece que tienes errores básicos. Por ejemplo:

if(vida <= 0 & revivir == 0){ ... }

El operador & es un operador a nivel de bits y no creo que quieras usar ese tipo de operador, seguramente la intención es usar el operador && que es el and convencional que se suele usar en programación.

Te recomiendo seguir el curso que te he comentado pues siguiéndolo te quedarán todos los conceptos básicos de Java claros

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

Ricky

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Re:Se me reinician las variables en un pequeño juego de texto en Java
« Respuesta #2 en: 13 de Septiembre 2016, 15:42 »
Hola, gracias la verdad es que no recordaba si era solo una '&' o dos, pero si tienes razón me paso por el curso que tenéis a ver si mejoro. ;)
« Última modificación: 17 de Septiembre 2016, 20:40 por César Krall »

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".