Simple contracts: Game of Dice
function gameOfDice (betOn, betAmount){
var wallet = getSender();
var winMult = 1.5;
var feeMult = 2;
var diceMin = 1;
var diceMax = 6;
var diceRoll = parseInt(Math.random() *(diceMax - diceMin + 1) + diceMin);
addCustomField('roll', diceRoll); //to display roll's result
var playerBalance = getBalance(wallet).Int64();
var message = '';
if (typeof betOn !== 'number' || parseInt(betOn) != betOn || betOn < diceMin || betOn > diceMax) { //condition 3
message = 'Bet value is out of expected range [' + diceMin + ', ' + diceMax + '] or not integer';
transfer(getContractHash(), currentFee() * feeMult);
}
else if (playerBalance < betAmount) { //condition 2
message = 'Insufficient funds';
transfer(getContractHash(), playerBalance - currentFee());
}
else if (diceRoll == betOn){
message = 'You won!';
var contractBalance = getBalance(getContractHash()).Int64();
var target = betAmount * (winMult - 1);
transferFromContract(wallet, contractBalance >= target ? target : contractBalance);
}
else {
message = 'You lose!';
transfer(getContractHash(), betAmount);
}
ddCustomField('message', message);
}Last updated






