cryptozombies第一讲

pragma solidity ^0.4.19;    //solidity版本

//合约创建
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;

    //函数定义,private表私有,只能此合约调用
    function _createZombie(string _name, uint _dna) private {
        //数组使用push加入新数据,返回长度
        uint id = zombies.push(Zombie(_name, _dna)) - 1;
        //合约调用
        NewZombie(id, _name, _dna);
    }

    //view:此函数只读不修改数据,pure:此函数既不能读,也不能修改
    function _generateRandomDna(string _str) private view returns (uint) {
        //后者生成256位的16进制数
        uint rand = uint(keccak256(_str));
        return rand % dnaModulus;
    }

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

}

 

posted @ 2022-01-15 16:02  浪人2077  阅读(70)  评论(0)    收藏  举报