Guest User

Untitled

a guest
Mar 22nd, 2018
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.85 KB | None | 0 0
  1. pragma solidity ^0.4.0;
  2. contract Dice {
  3.  
  4. uint constant _game_barier = 500;
  5. uint constant _game_max = 1000;
  6. uint constant _game_min = 0;
  7. uint constant _multiplier = 2;
  8.  
  9. address private _owner;
  10. struct Player {
  11. address addr;
  12. string nickname;
  13. uint bet_number;
  14. uint deposit;
  15. bool isVal;
  16. }
  17. mapping(address => Player) public _players;
  18. address[] _players_list;
  19.  
  20.  
  21. modifier onlyOwner {
  22. require(_owner == msg.sender);
  23. _;
  24. }
  25.  
  26.  
  27. modifier onlyNewPlayer {
  28. require(_players[msg.sender].isVal == false);
  29. _;
  30. }
  31.  
  32. function Dice() public {
  33. // starts new game!
  34. _owner = msg.sender;
  35. }
  36.  
  37. // payable
  38. function joinGame(string player_nickname, uint bet_num) public payable onlyNewPlayer {
  39. _players[msg.sender] = Player({addr: msg.sender, deposit: msg.value, bet_number: bet_num, nickname: player_nickname, isVal: true});
  40. _players_list.push(msg.sender);
  41. _owner.transfer(msg.value);
  42. }
  43.  
  44.  
  45. // external as it consume too many gas
  46. // warn: Gas requirement of function Dice._players(address) high: infinite. If the gas requirement of a function is higher than the block gas limit, it cannot be executed. Please avoid loops in your functions or actions that modify large areas of storage (this includes clearing or copying arrays in storage)
  47. function finishGame() external payable onlyOwner {
  48. uint random_number = uint(block.blockhash(block.number-1))%1000;
  49. address pl_addr;
  50. for(uint i = 0; i < _players_list.length; i++) {
  51. if (random_number < 500) {
  52. pl_addr = _players_list[i];
  53. pl_addr.transfer( _players[pl_addr].deposit * _multiplier);
  54. }
  55. delete _players[pl_addr];
  56. }
  57. delete _players_list;
  58. }
  59. }
  60. v
Add Comment
Please, Sign In to add comment