Autor Tema: Ayuda con mini juego  (Leído 14336 veces)

0 Usuarios y 4 Visitantes están viendo este tema.

Desconectado Camus de Acuario

  • The Communiter-
  • *
  • Mensajes: 8455
  • Ōrora Ekusukyūshon!
Re: Ayuda con mini juego
« Respuesta #15 : noviembre 06, 2008, 05:33:26 pm »
cual ayudante de universidad de winnipeg ni que chacharaca, aca en la mera svcommunity sacamos el orgullo y casta salvadoreña jajajajaja
una cosa, a la hora de poner:

Código: [Seleccionar]
int computerScore = computerTurn();
int playerScore = turn();

dale vuelta porque asi empieza jugando la compu

Desconectado g00mba

  • The Communiter-
  • *
  • Mensajes: 14587
  • SOMOS LEGION
    • ALABADO SEA MONESVOL
Re: Ayuda con mini juego
« Respuesta #16 : noviembre 06, 2008, 05:37:11 pm »
jajaja awebos, solo q yo lo hago al revés... primero encapsulo y despues veo donde esta la cagada... es mas fácil identificarla así :P vos lo haces al reves camus... cada quien hace su arte a su manera  :D
lolz
yo te sugeria q el main te quedara como en este ejemplo de una babosadita q hice en la u:

Código: [Seleccionar]
package GuiaEj1;

/**
 *
 * @author antonio
 */
public class Main {


public static void main(String [] argumentos){
     if(argumentos.length!=3) {
             System.out.println("Escriba tres argumentos ej: 3 x 3");
             return;}
     else{
    Ej1 instancia= new Ej1();
    instancia.transforma(argumentos);
    instancia.escojeOperador(instancia.oper);}
   
   
}

}
si te fijas ese main no hace nada mas q controlar q los argumentos sean correctos y despues comienza a llamar métodos para obtener respuestas, toda la lógica esta encapsulada en procedimientos separados, en tu caso, tu main solo se tiene que encargar de correr el juego la primera vez (la primera instancia) y de ahi preguntarte si lo queres seguir corriendo (seguir instanciando)
« Última Modificación: noviembre 06, 2008, 05:39:11 pm por g00mba »

Desconectado Camus de Acuario

  • The Communiter-
  • *
  • Mensajes: 8455
  • Ōrora Ekusukyūshon!
Re: Ayuda con mini juego
« Respuesta #17 : noviembre 06, 2008, 05:42:23 pm »
Yo tambien lo hago como vos, pero en este caso el programa ya estaba hecho y resultaba mas facil ver donde estaba el error, para reconstruirlo, porque si encapsulabamos de un solo y sin querer podiamos arreglar el error y al final ni sabriamos porque era.....

ahora pregunta, es regla del pig (nombre de ese juego) que si tenes resultado iguales gane la compu???


Desconectado moyo18

  • The Communiter-
  • *
  • Mensajes: 1719
Re: Ayuda con mini juego
« Respuesta #18 : noviembre 06, 2008, 05:43:11 pm »
Código: [Seleccionar]
int computerScore = computerTurn();
int playerScore = turn();

si es cierto eso estaba viendo, no se porq .... ya arreglo para q solo metodos salgan en el main

Desconectado g00mba

  • The Communiter-
  • *
  • Mensajes: 14587
  • SOMOS LEGION
    • ALABADO SEA MONESVOL
Re: Ayuda con mini juego
« Respuesta #19 : noviembre 06, 2008, 05:44:28 pm »
ahora pregunta, es regla del pig (nombre de ese juego) que si tenes resultado iguales gane la compu???
jajaj lo decis por q no hay condicion para empate? yo también me fijé en eso   :huh:

Desconectado Camus de Acuario

  • The Communiter-
  • *
  • Mensajes: 8455
  • Ōrora Ekusukyūshon!
Re: Ayuda con mini juego
« Respuesta #20 : noviembre 06, 2008, 05:56:00 pm »
bueno aca esta lo que hice:

Código: [Seleccionar]
import java.util.Random;
import java.util.Scanner;
import java.io.*;       
/**
 * Play one turn of Pig
 * @author (Moyo)
 * @version (1.0)
 *
 */
public class Pig
{
    static Random r = new Random();  // a random number generator
    static Scanner kb = new Scanner(System.in);
    static String playerName;
    static int playerScore;
    static int computerScore;
   
    public static void main(String[] args)
    {
      System.out.println("This game is a dice game to play against the computer \n" +
                         " to win the game you have to get the greater score \n" +
                         " if the computer gets a greater score than you, then you \n" +
                         " will lose the game.\n");
      System.out.println("you can still playing if you get a score less then 24, but \n" +
                         "if you get 1 your score will be equal to 0 \n" );
      System.out.println("What is your name? ");
      playerName=getName();
     
      // Find out who wins... the one with the greater score will win the game
      playerScore = turn();
      computerScore = computerTurn();
     
      System.out.println(playerName+", your total "+playerScore);
      System.out.println("Computer's total "+computerScore);
     
      if ( computerScore < playerScore )
          System.out.println("The Winner is: " + playerName);
      else
          System.out.println("The Winner is the Computer"); 
     
           
      // Ask the user if they want to continue playing     
      System.out.println("Do you want to play again? (y/n) ");
        while (kb.next().equals("y"))
        {
        playerScore = turn();
        computerScore = computerTurn();
           
            System.out.println(playerName+", your total "+playerScore);
            System.out.println("Computer's total "+computerScore);
           
            if ( computerScore < playerScore )
                System.out.println("The Winner is: " + playerName);
            else
                System.out.println("The Winner is the Computer");
           
            System.out.println("Do you want to play again? (y/n) ");
        }
    }
/**
 * Play the game
 * @return the player's name
 *
 */

   
/**
 * Get the player's name
 * @return the player's name
 *
 */
    public static String getName()
    {
        return kb.next();
    }   
/**
 * Manage a turn of the dice game Pig
 * @return the value of the player's turn
 *
 */
    public static int turn()
    {
        int turnTotal = 0;
        int roll;
        int totalScore = 0;
        Boolean again=true;
        // repeatedly roll the die until a 1 is rolled
        // or the sum exceeds 24
        // or the user says halt
        do
        {       
            roll = toss(6);
            turnTotal += roll ;
            if (roll != 1)
            {
            System.out.println(playerName+", you rolled "+roll+" TOTAL: "+turnTotal);
            }
            else
            System.out.println(playerName+", you rolled "+roll+" TOTAL: 0");
           
            if (roll!=1)
            {  // ask user if they want to roll again
                System.out.println("roll again? (y/n) ");
                again = kb.next().equals("y");
            }
         
        } while (again && roll!=1 && turnTotal<25);
        // return 0 if a 1 was rolled last, sum of the throws otherwise
        return (roll != 1) ? turnTotal : 0 ;               
    }
/**
 * Computer Turn
 * @return the value of the computer's turn
 *
 */   
    public static int computerTurn()
    {
        int compTurnTotal = 0;
        int compRoll = 0;                 
        // repeatedly roll the die until a 1 is rolled
        // or the sum exceeds 24       
       
        while (compRoll!=1 && compTurnTotal<25)
        {       
            compRoll = toss(6);
            compTurnTotal += compRoll ;                       
            if (compRoll != 1)
            {
            System.out.println("Computer rolled "+compRoll+" TOTAL: "+compTurnTotal);
            }
            else
            System.out.println("Computer rolled "+compRoll+" TOTAL: 0");
                                               
        }
        // return 0 if a 1 was rolled last, sum of the throws otherwise
        return (compRoll != 1) ? compTurnTotal : 0 ;                               
    }
/**
 * Toss a die
 * @param numberSides the number of sides on the die
 * @return a random value between 1 and numberSides
 *
 */
    public static int toss(int numberSides)
    {
        return r.nextInt(numberSides)+1;       
    }           
}

que hice?
-arregle los errores que habian
-mejore un poquito los tiros para que vaya mostrando el total, asi estas mas al tanto

falta:
-encapsulamiento, clase principal

no la hago porque ya estoy saliendo del trabajo y me voy a vagar para desestresarme jajajajajaja saludos

Moyo: un placer como siempre ayudarte
Goomba: me llega  :thumbsup: nunca habia tenido la oportunidad de hablar con vos y veo que sabes nos estamos viendo al raton

saludos

Desconectado moyo18

  • The Communiter-
  • *
  • Mensajes: 1719
Re: Ayuda con mini juego
« Respuesta #21 : noviembre 06, 2008, 05:57:34 pm »
jajaj lo decis por q no hay condicion para empate? yo también me fijé en eso   :huh:

si eso no lo he hecho.... tengo q arreglar eso

el main me queda asi

Código: [Seleccionar]
public static void main(String[] args)
    {
      //Begins
      rules();                 
      //Ask player's name
      System.out.println("What is your name? ");
      playerName=getName();
      //Find out who wins the game... the one with the greater score will win
      players();
      // Ask the user if they want to continue playing     
      playAgain();
    }

ademas hay algo q no me queda claro en el ejercicio q quieren q haga

Citar
You will need another version of turn(), call it computerTurn(), that is used by the second player, the "computer".  You can decide on the strategy for the computer to use in computerTurn(), and you can adjust your strategy as well by modifying turn(). 

ya hice la copia con el q trabaja el computerturn, pero no entiendo a lo q el se refiere con estrategias de juego...


Desconectado Camus de Acuario

  • The Communiter-
  • *
  • Mensajes: 8455
  • Ōrora Ekusukyūshon!
Re: Ayuda con mini juego
« Respuesta #22 : noviembre 06, 2008, 06:01:53 pm »
mmmmm alli eso de estrategias es de IA, inteligencia artificial, como vos tiras primero, supuestamente la compu ya sabe cual es tu marcador, y tendria que ser capaz de que cuando tire, si en ese tiro ya tiene un numero mayor que vos y que por lo tanto gane, que ya no siga tirando porque le puede salir un 0 y perder ella

asi: tiras y al final te quedas en 19, no te sale 1 que te resetee el contador pero le pones que ya no queres tirar, luego tira la compu, saca 20 y decide ya no tirar porque ya te gano

otro ejemplo tiras, tiras, tiras, sacas 1 y se te resetea el total a 0, viene la compu, tira 2, y ya no sigue tirando porque ya te gano

asi lo comprendo

bueno, IA IA no es jajajaja es nada mas un if que evalue tu puntaje y decida si jugar o no juaaaaaaaaa!!!!!

Desconectado g00mba

  • The Communiter-
  • *
  • Mensajes: 14587
  • SOMOS LEGION
    • ALABADO SEA MONESVOL
Re: Ayuda con mini juego
« Respuesta #23 : noviembre 06, 2008, 06:02:18 pm »

ya hice la copia con el q trabaja el computerturn, pero no entiendo a lo q el se refiere con estrategias de juego...

bueno siendo un juego de dados...  no hay mucha estrategia definida, pero podrias poner una condicion q la computadora jugara "conservativamente" q si al acercarse a digamos 20 parara de tirar o si juega "arriesgado" y trata de llegar al valor mas cercano sin cagarla...

Desconectado moyo18

  • The Communiter-
  • *
  • Mensajes: 1719
Re: Ayuda con mini juego
« Respuesta #24 : noviembre 06, 2008, 06:16:18 pm »
Citar
bueno siendo un juego de dados...  no hay mucha estrategia definida, pero podrias poner una condicion q la computadora jugara "conservativamente" q si al acercarse a digamos 20 parara de tirar o si juega "arriesgado" y trata de llegar al valor mas cercano sin cagarla...

bueno lo q dicen los dos ya lo tenia algo asi antes, nada mas q tenia si la pc alcanza 15, pero me imagine q si el player saca 20 y deja d jugar la pc no tendra posibilidad de ganar.

creo q ire por lo q dice camus.... creare una par d if para comprobar resultado y si el resultado d el jugador es menor q la pc entonces q break el ciclo la pc y gane
« Última Modificación: noviembre 06, 2008, 06:33:18 pm por moyo18 »

Desconectado g00mba

  • The Communiter-
  • *
  • Mensajes: 14587
  • SOMOS LEGION
    • ALABADO SEA MONESVOL
Re: Ayuda con mini juego
« Respuesta #25 : noviembre 06, 2008, 06:50:31 pm »
Goomba: me llega  :thumbsup: nunca habia tenido la oportunidad de hablar con vos y veo que sabes nos estamos viendo al raton
grax, un gusto tambien! pero creo q ya habiamos parlado  :huh: no me acuerdo :P soy medio despistado :P

lo de los 20 era un ejemplo, creo q seria de q tratara de ganar con la menor cantidad posible de tiradas, como de meta lo q saca el jugador +1 con límite 25, ya seria un poco más elaborado.


Desconectado moyo18

  • The Communiter-
  • *
  • Mensajes: 1719
Re: Ayuda con mini juego
« Respuesta #26 : noviembre 06, 2008, 06:58:57 pm »
ya lo hice.. lo q hice fue por ejemplo como son numeros random los q tira osea q hasta la pc puede perder, pero igual digmos si la suma de el jugador es 10 cuando se retira entonces va la pc, si la pc no tiene 1 todavia entonces ira si llega a tener mas q 10 entonces ganara.

ahora si el jugador pasa de los 24 y la pc tambien sera d ver quien obtiene el mayor puntaje, y claro si el jugador tiene 0 la pc si tira la primera vez y tiene mas q 0 entonces hasta ahi llegara y ganara.

Código: [Seleccionar]
while (compRoll!=1 && compTurnTotal<25)
        {       
            compRoll = toss(6);
            compTurnTotal += compRoll ;           
            System.out.println("Computer rolled "+compRoll);
           
            // if the player score is less the computer score then break the while and
            // the computer will win
            if ( playerScore < compTurnTotal)
                break;
        }

Desconectado Camus de Acuario

  • The Communiter-
  • *
  • Mensajes: 8455
  • Ōrora Ekusukyūshon!
Re: Ayuda con mini juego
« Respuesta #27 : noviembre 07, 2008, 10:54:37 am »
bueno les traigo el juego terminado, encapsulado el main y con un pequeño toque de ia, basica que ni se le puede llamar ia pero por lo menos hace la paja

Código: [Seleccionar]
import java.util.Random;
import java.util.Scanner;       
/**
 * Play one turn of Pig
 * @author (Moyo)
 * @version (1.0)
 *
 */
public class Pig
{
    static Random r = new Random();  // a random number generator
    static Scanner kb = new Scanner(System.in);
    static String playerName;
    static int playerScore;
    static int computerScore;
    static int roll;
    static int compTurnTotal;
    static int compRoll;
    static int turnTotal = 0;
   
   
    public static void main(String[] args)
    {
      init();
     
      playerName=getName();

      players();
     
      winner();
     
      playAgain();
     
    }

/**
 * Print the initialization rules
 *
 */
    public static void init()
    {
    System.out.println("This game is a dice game to play against the computer \n" +
                "to win the game you have to get the greater score \n" +
                "if the computer gets a greater score than you, then you \n" +
                "will lose the game.\n");
System.out.println("you can still playing if you get a score less then 24, but \n" +
                "if you get 1 your score will be equal to 0 \n" );
}

/**
 * Get the player's name
 * @return the player's name
 *
 */
    public static String getName()
    {
    System.out.println("What is your name? ");
    return kb.next();
    }     
   
/**
 * Players games
 *
 */
    public static void players()
    {
    // Find out who wins... the one with the greater score will win the game
        playerScore = turn();
        computerScore = computerTurn(); 
    }

/**
 * Find the winner
 *
 */
    public static void winner()
    {
    System.out.println(playerName+", your total is: "+playerScore);
        System.out.println("Computer's total is: "+computerScore);
       
        if ( computerScore < playerScore )
            System.out.println("The Winner is: " + playerName);
        else if ( computerScore == playerScore )
            System.out.println("It's a draw");
        else
            System.out.println("The Winner is: The Computer");
    }

/**
 * Players plays again
 *
 */
    public static void playAgain()
    {
    System.out.println("Do you want to play again? (y/n) ");
        while (kb.next().equals("y"))
        {
          players();
         
          winner();
         
                System.out.println("Do you want to play again? (y/n) ");
        }
    }
   

   
/**
 * Manage a turn of the dice game Pig
 * @return the value of the player's turn
 *
 */
    public static int turn()
    {
    turnTotal = 0;
        Boolean again=true;
        roll = 0;
        // repeatedly roll the die until a 1 is rolled
        // or the sum exceeds 24
        // or the user says halt
        while (again && roll!=1 && turnTotal<25)
        {       
            roll = toss(6);
            turnTotal += roll ;
            if (roll != 1)
            {
            System.out.println(playerName+", you rolled "+roll+" TOTAL: "+turnTotal);
            // ask user if they want to roll again
                System.out.println("roll again? (y/n) ");
                again = kb.next().equals("y");
            }
            else
            { 
            turnTotal = 0;
            //System.out.println(playerName+", you rolled "+roll+" TOTAL: "+turnTotal);
            System.out.println(playerName+", you rolled "+roll+" TOTAL: 0");
            }
        }
        // return 0 if a 1 was rolled last, sum of the throws otherwise
        return (roll != 1) ? turnTotal : 0 ;               
    }

/**
 * Computer Turn
 * @return the value of the computer's turn
 *
 */   
    public static int computerTurn()
    {
        // repeatedly roll the die until a 1 is rolled
        // or the sum exceeds 24       
       
    compTurnTotal = 0;
        compRoll = 0;
                 
        while (compRoll!=1 && compTurnTotal<25 && compTurnTotal<=turnTotal)
        {       
            compRoll = toss(6);
            compTurnTotal += compRoll ;                       
            if (compRoll != 1)
            {
            System.out.println("Computer rolled "+compRoll+" TOTAL: "+compTurnTotal);
            }
            else
            System.out.println("Computer rolled "+compRoll+" TOTAL: 0");
                                               
        }
       
        // return 0 if a 1 was rolled last, sum of the throws otherwise
        return (compRoll != 1) ? compTurnTotal : 0 ;                               
    }

/**
 * Toss a die
 * @param numberSides the number of sides on the die
 * @return a random value between 1 and numberSides
 *
 */
    public static int toss(int numberSides)
    {
        return r.nextInt(numberSides)+1;       
    }           
}
« Última Modificación: noviembre 07, 2008, 11:29:28 am por Camus de Acuario »

Desconectado kikeuntercio

  • Sv Vampire Team ®
  • The Communiter-
  • ***
  • Mensajes: 1545
  • -] java Adict [-
    • Comunidad Bitcoin de Oriente
Re: Ayuda con mini juego
« Respuesta #28 : noviembre 07, 2008, 02:12:35 pm »
y como se juega, y otros detalles mas porfa, claro si se puede sino tacará batallar para ver si se le encuentra la idea XD digo para uno que es medio burro.
Miembro y co-fundador original de VampireTeam
Bitcoiner
CopyMaster en Finandy.com como: WillockSV

Desconectado g00mba

  • The Communiter-
  • *
  • Mensajes: 14587
  • SOMOS LEGION
    • ALABADO SEA MONESVOL
Re: Ayuda con mini juego
« Respuesta #29 : noviembre 07, 2008, 02:28:26 pm »
q bien te quedó camus, bien abstraido, me gusta la sencillez de la funcion de playagain.


untencio, es mas o menos como jugar 21 (o black jack) pero con un dado.