【CryptoZombies|编写区块链游戏学智能合约】Lesson1:搭建僵尸工厂

什么是CryptoZombies

CryptoZombies是个在编游戏的过程中学习Solidity智能合约语言的互动教程。本教程是为了Solidity初学者而设计的,会从最基础开始教起,即便你从来没有接触过Solidity也可以学,CryptoZombies会手把手地教你。

本课程共六节课,为Solidity初学者设计,需要你对其他的程序语言有所了解(如JavaScript),我们先来学Lesson1搭建僵尸工厂。

【CryptoZombies|编写区块链游戏学智能合约】Lesson1:搭建僵尸工厂_第1张图片

僵尸工厂用于生产僵尸,每一个僵尸由头部基因、眼部基因、上衣基因、皮肤基因、眼色基因、衣服眼色基因组成,每个基因数值不一样,呈现的基因外形会有差异,通过这6个基因的组合,从而生产大量形状不一样的僵尸。可以滑动右侧条形改变数值查看形状不一样的僵尸。

【CryptoZombies|编写区块链游戏学智能合约】Lesson1:搭建僵尸工厂_第2张图片

Lesson1从Solidity合约的基本结构、状态变量和整数、数学运算、结构体、数组、定义函数、使用结构体和数组、私有/公共函数、函数的更多属性(返回值、函数的修饰符)、Keccak256和类型转换、事件和Web3.js,一步步学习和了解,直到最后编写成功的代码。

每一章的练习代码编写完后,点击代码下面的hint按钮,会在下面提示编写的代码是不是正确,如果有错误,会以红色提示,需要修改对应的代码。如果不熟悉改不正确,可以点击查看左下方的“我要看答案”的按钮,会在右下方框提示正确的代码。对比着修改完成后“再查”,如果无误就可以进入下一个环节。

【CryptoZombies|编写区块链游戏学智能合约】Lesson1:搭建僵尸工厂_第3张图片

完成以后可以再尝试着输入任何字符串,可以看到合约成品的僵尸形态变化。

本节课完整的代码如下:

pragma solidity ^0.4.19;

contract ZombieFactory {

    event NewZombie(uint zombieId, string name, uint dna);

    uint dnaDigits = 16;
    uint dnaModulus = 10 ** dnaDigits;

    struct Zombie {
        string name;
        uint dna;
    }

    Zombie[] public zombies;

    // 在这里定义映射

    function _createZombie(string _name, uint _dna) private {
        uint id = zombies.push(Zombie(_name, _dna)) - 1;
        NewZombie(id, _name, _dna);
    }

    function _generateRandomDna(string _str) private view returns (uint) {
        uint rand = uint(keccak256(_str));
        return rand % dnaModulus;
    }

    function createRandomZombie(string _name) public {
        uint randDna = _generateRandomDna(_name);
        _createZombie(_name, randDna);
    }

}


这节课通过构建一个僵尸工厂的合约,顺便介绍了Solidity的一部分基础语法,如果要掌握更多的Solidity基础知识,还需要更多的学习,可以参考区块链技术-智能合约Solidity编程语言。

以前学习过智能合约的语法,但是因为没有目标性,所以看了一部分以后就放弃了。本次课程是我第一次体验游戏化编程,编写完以后能立即得到反馈,这种互动效果很好,能刺激学习。虽然因为编译环境的单一性,部分编译工具的功能不完善,但这种互动方式的编程学习不仅可以降低编写智能合约的门槛,还可以普及智能合约知识,更重要的是还免费。

如果要学习区块链编程知识,这个教程你值得拥有。


系列文章:
【CryptoZombies|编写区块链游戏学智能合约】Lesson1: 搭建僵尸工厂
【CryptoZombies|编写区块链游戏学智能合约】Lesson2: 僵尸攻击人类
【CryptoZombies|编写区块链游戏学智能合约】Lesson3: 搭建僵尸工厂
【CryptoZombies|编写区块链游戏学智能合约】Lesson4: 僵尸作战系统
【CryptoZombies|编写区块链游戏学智能合约】Lesson5: ERC721标准和加密收藏品

你可能感兴趣的:(【CryptoZombies|编写区块链游戏学智能合约】Lesson1:搭建僵尸工厂)