Problemas com JOptionPane

3 respostas
Scobar20
ola pessoal, tudo certo? Estou com um problema em JOptionPane, não consigo fazer aparecer, em um jogo, o nome do jogador falando se o mesmo ganhou ou perdeu o jogo
import javax.swing.JOptionPane;

public class CrapsTest {
	public static void main (String args[])
	{
		JOptionPane.showMessageDialog(null, "Pressione OK para começar o jogo");
	    final String name = JOptionPane.showInputDialog("Qual é o seu nome?");
		Craps game = new Craps();
		game.play();
	}

}
import java.util.Random;
import java.util.Scanner;

import javax.swing.JOptionPane;

public class Craps {
	private Random randomNumbers = new Random();
	
	private enum Status { CONTINUE, WON, LOST};
	
	private final static int SNAKE_EYES = 2;
	private final static int TREY = 3;
	private final static int SEVEN = 7;
	private final static int YO_LEVEN = 11;
	private final static int BOX_CARS = 12;
	String name = null;
	
	public void play()
	{
		int myPoint = 0;
		Status gameStatus;
		
		int sumOfDice = rollDice();
		
		switch (sumOfDice)
		{
		case SEVEN:
		case YO_LEVEN:
			gameStatus = Status.WON;
			break;
			
		case SNAKE_EYES:
		case TREY:
		case BOX_CARS:
			gameStatus = Status.LOST;
			break;
			
			default:
				gameStatus = Status.CONTINUE;
				myPoint = sumOfDice;
				 System.out.printf("sua pontuação é %d\n", myPoint);
				break;
		}
		
		while(gameStatus == Status.CONTINUE)
		{
			sumOfDice = rollDice();
			
			if (sumOfDice == myPoint)
				gameStatus = Status.WON;
			else
				if (sumOfDice == SEVEN)
			
					gameStatus = Status.LOST;
		}
				
		if (gameStatus == Status.WON)
		
			JOptionPane.showMessageDialog(null, "Jogador %s Wins ",name);
		else
			JOptionPane.showMessageDialog("Jogador %s loses",name);
		
		}
	
	public int rollDice()
	{
		int die1 = 1 + randomNumbers.nextInt(6);
		int die2 = 1 + randomNumbers.nextInt(6);
		
		int sum = die1 + die2;
		
		
		
		System.out.printf ("Player rolled %d + %d = %d\n",die1, die2, sum);
		return sum;
	}

}

Acredito que o problema maior seja entre a linha 57 e 61, mas se não for me avisem. Pois não sei o que devo usar para conseguir ler a variavel name, como podem ver, entre wins e loses, usei mais de uma maneira já, e mesmo assim não consegui.

Desde já agradeço a ajuda de todos

att
Felipe Luna Scobar

3 Respostas

Radams_Venceslau

Olá Socabar20, se eu entendi direito vc tem nessa linha:

JOptionPane.showMessageDialog(null, "Jogador %s Wins ",name);

e ai não tah imprimindo a variável ‘name’ do jogador?
se for esse o problema simples, faz assim:

JOptionPane.showMessageDialog(null, "Jogador %s Wins "+name);

ou

se a variavel ‘name’ estiver null, presta atenção na sua Classe Principal vc está fazendo:

final String name = JOptionPane.showInputDialog("Qual é o seu nome?");   
Craps game = new Craps();   
game.play();

Agora olhe na sua Classe Craps nessa linha:

String name = null;

Quando vai imprimir vai ficar null, para resolver isso faz assim, na sua Classe CrapsTest:

final String name = JOptionPane.showInputDialog("Qual é o seu nome?");
Craps game = new Craps(name); //passei o nome digitado do jogador para o construtor da classe Craps 
game.play();

Lá na sua Classe Craps cria o construtor recebendo o valor do atributo passado e atribui a variável interna ‘name’ da classe:

String name = null;

public Craps(String name) {
        this.name = name;
}

Pronto resolvido
Desculpe, se não compreendi a pergunta, mais foi o q deu a entender.

Bons estudos…

Scobar20

o problema era o que você entendeu mesmo, não consigo exibir o nome digitado pelo jogador, na frase "Jogador Felipe Wins".

então cara, testei o que você falou, porém não rolou...segue abaixo o jeito que fiz com o código, se puder me falar se era realmente isso ou o que eu devo mudar:
import java.util.Random;
import javax.swing.JOptionPane;

public class Craps {
	private Random randomNumbers = new Random();
	
	String name = null;
	   public Craps(String name) {  
	   this.name = name;  
	   }  
	
	private enum Status { CONTINUE, WON, LOST};
	
	private final static int SNAKE_EYES = 2;
	private final static int TREY = 3;
	private final static int SEVEN = 7;
	private final static int YO_LEVEN = 11;
	private final static int BOX_CARS = 12;
	
	public void play()
	{
		int myPoint = 0;
		Status gameStatus;
		
		int sumOfDice = rollDice();
		
		switch (sumOfDice)
		{
		case SEVEN:
		case YO_LEVEN:
			gameStatus = Status.WON;
			break;
			
		case SNAKE_EYES:
		case TREY:
		case BOX_CARS:
			gameStatus = Status.LOST;
			break;
			
			default:
				gameStatus = Status.CONTINUE;
				myPoint = sumOfDice;
				 System.out.printf("sua pontuação é %d\n", myPoint);
				break;
		}
		
		while(gameStatus == Status.CONTINUE)
		{
			sumOfDice = rollDice();
			
			if (sumOfDice == myPoint)
				gameStatus = Status.WON;
			else
				if (sumOfDice == SEVEN)
			
					gameStatus = Status.LOST;
		}
		
				
		if (gameStatus == Status.WON)
		JOptionPane.showMessageDialog(null, "Jogador %s Wins " +name);  
		else
		JOptionPane.showMessageDialog(null, "Jogador %s Loses " +name);  
		
	}
	
	public int rollDice()
	{
		int die1 = 1 + randomNumbers.nextInt(6);
		int die2 = 1 + randomNumbers.nextInt(6);
		
		int sum = die1 + die2;
		
		
		
		System.out.printf ("Player rolled %d + %d = %d\n",die1, die2, sum);
		return sum;
	}

}
PS: agora o meu problema pelo menos pelo que aparece no programa, ficou no CrapsTest, pois o game não é reconhecido em lugar nenhum:
import javax.swing.JOptionPane;

public class CrapsTest {
	public static void main (String args[])
	{
		JOptionPane.showMessageDialog(null, "Pressione OK para começar o jogo");
		final  String name = JOptionPane.showInputDialog("Qual é o seu nome?");  
		Craps game = new Craps(name);    

	}

}

obrigado

gpd38

Testa agora

import javax.swing.JOptionPane;

public class CrapsTest {

    public static void main(String args[]) {
        JOptionPane.showMessageDialog(null, "Pressione OK para começar o jogo");
        final String name = JOptionPane.showInputDialog("Qual é o seu nome?");
        Craps game = new Craps(name);
    }
}
/**
 * @author _________
 */
import java.util.Random;
import javax.swing.JOptionPane;

public class Craps {

    private Random randomNumbers;
    String name = null;
    private final static int SNAKE_EYES = 2;
    private final static int TREY = 3;
    private final static int SEVEN = 7;
    private final static int YO_LEVEN = 11;
    private final static int BOX_CARS = 12;

    public Craps(String name) {
        this.name = name;
        randomNumbers = new Random();
        play();
    }

    private enum Status {
        CONTINUE, WON, LOST
    };

    public void play() {
        int myPoint = 0;
        Status gameStatus;

        int sumOfDice = rollDice();

        switch (sumOfDice) {
            case SEVEN:
            case YO_LEVEN:
                gameStatus = Status.WON;
                break;

            case SNAKE_EYES:
            case TREY:
            case BOX_CARS:
                gameStatus = Status.LOST;
                break;

            default:
                gameStatus = Status.CONTINUE;
                myPoint = sumOfDice;
                System.out.printf("sua pontuação é %d\n", myPoint);
                break;
        }

        while (gameStatus == Status.CONTINUE) {
            sumOfDice = rollDice();

            if (sumOfDice == myPoint) {
                gameStatus = Status.WON;
            } else if (sumOfDice == SEVEN) {
                gameStatus = Status.LOST;
            }
        }


        if (gameStatus == Status.WON) {
            JOptionPane.showMessageDialog(null, "Jogador %s Wins " + name);
        } else {
            JOptionPane.showMessageDialog(null, "Jogador %s Loses " + name);
        }

    }

    public int rollDice() {
        int die1 = 1 + randomNumbers.nextInt(6);
        int die2 = 1 + randomNumbers.nextInt(6);

        int sum = die1 + die2;



        System.out.printf("Player rolled %d + %d = %d\n", die1, die2, sum);
        return sum;
    }
}
Criado 15 de fevereiro de 2010
Ultima resposta 15 de fev. de 2010
Respostas 3
Participantes 3