Guest User

Untitled

a guest
Mar 20th, 2018
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.07 KB | None | 0 0
  1. pragma solidity ^0.4.19;
  2.  
  3. // 1. Import here
  4. import "./ownable.sol";
  5. // 2. Inherit here:
  6. contract ZombieFactory is Ownable {
  7.  
  8. event NewZombie(uint zombieId, string name, uint dna);
  9.  
  10. uint dnaDigits = 16;
  11. uint dnaModulus = 10 ** dnaDigits;
  12.  
  13. struct Zombie {
  14. string name;
  15. uint dna;
  16. }
  17.  
  18. Zombie[] public zombies;
  19.  
  20. mapping (uint => address) public zombieToOwner;
  21. mapping (address => uint) ownerZombieCount;
  22.  
  23. function _createZombie(string _name, uint _dna) internal {
  24. uint id = zombies.push(Zombie(_name, _dna)) - 1;
  25. zombieToOwner[id] = msg.sender;
  26. ownerZombieCount[msg.sender]++;
  27. NewZombie(id, _name, _dna);
  28. }
  29.  
  30. function _generateRandomDna(string _str) private view returns (uint) {
  31. uint rand = uint(keccak256(_str));
  32. return rand % dnaModulus;
  33. }
  34.  
  35. function createRandomZombie(string _name) public {
  36. require(ownerZombieCount[msg.sender] == 0);
  37. uint randDna = _generateRandomDna(_name);
  38. randDna = randDna - randDna % 100;
  39. _createZombie(_name, randDna);
  40. }
  41.  
  42. }
Add Comment
Please, Sign In to add comment