哈希竞猜游戏DAPP开发功能丨哈希游戏系统设计开发项目

247 阅读1分钟

DAPP哈希竞猜游戏这种游戏是建立在区块链上的,玩家可以通过支付一定的代币,竞猜由智能合约生成的随机哈希值的末尾几位数字。

scssCopy codepragma solidity ^0.8.0;
       players.push(payable(msg.sender));
        playerExists[msg.sender] = true;
        totalBet += msg.value;
        numberOfBets++;
    }
    
    function distributePrizes(uint256 seed) public onlyOwner {
        bytes32 winner = keccak256(abi.encodePacked(blockhash(block.number-1), seed));
        uint256 count = 0;
        for (uint256 i = 0; i < players.length; i++) {
                    address payable player = players[i];
            if (playerGuesses[player] == uint256(winner) % 100) {
                count++;
            }
        }
        if (count > 0) {
            uint256 winnerEtherAmount = totalBet / count;
            for (uint256 j = 0; j < players.length; j++) {
                            address payable player = players[j];
                if (playerGuesses[player] == uint256(winner) % 100) {
                    player.transfer(winnerEtherAmount);
                }
contract HashGuessGame {    
    address payable public owner;
    uint256 public minBet;
    uint256 public totalBet;

                mapping(address => bool) public playerExists;    
    constructor() public {
        owner = payable(msg.sender);
        minBet = 10000000000000000; // 0.01 ether
    }
    
    modifier onlyOwner() {
            require(msg.sender == owner);
        _;
    }
    
    function kill() public onlyOwner {
            selfdestruct(owner);
    }
    
    function guess(uint256 guessValue) public payable {
            require(msg.value >= minBet);
            require(numberOfBets < maxAmountOfBets);
                    require(playerExists[msg.sender] == false);
            }
        }
        playerGuesses[msg.sender] = guessValue;
        playerBets[msg.sender] = msg.value;
     uint256 public numberOfBets;
    uint256 public maxAmountOfBets = 3;
    bytes32 public lastHash;
        address payable[] public players;
            mapping(address => uint256) public playerBets;
            mapping(address => uint256) public playerGuesses;
                delete playerBets[player];
                delete playerGuesses[player];
                delete playerExists[player];
            }
            players = new address payable[](0);
            totalBet = 0;
            numberOfBets = 0;
        }
        lastHash = winner;
    }
    
}