//Write your own contracts here. Currently compiles using solc v0.4.15+commit.bbb8e64f. pragma solidity ^0.4.25; contract FourOutOfFive { struct GameData { uint8 numberOfRounds; address prevUserAddress; bool isPrevUserTicketGold; } address private _owner; mapping (uint256 => bool) availableBets; // [100wei => true, 200wei => true ...] mapping (uint256 => uint256) regularBetToGold; // [100wei => 110wei, 200wei => 220wei ...] mapping (uint256 => uint256) goldBetToRegular; // [110wei => 100wei, 220wei => 200wei ...] mapping (uint256 => GameData) games; uint256[] availableBetsArray; constructor() public { _owner = msg.sender; } modifier onlyOwner() { require(_owner == msg.sender); _; } // Add new available bet size (game settings, only owner) function addBetSize(uint256 betSize) public onlyOwner { availableBets[betSize] = true; regularBetToGold[betSize] = betSize * 110 / 100; goldBetToRegular[(betSize * 110 / 100)] = betSize; availableBetsArray.push(betSize); } // Don't have way to remove bet size. That's good. // Get available bet sizes function getAvailableBetSizes() view public returns (uint256[]) { return availableBetsArray; } // Buy ticket function buyRegularTicket() public payable { require(availableBets[msg.value] == true, "Unsupported market"); if (games[msg.value].numberOfRounds == 4) { // Loose, 20% chances to loose } else { // Win, 80% chances to win } } // Default function. Possible to bet just with sending money to contract function() public payable { buyRegularTicket(); } }
0.4.25