forked from CryptozombiesHQ/cryptozombie-lessons
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'master' of https://github.com/loomnetwork/cryptozombie-…
…lessons into translation-fr
- Loading branch information
Showing
210 changed files
with
23,754 additions
and
275 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file was deleted.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
--- | ||
title: Creando la Fábrica de Zombies | ||
header: ¡Bienvenido, humano! | ||
roadmap: roadmap.jpg | ||
--- | ||
|
||
¿Parece que crees tener lo que se necesita para convertirte en un **CryptoZombie**, eh? | ||
|
||
Este curso te enseñará cómo **crear un juego en Ethereum**. | ||
|
||
Está diseñado para principiantes en Solidity, pero asume que tienes alguna experiencia | ||
programando en algún otro lenguage (por ejemplo Javascript). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
--- | ||
title: Arrays | ||
actions: ['checkAnswer', 'hints'] | ||
material: | ||
editor: | ||
language: sol | ||
startingCode: | | ||
pragma solidity ^0.4.19; | ||
contract ZombieFactory { | ||
uint dnaDigits = 16; | ||
uint dnaModulus = 10 ** dnaDigits; | ||
struct Zombie { | ||
string name; | ||
uint dna; | ||
} | ||
// empieza aquí | ||
} | ||
answer: > | ||
pragma solidity ^0.4.19; | ||
contract ZombieFactory { | ||
uint dnaDigits = 16; | ||
uint dnaModulus = 10 ** dnaDigits; | ||
struct Zombie { | ||
string name; | ||
uint dna; | ||
} | ||
Zombie[] public zombies; | ||
} | ||
--- | ||
|
||
Cuando quieres tener una colección de algo, puedes usar un **_array_**. Hay dos tipos de arrays en Solidity: arrays **_fijos_** y arrays **_dinámicos_**: | ||
|
||
``` | ||
// Un Array con una longitud fija de 2 elementos: | ||
uint[2] fixedArray; | ||
// otro Array fijo, con longitud de 5 elementos: | ||
string[5] stringArray; | ||
// un Array dinámico, sin longitud fija que puede seguir creciendo: | ||
uint[] dynamicArray; | ||
``` | ||
|
||
Tambien puedes crear arrays de **_structuras_**. Si usásemos la estructura `Person` del capítulo anterior: | ||
|
||
``` | ||
Person[] people; // Array dinámico, podemos seguir añadiéndole elementos | ||
``` | ||
|
||
¿Recuerdas que las variables de estado quedan guardadas permanentemente en la blockchain? Así que crear un array de estructuras puede ser muy útil para guardar datos estructurados en tu contrato, como una base de datos. | ||
|
||
## Arrays Públicos | ||
|
||
Puedes declarar un array como `público`, y Solidity creará automaticamente una función **_getter_** para acceder a él. La sintaxis es así: | ||
|
||
``` | ||
Person[] public people; | ||
``` | ||
|
||
Otros contratos podrían entonces leer (pero no escribir) de este array. Es un patrón de uso muy útil para guardar datos públicos en tu contrato. | ||
|
||
# Vamos a probarlo | ||
|
||
Vamos a guardar un ejército de zombis en nuestra aplicación. Y vamos a querer mostrar todos nuestros zombis a otras applicaciones, así que lo queremos público: | ||
|
||
1. Crear un array público de **_structuras_** `Zombie` y llámalo `zombies`. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
--- | ||
title: Trabajando con estructuras y arrays | ||
actions: ['checkAnswer', 'hints'] | ||
material: | ||
editor: | ||
language: sol | ||
startingCode: | | ||
pragma solidity ^0.4.19; | ||
contract ZombieFactory { | ||
uint dnaDigits = 16; | ||
uint dnaModulus = 10 ** dnaDigits; | ||
struct Zombie { | ||
string name; | ||
uint dna; | ||
} | ||
Zombie[] public zombies; | ||
function createZombie(string _name, uint _dna) { | ||
// empieza aquí | ||
} | ||
} | ||
answer: > | ||
pragma solidity ^0.4.19; | ||
contract ZombieFactory { | ||
uint dnaDigits = 16; | ||
uint dnaModulus = 10 ** dnaDigits; | ||
struct Zombie { | ||
string name; | ||
uint dna; | ||
} | ||
Zombie[] public zombies; | ||
function createZombie(string _name, uint _dna) { | ||
zombies.push(Zombie(_name, _dna)); | ||
} | ||
} | ||
--- | ||
|
||
### Creando nuevas Estructuras (Structs) | ||
|
||
¿Recuerdas las estructura `Person` en el ejemplo anterior? | ||
|
||
``` | ||
struct Person { | ||
uint age; | ||
string name; | ||
} | ||
Person[] public people; | ||
``` | ||
|
||
Ahora aprenderemos como crear un nuevo `Person` y añadirlo a nuestro array `people`. | ||
|
||
``` | ||
// crear un nuevo `Person` | ||
Person satoshi = Person(172, "Satoshi"); | ||
// añadir esta persona a nuestro array | ||
people.push(satoshi); | ||
``` | ||
|
||
También podemos combinar estas dos cosas para hacerlas en una sola línea y mantener el código limpio: | ||
|
||
``` | ||
people.push(Person(16, "Vitalik")); | ||
``` | ||
|
||
Date cuenta que `array.push()` añade algo al **final** del array, así que los elementos siguen el orden de añadido. Observa este ejemplo: | ||
|
||
``` | ||
uint[] numbers; | ||
numbers.push(5); | ||
numbers.push(10); | ||
numbers.push(15); | ||
// el array `numbers` es ahora [5, 10, 15] | ||
``` | ||
|
||
# Vamos a probarlo | ||
|
||
¡Hagamos hacer algo a nuestra función `createZombie`! | ||
|
||
1. Rellena el cuerpo de la función para que cree un nuevo `Zombie` y añádelo al array `zombies`. El nombre (`name`) y ADN (`dna`) del nuevo Zombi debería venir de los argumentos pasados a la función. | ||
2. Hagámoslo en una sola línea de código para que quede bonito. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
--- | ||
title: "Contratos" | ||
actions: ['checkAnswer', 'hints'] | ||
material: | ||
editor: | ||
language: sol | ||
startingCode: | | ||
pragma solidity //1. Poner la versión de Solidity aquí | ||
//2. Crear el contrato aquí | ||
answer: > | ||
pragma solidity ^0.4.19; | ||
contract ZombieFactory { | ||
} | ||
--- | ||
|
||
Empecemos con lo más fundamental: | ||
|
||
El código Solidity está encapsulado en **contratos**. Un `contrato` es el bloque de construcción más básico de las aplicaciones de Ethereum — todas las variables y las funciones pertenecen a un contrato, y este será el punto de partida de todos tus proyectos. | ||
|
||
Un contrato vacio llamado `HolaMundo` se parecería a esto: | ||
|
||
``` | ||
contract HolaMundo { | ||
} | ||
``` | ||
|
||
## Versión Pragma | ||
|
||
Todo el código fuente en Solidity debería empezar con una declaración "version pragma" de la versión del compilador que debe de usarse para ese código. Esto previene problemas con versiones futuras del compilador que podrían no ser compatibles y fallar con tu código. | ||
|
||
Esta declaración se asemeja a esto: `pragma solidity ^0.4.19;` (para usar la última versión del compilador de Solidity actual, la 0.4.19). | ||
|
||
Poniendo todo junto, este es el esqueleto de como se empieza un contrato — lo primero que escribirás cada vez que empieces un nuevo proyecto: | ||
|
||
``` | ||
pragma solidity ^0.4.19; | ||
contract HolaMundo { | ||
} | ||
``` | ||
|
||
# Vamos a probarlo | ||
|
||
Para empezar a crear tu ejército de Zombis, vamos a crear un contrato base llamado `ZombieFactory` (Fábrica de Zombis). | ||
|
||
1. En la caja de la derecha, haz lo necesario para que el contrato use la versión de Solidity `0.4.19`. | ||
|
||
2. Crea un contrato vacio que se llame `ZombieFactory`. | ||
|
||
Cuando hayas terminado, haz clic en "comprobar respuesta" abajo. Si te quedas atascado, haz clic en "pistas". |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
--- | ||
title: Variables de Estado y Números Enteros | ||
actions: ['checkAnswer', 'hints'] | ||
material: | ||
editor: | ||
language: sol | ||
startingCode: | | ||
pragma solidity ^0.4.19; | ||
contract ZombieFactory { | ||
// empieza aquí | ||
} | ||
answer: > | ||
pragma solidity ^0.4.19; | ||
contract ZombieFactory { | ||
uint dnaDigits = 16; | ||
} | ||
--- | ||
|
||
¡Buen trabajo! Ahora que tenemos una capa para nuestro contrato, aprendamos cómo maneja las variables Solidity. | ||
|
||
Las **_Variables de estado_** se guardan permanentemente en el almacenamiento del contrato. Esto significa que se escriben en la cadena de bloques de Ethereum. Piensa en ellos como en escribir en una base de datos. | ||
|
||
##### Ejemplo: | ||
``` | ||
contract Example { | ||
// Esto se guardará permanentemente en la cadena de bloques | ||
uint myUnsignedInteger = 100; | ||
} | ||
``` | ||
|
||
En este contrato de ejemplo, hemos creado un `uint` llamado `myUnsignedInteger` y le hemos dado el valor 100. | ||
|
||
## Enteros sin Signo: `uint` | ||
|
||
El tipo de dato `uint` es un entero sin signo, esto es **su valor siempre debe ser no-negativo**. Hay también un tipo de dato `int` para números enteros con signo. | ||
|
||
> Nota: En Solidity, `uint` es realmente un alias para `uint256`, un número entero de 256-bits. Puedes declarar uints con menos bits — `uint8`, `uint16`, `uint32`, etc.. Pero por lo general usaremos `uint` excepto en casos específicos, de los que hablaremos en otras lecciones más adelante. | ||
# Vamos a probarlo | ||
|
||
El ADN de nuestro Zombi va a estar determinado por un número de 16 dígitos. | ||
|
||
Declara una variable de tipo `uint` llamada `dnaDigits`, y asígnale el valor `16`. |
Oops, something went wrong.