Advertisement
Guest User

Untitled

a guest
Mar 18th, 2019
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.55 KB | None | 0 0
  1. pragma solidity 0.4.20;
  2. contract Casino {
  3. address public owner = 0x3bFc16ade87F528e079008708B62d6DcacD07789;
  4. uint256 public minimumBet;
  5. uint256 public totalBet;
  6. uint256 public numberOfBets;
  7. uint256 public maxAmountOfBets = 100;
  8. address[] public players;
  9. struct Player {
  10. uint256 amountBet;
  11. uint256 numberSelected;
  12. }
  13. // The address of the player and => the user info
  14. mapping(address => Player) public playerInfo;
  15.  
  16. function Casino(uint256 _minimumBet){
  17. owner = msg.sender;
  18. if(_minimumBet != 0 ) minimumBet = _minimumBet;
  19. }
  20. function kill() public {
  21. if(msg.sender == owner) selfdestruct(owner);
  22. }
  23. function checkPlayerExists(address player) public constant returns(bool){
  24. for(uint256 i = 0; i < players.length; i++){
  25. if(players[i] == player) return true;
  26. }
  27. return false;
  28. }
  29.  
  30. // To bet for a number between 1 and 10 both inclusive
  31. function bet(uint256 numberSelected) public payable {
  32. require(!checkPlayerExists(msg.sender));
  33. require(numberSelected >= 1 && numberSelected <= 10);
  34. require(msg.value >= minimumBet);
  35. playerInfo[msg.sender].amountBet = msg.value;
  36. playerInfo[msg.sender].numberSelected = numberSelected;
  37. numberOfBets++;
  38. players.push(msg.sender);
  39. totalBet += msg.value;
  40. if(numberOfBets >= maxAmountOfBets) generateNumberWinner();
  41. }
  42. // Generates a number between 1 and 10 that will be the winner
  43. function generateNumberWinner() public {
  44. uint256 numberGenerated = block.number % 10 + 1; // This isn't secure
  45. distributePrizes(numberGenerated);
  46. }
  47. // Sends the corresponding ether to each winner depending on the total bets
  48. function distributePrizes(uint256 numberWinner) public {
  49. address[100] memory winners; // We have to create a temporary in memory array with fixed size
  50. uint256 count = 0; // This is the count for the array of winners
  51. for(uint256 i = 0; i < players.length; i++){
  52. address playerAddress = players[i];
  53. if(playerInfo[playerAddress].numberSelected == numberWinner){
  54. winners[count] = playerAddress;
  55. count++;
  56. }
  57. delete playerInfo[playerAddress]; // Delete all the players
  58. }
  59. players.length = 0; // Delete all the players array
  60. uint256 winnerEtherAmount = totalBet / winners.length; // How much each winner gets
  61. for(uint256 j = 0; j < count; j++){
  62. if(winners[j] != address(0)) // Check that the address in this fixed array is not empty
  63. winners[j].transfer(winnerEtherAmount);
  64. }
  65. }
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement