Last active
April 15, 2019 05:49
-
-
Save misterch0c/c6e72a86c633a47b8d7ca6fdf541a728 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
pragma solidity ^0.4.19; | |
// CryptoRoulette | |
// | |
// Guess the number secretly stored in the blockchain and win the whole contract balance! | |
// A new number is randomly chosen after each try. | |
// | |
// To play, call the play() method with the guessed number (1-20). Bet price: 0.1 ether | |
contract CryptoRoulette { | |
uint256 private secretNumber; | |
uint256 public lastPlayed; | |
uint256 public betPrice = 0.1 ether; | |
address public ownerAddr; | |
struct Game { | |
address player; | |
uint256 number; | |
} | |
Game[] public gamesPlayed; | |
function CryptoRoulette() public { | |
ownerAddr = msg.sender; | |
shuffle(); | |
} | |
function shuffle() internal { | |
// randomly set secretNumber with a value between 1 and 20 | |
secretNumber = uint8(sha3(now, block.blockhash(block.number-1))) % 20 + 1; | |
} | |
function play(uint256 number) payable public { | |
require(msg.value >= betPrice && number <= 20); | |
Game game; | |
game.player = msg.sender; // this line | |
game.number = number; | |
gamesPlayed.push(game); | |
if (number == secretNumber) { | |
// win! | |
msg.sender.transfer(this.balance); | |
} | |
shuffle(); | |
lastPlayed = now; | |
} | |
function kill() public { | |
if (msg.sender == ownerAddr && now > lastPlayed + 1 days) { | |
suicide(msg.sender); | |
} | |
} | |
function() public payable { } | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment