[Jogo de Cartas][Resolvido] String

20 respostas Resolvido
java
R

Eu estou tentando a um tempo entender uma logica que meu professor colocou em minha string preciso somar as cartas para isso ele coloco um valor junto das posição da string gostaria de saber como somar elas

quero somar na classe jogador no valor da mão.

[quote=Rodrigo_Sampei_Paz
package trabalho_java;

public class Carta {

public String naipe;
public String valor;
public int v1;

public Carta(String v, String n, int vn) {
    valor = v;
    naipe = n;
    v1 = vn;

  
}

}
[/quote]

20 Respostas

R

Opa, seguinte pelo que percebi o valor da carta está sendo passado no construtor da carta. Oque você tem na classe Carta?

Pra somar você precisa iterar sobre a lista de cartas do jogador e somar algo como:

foreach (Carta carta in cartas) {
    valordamao += carta.Valor;
}
return valordamao;

Isto é dependendo do nome do atributo que tem na classe Carta

R

vou colocar a classe carta

R

Beleza então ficaria assim

public int ValorDaMao() {
   int valordamao = 0;
   foreach (Carta carta in cartas) {
       valordamao += carta.v1;
   }
   return valordamao;
}
R

não está funcionando seria por causa do foreach ? nunca usei ele

R
Solucao aceita

Ah sim, desculpa usei a sintaxe de c# kkk testa assim:

public int ValorDaMao() {
   int valordamao = 0;
   for (Carta carta : cartas) {
       valordamao += carta.v1;
   }
   return valordamao;
}
R

agora não deu erro vou tenta obg :smiley:

R

em amigo vou mandar minha main aqui poderia me dizer como vou mostrar o valordamao pq se eu coloco no user.valordamao da erro

R

Qual o erro? tente algo como

System.out.println(user.ValorDaMao());

R

R

Colocou os parenteses depois da chamada do metodo ? ValorDaMao()

R

sim

R

Está dando null pointer exception, isso acontece quando se faz referencia a um objeto nulo o que tem na classe jogador linha 32?

R

valordamao += carta.v1;

R

A logica para criar a mão do jogador está errada.

Aqui você definiu que cartas de jogador é um vetor de 12 posições

Carta[] cartas = new Carta[12];

mas não indicou quais são essas 12 cartas, recomendo algum metodo em baralho que retorne 12 cartas do baralho

R

okay mas para ser mais especifico essas 12 posição eram para armazenar o valor das cartas mas pensei que já estava feito ele tem que pegar do embaralhar entende ?

R

Entendi então os metodos de baralho precisam de alguns ajustes

R

sim poderia me ajudar alias muito agredecido pela paciencia até o momento
sou novo ainda com java.

R

Cria um metodo em baralho DistribuirCartas

public Carta[] DistribuirCartas() {
   int i = 12;
   Carta[] retorno = new Carta[12];
   while (i > 0){
       if(numeroDcartas > 0){
           numeroDcartas--;
          retorno[i] = cartas[numeroDcartas+1];
          i--;
       }
   }
   return retorno;
}

E então no main

Baralho b = new Batalho();
b.embaralhar();
Jogador dealer = new Jogador();
Jogador user = new Jogador();
user.cartas = b.DistribuirCartas();
System.out.println(user.ValorDaMao());
R

amigo muito obg novamente agora está dando erro ao inicializar essa linha
retorno[i] = cartas[numeroDcartas+1];
o resto está certinho obg

R

Fico feliz em ajudar, o erro é null pointer exception ainda?
Perdão cometi um erro de lógica testa sem o +1: retorno[i] = cartas[numeroDcartas];

e no if coloca if(numeroDcartas >= 0){

Criado 12 de novembro de 2017
Ultima resposta 12 de nov. de 2017
Respostas 20
Participantes 2