Created
November 4, 2023 01:52
-
-
Save paulwu0903/2de8d3ab32088728b1ddf0680ce3af8e to your computer and use it in GitHub Desktop.
猜數字範例
This file contains 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: GPL-3.0 | |
pragma solidity >=0.8.2 <0.9.0; | |
/** | |
* @title Storage | |
* @dev Store & retrieve value in a variable | |
* @custom:dev-run-script ./scripts/deploy_with_ethers.ts | |
*/ | |
contract GuessNumber { | |
uint256 totalParticipants = 500; | |
uint256 maxNum = 200; | |
uint256 minNum = 1; | |
uint256 number; | |
uint256 answer; | |
address owner; | |
mapping(address => uint) public guessNumberMap; | |
mapping(address => bool) public isVip; | |
mapping(address => bool) public isParticipate; | |
address[] vipList; | |
constructor(address[] memory whitelist ) { | |
owner = msg.sender; | |
for(uint256 i =0; i < whitelist.length; i++){ | |
address user = whitelist[i]; | |
vipList.push(whitelist[i]); | |
isVip[user] = true; | |
} | |
} | |
function guessNumber(uint256 _guessNum) public { | |
require(isVip[msg.sender] == true, "Not a VIP."); | |
require(isParticipate[msg.sender] ==false, "already answer."); | |
require(_guessNum <= maxNum && _guessNum >= minNum, "over range."); | |
guessNumberMap[msg.sender] = _guessNum; | |
isParticipate[msg.sender] = true; | |
} | |
function setAnswer(uint256 _answer) public { | |
require(owner == msg.sender, "not an owner!"); | |
require(_answer <= maxNum && _answer >= minNum, "over range."); | |
answer = _answer; | |
} | |
function getRewards() public { | |
require(owner == msg.sender, "not an owner!"); | |
//1. 取得答案 - answer | |
//2. 知道每個人選了什麼數字 | |
for (uint i = 0; i < vipList.length; i++) { | |
address user = vipList[i]; | |
uint256 num = guessNumberMap[user]; | |
if (num == answer){ //3. 判斷誰對中了數字 | |
//4. 發幣 - 0.1 ETH | |
payable(user).transfer(10**17); | |
} | |
} | |
} | |
function retrieve() public view returns (uint256){ | |
return number; | |
} | |
function deposit() external payable { | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment