title | actions | material | ||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ADN del Zombi |
|
|
Vamos a terminar de escribir la función feedAndMultiply
.
La fórmula para calcular el ADN del nuevo zombi es simple: Es simplemente el promedio entre el ADN del zombi que hemos alimentado y el ADN del zombi objetivo.
Por ejemplo:
function testDnaSplicing() public {
uint zombieDna = 2222222222222222;
uint targetDna = 4444444444444444;
uint newZombieDna = (zombieDna + targetDna) / 2;
// ^ va a ser igual a 3333333333333333
}
Mas tarde haremos nuestra fórmula más complicada si queremos, añadiendole por ejemplo algún valor aleatorio al nuevo ADN. Pero por el momento vamos a dejarlo simple - siempre podemos volver a ello más adelante.
-
Primero necesitamos estar seguro que el
_targetDna
no es mayor de 16 dígitos. Para ello, podemos fijar que el valor de_targetDna
sea igual a_targetDna % dnaModulus
para que únicamente guarde los últimos 16 dígitos. -
Después nuestra función deberá declarar un
uint
llamadonewDna
, y fijarle el valor del promedio entre el ADN demyZombie
y el ADN de_targetDna
(como en el ejemplo anterior).
Nota: Puedes acceder a las propiedades de
myZombie
usandomyZombie.name
ymyZombie.dna
- Una vez que tengamos el ADN, vamos a llamar a
_createZombie
. Puedes mirar en la pestañazombiefactory.sol
si has olvidado los parámetros que esta función necesita para ser llamada. Ten en cuenta que necesita un nombre, así que de momento le pondremos de nombre"NoName"
— podremos escribir una función para cambiar el nombre del zombi más adelante.
Nota: ¡Quizá notes un problema en nuestro código, que no encaja en Solidity! No te preocupes, arreglaremos esto en el siguiente capítulo ;)