Jogo 21

7 respostas
F

Pessoal estou iniciando no java, e estou tentando fazer um joguinho de 21 basico dos basicos, modo texto e tals, mais estou apanhando mtoo e tenho certeza q eu to fazendo alguma “merdinha” e ele num ta recebendo o valor direito.
o problema está quando o usuario digita “s” para pegar nova carta ele me retorna q a variavel (pegar) é “s” só q executa como se não fosse

se puderem me ajudar, ficarei MTO grato!

import java.util.*;
import java.io.*;

class sorteioj21 {
String jogador;
String sexo;
String jogo;
String pegar;
int ppontos;
int jpontos;
boolean ganhar;

void embaralharpc(){
		ArrayList<Integer> cartaspc = new ArrayList<Integer>();
	for(int i=15;i<25;i++) cartaspc.add(i);
	Collections.shuffle(cartaspc);
	ppontos= cartaspc.get(0);
}

void embaralharjo(){
	ArrayList<Integer> cartasjo = new ArrayList<Integer>();
	for(int i=1;i<10;i++) cartasjo.add(i);
	Collections.shuffle(cartasjo);
	System.out.print("Carta retirada: " +cartasjo.get(0));
	
	jpontos = jpontos + cartasjo.get(0);
}

void dadosjogador(){	
	 if (jogo == "começou"){
		System.out.println ("    ");
		System.out.println (jogador +" você "+jogo +" o jogo com "  +jpontos +" pontos");
		System.out.println ("    ");
	 }
	 else{
		 System.out.println ("    ");
		 System.out.println (jogador +" você "+jogo +" o jogo com "  +jpontos +" pontos, e o computador com: " +ppontos);
	 if (ppontos == 21 && jpontos == 21)
	 System.out.println("Empatou");
	 
	 if (ppontos < 22 && jpontos < ppontos)
		 System.out.println("PC ganhou");
	 if (ppontos > 21 && jpontos > ppontos)
		 System.out.println("PC ganhou");
	 if (jpontos > 21 && ppontos <= 21)
		 System.out.println("Você ganhou");
	 if (jpontos < 22 && ppontos < jpontos)
		 System.out.println("Você ganhou");
	 if (ppontos > 21 && jpontos <= 21)
		 System.out.println("Você ganhou");
	 if (jpontos > 21 && ppontos > jpontos)
		 System.out.println("Você ganhou");
	 
	 }
}

public static void main(String[] args) {
sorteioj21 j21 = new sorteioj21();
j21.embaralharpc();
j21.embaralharjo();
j21.jogador = "Gallego";
j21.sexo = "masculino";
j21.jogo = "começou";
j21.dadosjogador();

BufferedReader entrada;
entrada =new BufferedReader (new InputStreamReader(System.in));

do {
	System.out.println ("Deseja pegar mais cartas?(Digite s para sim, ou qualquer tecla para sair)");
		while (true){
			try {
			j21.pegar = (entrada.readLine());
			if (j21.pegar == "s") break;
			else {
				System.out.println(j21.pegar);
			}
			}
		catch (Exception e){
		System.out.println("erro");	
				}
		}
		j21.embaralharjo();
		System.out.println("    ");
		System.out.println ("Seus pontos estão em: "+j21.jpontos);
		
		}while (j21.pegar == "s");
System.out.println("FIM");
}
}

valew

7 Respostas

cassio

Vc nao pode comparar strings com o operador ==
Desse jeito vc está apenas comparando o endreço de objetos e nao seu conteúdo!

Faça

if (j21.pegar.equals("s")) break;

Abraço!

F

CASSIO!!!

valewww cara!!!

era só isso mesmo!!
valeu!!!

desculpa minha ignorancia! hehe :wink:

VALEU!!

diego2005

Só mais uma dica então, não é uma boa prática você fazer:

public static void main(String[] args) { sorteioj21 j21 = new sorteioj21(); j21.jogador = "Gallego"; j21.sexo = "masculino"; j21.jogo = "começou"; }

Torne suas variáveis de instância privadas e forneça um construtor para inicializá-las.

T+

renandemelo

E também crie métodos get e set para cada atributo que tornar privado

F

blz cara vo começa faze isso então

é q esse programinha de 21, foi o primeiro programa q eu realmente fiz, os outros foram só os da faculdade tipo média, soma, esses negocinho, vo começa estuda um pouco de java agora!

valeu pela dica!

S

Eu gostaria de ter uma ajuda para fazer o jogo 21 com dados.
Eu sou principiante e meu professor pediu que nós fisessemos com dados ao invés de cartas, se alguém puder me ajudar.

S

Diego, será que você poderia me ajudar com o 21?

Criado 22 de setembro de 2006
Ultima resposta 20 de abr. de 2009
Respostas 7
Participantes 5