title | actions | material | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
DNA Zumbi |
|
|
Vamos terminar de escrever a função feedAndMultiply
.
A fórmula para o cálculo do novo DNA zumbi é simples: Simplesmente a média entre o DNA do zumbi alimentado e o DNA do alvo.
Por exemplo:
function testDnaSplicing() public {
uint zombieDna = 2222222222222222;
uint targetDna = 4444444444444444;
uint newZombieDna = (zombieDna + targetDna) / 2;
// ^ será igual a 3333333333333333
}
Mais tarde podemos deixar a nossa fórmula mais complicada se quisermos, como adicionar alguma aleatoriedade ao DNA do novo zumbi. Mas por enquanto vamos mante-lá simples - nós sempre podemos voltar aqui mais tarde.
-
Primeiro precisamos ter certeza que o
_targetDna
não é maior do que 16 dígitos. Para isso nós vamos definir_targetDna
igual à_targetDna % dnaModulus
para somente ter os últimos 16 dígitos. -
Depois nossa função deve declarar um
uint
chamadonewDna
, e definir igual a média do DNA domyZombie
e_targetDna
(como o exemplo acima).
Nota: Você pode acessar as propriedades do
myZombie
usandomyZombie.name
emyZombie.dna
- Uma vez que temos o novo DNA, vamos chamar a função
_createZombie
. Você pode olhar na abazombiefactory.sol
se você esqueceu quais parâmetros esta função precisa. Perceba que ela requer um nome, então vamos definir o nome do nosso novo zumbi como"NoName"
por enquanto - nós podemos escrever uma função parar mudar os nomes mais tarde.
Nota: Sobre as "sujeiras" no código Solidity, talvez você tenha notado algum problema em nosso código aqui! Não se preocupe, vamos arrumar isso no próximo capítulo ;)