Para inicio tenho de saber qual o tipo da habilidade, no caso há 5.
Após isso tenho de ver qual das 47 habilidades foi escolhida. Ou seja, 47 em cada um dos 5 ifs dos tipos…
Dentro de cada um dos 47, terei de ver o valor dado à habilidade, mas antes de ver o valor, terei de analisar se esse valor está ligado a uma das 15 condições de aumento. Ou seja, 15 dentro de cada um dos 47…
O que fazer? Vai ter que ser essa arvore gigante de if’s mesmo?
Acredito que a solução de se utilizar banco seja bem apropriada. Mas ao invés de utilizar ifs encadeados, tente uma solução utilizando switch cases encadeados, talvez poupe bastante trabalho.
Exemplo, uma habilidade pode ser Punição Gelada 2, ou Bola de Fogo Rúnica 400, 600 se Atacante.
No caso Punição óu Bola de fogo são duas das habilidades, Gelada ou Rúnica são 2 dos 5 tipos de habilidades. 2 ou 400 são os valores das habilidades, mas na BdF Runica, será 600 se vc começar a batalha…
Eu quero calcular o que resultará no total, pra isso eu tenho q verificar tudo, no caso tipo de habilidade(5), a habilidade(47), o valor dela, e se tem alguma forma de aumentar o valor.
Mas não sei o que fazer, se terei que ficar analisando cada coisinha um monte de vezes, ou se tem um jeito de economizar essa repetição…
Monte então @Zahal uma estrutura de armazenamento dentro de uma classe, monte um lógico de negócio igual você está contanto para gente e faça pesquisa nela, Não é boa pratica tem muitos ifs encadeados em um código.
pode me dizer como se faz isso? fiz um curso técnico, mas não aprendi muito nele :T achava q ja tinha feito a parte mais dificil fazendo analisar qtas vezes usará cada habilidade…
ou se não quiser explicar, se possivel enviar um link que explique bem isso
Nao é a mesma coisa que eu criar métodos?
Ainda assim eu nao precisaria ver qual o tipo da habilidade para saber o q fazer nela? Tipo, verificar ainda com if a habilidade toda pra calcular o dano que ela fara(se fizer dano)? ou se ela usa um valor? por exemplo se for punição tem q multiplicar a força do oponente por X, e se for gelada, aumenta o dano em X/10 pra cada gelo no oponente…
Se quiser entender mais aqui esta os 3 arquivos que uso:
oque aprendi em complexidade de algoritmos, é que cada if representa uma soma na complexidade, ou seja um caminho diferente que pode ser percorrido, e oque o professor citou é que um método com complexidade > 50 já indica que há coisa errada. Provavelmente você pode “quebrar” em vários casos, ou usar reflexão, banco de dados, como os amigos já citaram.