Lembrando que podem existir muitas variações nas fórmulas, isto devido aos parâmetros que serão utilizados.
Podemos começar pela classe Personagem:
class Personagem{
int energia; //energia vital
int força; //pontos de ataque
int defesa; //pontos de defesa
int sorte; //valor que influi no ataque e na defesa
function atacar(Personagem * oponente){
oponente->energia = oponente->energia -
( (this->força * (rand()%this->sorte)) /
(oponente->defesa + (rand()%oponente->sorte)) );
}
}
Exemplo:
Instância dos personagens
Personagem * Guerreiro;
Personagem * Arqueiro;
Definindo os valores das propriedades
Guerreiro->energia = 200;
Guerreiro->força = 150;
Guerreiro->defesa = 130;
Guerreiro->sorte = 10;
Arqueiro->energia = 100;
Arqueiro->força = 100;
Arqueiro->defesa = 50;
Arqueiro->sorte = 80;
Atacar!!!
Guerreiro->atacar(Arqueiro);
Analisando minunciosamente a execução da função atacar, temos:
oponente->energia = oponente->energia -
( (this->força * (rand()%this->sorte)) /
(oponente->defesa + (rand()%oponente->sorte)) );
Que transformou-se em:
Arqueiro->energia = Arqueiro->energia -
( (Guerreiro->força * (rand()%Guerreiro->sorte)) /
(Arqueiro->defesa + (rand()%Arqueiro->sorte)) );
Substituindo os valores:
Arqueiro->energia = 100 - ( (150 * (rand()%10)) /
(50 + (rand()%80)) );
De uma maneira mais prática podemos ter esta visão:
Defesa do Arqueiro com Máxima Sorte, se o valor de retorno (rand()%10) for igual 5 e (rand()%80) for igual 80 temos:
Arqueiro->energia = 100 - ( (150 * 5) / (50 + 80) );
Arqueiro->energia = 100 - ( 750 / 130 );
Arqueiro->energia = 100 - 6; //arredondando 5,7 vai pra 6
Arqueiro->energia = 94;
Defesa do Arqueiro Sem Sorte, se o valor de retorno (rand()%10) for igual 10, (rand()%80) for igual 0 temos:
Arqueiro->energia = 100 - ( (150 * 10) / (50 + 0) );
Arqueiro->energia = 100 - ( 1500 / 50 );
Arqueiro->energia = 100 - 30;
Arqueiro->energia = 70;
Observações:
1) rand() está no cabeçalho stdlib.h, a função retorna um valor randômico entre 0 e 1.
2) A classe Personagem está fora da padronização, onde uma instância altera o valor da outra instância de forma direta.
3) O Arqueiro pode parecer fraco, mas número máximo de pontos de ataque do Guerreiro é 1500 e de defesa 140, já do Arqueiro ataque é 8000 e defesa 130. Verifique mais informações nestaTabela.
Para entender melhor será necessário jogar Final Fantasy Tatics, ou Vandal Hearts ou outro RPG.
Um comentário:
Blz Renê !
Vc pegou a formula muito rápido ! Jogo Travian a algum tempo e ainda não sei como funciona o sistema de ataque !
Gostei da planilha on-line... (Ctrl+C)
Postar um comentário