[Jogo de Cartas][Resolvido] String

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]

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

vou colocar a classe carta

Beleza então ficaria assim

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

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

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;
}
1 curtida

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

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

Qual o erro? tente algo como

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

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

sim

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

valordamao += carta.v1;

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

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 ?

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

1 curtida

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

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());
1 curtida

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