Last active
April 2, 2024 14:54
-
-
Save hashcott/f30a218f102589f07ff6039e50a081d0 to your computer and use it in GitHub Desktop.
Game High or Low
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
| // 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