Skip to content

Instantly share code, notes, and snippets.

@hashcott
Last active April 2, 2024 14:54
Show Gist options
  • Select an option

  • Save hashcott/f30a218f102589f07ff6039e50a081d0 to your computer and use it in GitHub Desktop.

Select an option

Save hashcott/f30a218f102589f07ff6039e50a081d0 to your computer and use it in GitHub Desktop.
Game High or Low
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.9;
/*
Requirements:
- Nạp tiền vào game ( lưu số dư của người dùng )
- Rút tiền về ví
- Owner nạp tiền
- highLow ( number, số cược )
- random
*/
contract HighLow {
mapping (address => uint256) public accounts;
address public owner;
uint public balanceOfOwner;
uint randNoce = 0;
event LucknumEvent (
uint256 number
);
event Win (
bool isWin,
address indexed winner
);
constructor() {
owner = payable (msg.sender);
}
function randMod(uint _mod, uint _min) public returns (uint) {
randNoce++;
uint256 num = uint(keccak256(abi.encodePacked(block.timestamp, msg.sender, randNoce))) % _mod + _min;
emit LucknumEvent(num);
return num;
}
function napTien() public payable {
require(msg.value >= 0.01 ether, "Vui long nap lon hon 0.01 ether");
accounts[msg.sender] += msg.value;
}
function ownerNapTien() public payable {
balanceOfOwner += msg.value;
}
function rutTien(uint value) public {
require(accounts[msg.sender] >= value, "Khong du tien rut");
require(value >= 0.01 ether, "Vui long rut lon hon 0.01 ether");
accounts[msg.sender] -= value;
bool isDone = payable (msg.sender).send(value);
require(isDone);
}
function ownRutTien(uint value) public {
require(balanceOfOwner >= value, "Khong du tien rut");
require(msg.sender == owner);
balanceOfOwner -= value;
bool isDone = payable (msg.sender).send(value);
require(isDone);
}
function highLow(uint256 number, uint256 value) public returns (bool) {
uint luckyNum = randMod(12,2) + randMod(5, 2);
if(number == luckyNum) {
accounts[msg.sender] += value * 2;
// phat su kien (phat lenh)
emit Win(true, msg.sender);
return true;
} else {
accounts[msg.sender] -= value;
balanceOfOwner += value;
emit Win(false, msg.sender);
return false;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment