Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Como fazer um limitador de upgrade do nível nas tasks

Olá, tudo bem?!

Segui realizando mais implementações no projeto do curso e levei ele para um lado mais gamer.

Ao invés de Tasks, desenvolvi uma árvore de habilidades em que o usuário poderá aumentar o nível delas de acordo com seu gosto, porém não consegui implementar um limitador de pontos de habilidade que ele poderá aumentar.

Por exemplo: Se eu tiver somente 50 pontos de habilidade, eu serei capaz de aumentar o nível somente 50 vezes, distribuindo esses pontos por todas as habilidades. Agradeceria muito se alguém me ajudasse a implementar essa feature.

Segue o link do meu projeto: https://github.com/LeonardoSonsin/arvore_skills.git

Aproveitando, parabéns ao professor Kako pela ótima didática!!

3 respostas
solução!

CARAAAAAMBAAAAAAA QUE SENSACIONAL FICOU SEU PROJETO BLINK!!!

(inclusive ja ouviu Blink 182? muito bom acho que vai gostar)

Fiz até um GIF pros curiosos poderem olhar sem baixar:

Então, sobre um limitador de pontos de habilidade:

Para implementar algo desse tipo você teria que ter uma variável que armazena a quantidade de pontos para serem distribuídos.

int pontos = 50;

Porém esses pontos tem que ficar disponível para todas as habilidades interagirem E ela tem que ser uma variável global para todas as habilidades, para isso podemos usar o static dentro da classe Habilidade ( especificamente na State, que armazena os estados )

class _HabilidadeState extends State<Habilidade> {
...
static int pontos = 15;
...
}

lembrando que static indica que o valor vai ser o mesmo para todas as instancias de habilidade que você criar, então se ela for alterada, todas as outras habilidades saberão!

Agora nós precisamos informar as habilidades de que elas vão pegar esse recurso de pontos, e sempre que pegarem esse recurso vai diminuir, e caso o recurso seja 0, não da pra upar de nível.

ElevatedButton(
                                  onPressed: () {
                                    setState(() {
                                      (widget.level == 10)
                                          ? widget.level = 0
                                          : widget.level++;
                                      (pontos == 0) ? widget.level-- : pontos--;
                                      print(pontos);

Ficou assim:

O.B.S.: Gostei muito da forma como você fez seu código com operadores ternários para widgets e decisões, muito elegante, ta de parabens! Posso mostrar esse projeto pro meu time? Eles vão AMAR

Agora você pode implementar seus pontos como quiser!

Sugiro que você coloque um aviso ao usuario que não há mais pontos a serem distribuidos e etc.

E tem um bug no seu código que sempre que você esconde suas habilidades elas perdem todos os pontos! Melhor dar uma olhadinha nisso c:

Muito obrigado pela atenção professor, funcionou!!! Era mais fácil do que eu pensava kkkkk, e pode ficar a vontade para mostrar o projeto.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software