Help juego de la bolita

MALONCHY

Lanero Regular
Se unió
5 Ene 2007
Mensajes
4
hola laneros!,


tengo un problemilla.... con el juego de la bolita... aca no es de abilidad si no suerte.
nota: es en java y soy primiparo en programacion u.u

bueno resulta q tengo q hacer un algoritmo el cual hace lo siguiente:

1) pide el nombre del jugador
2) luego lo hace escoger entre 3 opciones las cuales son las posiciones donde posiblemente esta la bolita.
3)si opcion = a la que dio el usuario gana 5k puntos si no le resta y se va acomulando. (se comienza con 10k)
4)luego pregunta si quiere apostar de nuevo
5)si quiere apostar de nuevo vuelve y hace lo q copie en "2)"
6)si no quiere debe salir un aviso donde diga "nuevo jugador?"
7)si le el usuario dice q si en "nuevo jugador" vuelve y pide el nombre del jugador y comienza desde el paso "1)"
8)por ultimo en una matriz si el jugador no quiere apostar mas y no hay "nuevo jugador" debera imprimir los siguientes datos: nombre del jugador, gano 5 o perdio 5k, y el saldo total.


bueno mis problemas son :
-cuando le doy q no quiero apostar mas se sale del ciclo y termina el proceso y no me pide nuevo jugador.

-o si le doy que si en nuevo jugador no retorna y no vuelve al inicio donde pregunta el nombre y todo el proceso nuevamente.


gracias por tomarse el tiempo de leer :-p
 

MALONCHY

Lanero Regular
Se unió
5 Ene 2007
Mensajes
4
esto es lo que llevo


import java.util.Random;
import java.io.*;
public class bolita2 {

public static void main(String[] args) throws IOException {
BufferedReader Leer = new BufferedReader
(new InputStreamReader (System.in));
int n, i=0, op,acom, puntos= 10000, y=0;
String nombre, otra;


Random R = new Random ();
System.out.println("presione 1 para iniciar el juego" );

y= Integer.parseInt(Leer.readLine());

System.out.println("escriba el nombre del jugador:" );



nombre= (Leer.readLine());

while((y==1)&&(puntos!=0)){

do{




n=(int) ((3+1-1)*R.nextFloat()+1);

System.out.println("oprima el numero de la opcion a escojer:" );

System.out.println("op1 op2 op3");

System.out.println(" puntos"+ puntos);

op= Integer.parseInt(Leer.readLine());

if (n==1)

{
System.out.println("(o) ( ) ( )");


}
else

if (n==2)

{
System.out.println("( ) (o) ( )");


}
else

if (n==3)

{
System.out.println("( ) ( ) (o)");


}




if (n==op)

{
System.out.println("felicidades ha ganado 5000 puntos");
puntos= puntos+5000;
System.out.println("total puntos=" + puntos);

}

else


{

System.out.println("lastima ha perdido 5000 puntos");
puntos= puntos-5000;
System.out.println("total puntos=" + puntos);
}




System.out.println("otra apuesta?");
otra=Leer.readLine();
} while (otra.equals ("S")== true || otra.equals("s")==true);

while (otra.equals ("S")== true || otra.equals("s")==true);


System.out.println("¿otro jugador?");
otra=Leer.readLine();


while (otra.equals ("S")== true || otra.equals("s")==true);
return ;
}







}
}
 

khamulete

Lanero Regular
Se unió
20 May 2011
Mensajes
3
una posible solución

Te propongo que revises esta estructura para tu juego. Nota especialmente cómo se dan los ciclos while.
Te recomiendo, además, utilizar nombres bien claros para tus variables, abusar de los comentarios y planear tu código ANTES de programar... son algunas buenas prácticas que se cogen con el tiempo :p.
No he añadido comprobaciones ni control de errores para no enredarte con cuestiones de calidad...la idea es que aprendas paso a paso :D

No he probado el código en un compilador pero la idea es más o menos esa, y con los comentarios te vas guiando en el razonamiento del algoritmo.

Código:
//inicializar variables: que queden para que entren derecho a ambos while
BufferedReader Leer = new BufferedReadernew InputStreamReader (System.in));
int aleatorio, OpJugador, Apostar, Puntos= 10000, Partida=1;
String nombre, otra;
while(Partida==1){ //mientras quiera mantener el juego corriendo. Inicia nuevo juego
    
    //leer: pedir nombre de jugador
    System.out.println("escriba el nombre del jugador:" );
    nombre= (Leer.readLine());
    
    // Habilitar apuestas
    Apostar = 1;
    while(Apostar==1 && Puntos > 0){ //mientras quiera seguir apostando y tenga saldo
        
        //leer: que el jugador seleccione su opcion: 1, 2 o 3
        System.out.println("oprima el numero de la opcion a escoger:" );
        System.out.println("op1 op2 op3");
        OpJugador = Integer.parseInt(Leer.readLine());
        
        //generar un aleatorio entre 1 y 3, que indica donde cayo la bolita
        aleatorio =(int) ((3+1-1)*R.nextFloat()+1);
        
        //imprimir: los dibujitos de donde cayo la bolita 
        if (aleatorio==1)
        {
            System.out.println("(o) ( ) ( )");
        }
        else if (aleatorio==2)
        {
            System.out.println("( ) (o) ( )");
        }
        else if (aleatorio==3)
        {
            System.out.println("( ) ( ) (o)");
        } 
        
        if(OpJugador == aleatorio){//si la opcion del jugador es la misma del aleatorio
            //sumarle los 5000 puntos
            Puntos= Puntos+5000;
            //dar mensaje de felicitacion
            System.out.println("felicidades ha ganado 5000 puntos");
            System.out.println("total puntos=" + Puntos);
        }
        else{
            //restarle los 5000 puntos
            Puntos= Puntos-5000;
            //dar mensaje de derrota
            System.out.println("lastima ha perdido 5000 puntos");
            System.out.println("total puntos=" + Puntos);
        }
        
        //leer: que el jugador seleccione si quiere volver a apostar
        System.out.println("otra apuesta? (S/N)");
        otra = Leer.readLine();
        // Si no quiere volver a apostar, este if decide si se pide nuevo jugador o si se cierra el juego
        if(otra.equals("N")){ //si no quiere volver a apostar
            
            //asignar: salir del while interno
            Apostar = 0;
            
            //leer: quiere nuevo jugador o cerrar el juego?
            System.out.println("Quiere iniciar con otro nombre de jugador? (S/N)");
            otra = Leer.readLine();
            if(otra.equals("N")){ //cerrar el juego
                //asignar: salir del while externo
                Partida = 0;
            }
        }    
    }
}
//resultados finales del juego: lo de la matriz que dices...no entiendo si quieres un historial 
//completo o de la ultima partida o que...pero eso te lo dejo resolver por tu cuenta :P


Mete esto en tu Main a ver cómo va dando la cosa.
 
Arriba