Não consegui fazer com que o bot contasse o placar e desse um campeão pra disputa, como eu poderia fazer isso?
Link do projeto: https://github.com/duquexote/dart_async
Ta na pasta bin/questions/jokenpo.dart
Não consegui fazer com que o bot contasse o placar e desse um campeão pra disputa, como eu poderia fazer isso?
Link do projeto: https://github.com/duquexote/dart_async
Ta na pasta bin/questions/jokenpo.dart
Olá, Guilherme! Tudo bem?
Primeiro te peço desculpas pela demora em responder.
O que está acontecendo no seu código, é que a contagem do placar está sendo zerada todas as vezes que você instancia a sua classe:
Jokenpo(usuario).playJokenpo();
Toda vez que o usuário digita pedra
, papel
, tesoura
ou jokenpo
, a classe é instanciada e os valores de vitoriaBot
e vitoriaUser
são definidos como 0
novamente.
Para mudar isso, basta usar o conceito de static
, pois assim essas variáveis não vão depender da instância para ter seu valor alterado. Veja:
class Jokenpo {
String question;
String duqueBot = 'DuqueBOT:\n';
bool isJokenpo = false;
// variáveis estáticas da classe
static int vitoriaBot = 0;
static int vitoriaUser = 0;
//...
}
Repare também que coloquei elas fora do escopo da função
playJokenpo
mas ainda dentro da classeJokenpo
.
Isso basta para que a contagem funcione! Mas vi outros detalhes no seu código que pode melhorar:
vitoriaBot
e vitoriaUser
antes do print e não depois. Pois incrementando antes do print já fica o valor atualizado no placar:Exemplo com apenas 1 dos ifs (precisa fazer isso para todos):
if (choiceUser == 3 && choiceBot == 2 && choiceUser > choiceBot) {
// incremento antes da mensagem:
vitoriaUser++;
print(duqueBot + 'Você ganhou essa rodada! PLACAR: $vitoriaUser X $vitoriaBot');
}
if (choiceBot == choiceUser) {
// você escolhe se incrementa de ambos ou de nenhum:
// vitoriaBot++;
// vitoriaUser++;
print("Empate! PLACAR: $vitoriaUser X $vitoriaBot");
}
if (vitoriaUser >= 2 && vitoriaBot < vitoriaUser) {
print( 'Você ganhou de mim! Parabéns!! Placar: $vitoriaUser X $vitoriaBot');
vitoriaBot = 0;
vitoriaUser = 0;
} else if (vitoriaBot >= 2 && vitoriaUser < vitoriaBot) {
print( 'Consegui ganhar de você! Tenta na próxima... Placar: $vitoriaUser X $vitoriaBot');
vitoriaBot = 0;
vitoriaUser = 0;
}
Pronto! Espero ter ajudado, se tiver alguma dúvida e se quiser o código inteiro com os detalhes que alterei é só falar.
E sobre o static
, se quiser saber mais recomendo a leitura do artigo Qual a diferença entre Static, Const e Final no Dart.
Bons estudos!