Created
July 20, 2018 00:07
-
-
Save ripter/168080c2fbf6b3a742ecc82330b7622d to your computer and use it in GitHub Desktop.
This file contains hidden or 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.0; | |
contract BOSGame { | |
struct Vote { | |
uint choice; | |
uint amount; | |
address owner; | |
} | |
mapping(address => Vote) playerVote; | |
mapping(address => bool) didPlayerVote; | |
address[2] players; | |
function castVote(uint _vote) | |
public | |
payable | |
canVote | |
{ | |
// Save the player's vote | |
didPlayerVote[msg.sender] = true; | |
playerVote[msg.sender] = Vote(_vote, msg.value, msg.sender); | |
// We need two players, so put this player in the open slot. | |
// no .push for a fixed length array | |
if (players[0] == address(0)) { | |
players[0] = msg.sender; | |
} else { | |
players[1] = msg.sender; | |
} | |
} | |
function didIWin() | |
public | |
view | |
mustBeAVoter | |
needAllVotes | |
returns(bool) | |
{ | |
if (playerVote[players[0]].choice == playerVote[players[1]].choice) { | |
return true; | |
} | |
return false; | |
} | |
function getVoteChoice() | |
public | |
view | |
mustBeAVoter | |
returns (uint) | |
{ | |
return playerVote[msg.sender].choice; | |
} | |
function getVoteAmount() | |
public | |
view | |
mustBeAVoter | |
returns (uint) | |
{ | |
return playerVote[msg.sender].amount; | |
} | |
function getTotalBalance() | |
public | |
view | |
returns (uint) | |
{ | |
return address(this).balance; | |
} | |
modifier mustBeAVoter() { | |
require(didPlayerVote[msg.sender], "You did not vote."); | |
_; | |
} | |
modifier needAllVotes() { | |
require(players[0] != 0 && players[1] != 0, "Waiting for votes."); | |
_; | |
} | |
modifier canVote() { | |
require(msg.value > 0, "Vote needs a value to be cast."); | |
require(players[0] == 0 || players[1] == 0, "Votes are in."); | |
require(didPlayerVote[msg.sender] == false, "You already voted."); | |
_; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment