klayzyb
2021-12-06 12:31
采纳率: 100%
浏览 57

solidity编译的骰子游戏出现了个问题

问题遇到的现象和发生背景

在constructor() public {
owner = msg.sender;处出现问题

问题相关代码,请勿粘贴截图

pragma solidity ^0.4.0;

contract MyDice {

// 合约创建者
address private owner;

modifier onlyOwner() {
    require(msg.sender == owner);
    _;
}

constructor() public {
    owner = msg.sender;
}

// 房主给合约钱包里充钱
function recharge() onlyOwner payable public {
}

// 房主主动从合约钱包中提现
function withdraw(uint32 _amount) onlyOwner public {
    owner.transfer(_amount);
}

// solidity不能返回结构, 但可以返回元组
// @param _num                 为选择的数字 [1, 99]之间
// @return (玩家选择数字, 筹码, 生成的数字, 赔付筹码)
function play(uint8 _num) payable public
        returns (uint8, uint256, uint8, uint256) {

    require(_num >= 1 && _num <= 99);

    // 生成[0, 99]的随机数
    uint8 tval = randomInt(0, 99);

    if ( tval < _num ) {
        // 计算赔付的值
        uint256 payout = uint256(msg.value * 100 / _num);
        msg.sender.transfer(payout);
        return (_num, msg.value, tval, payout);
    } else {
        return (_num, msg.value, tval, 0);
    }

}

// 生成[min, max]之间的一个随机数
function randomInt(uint8 min, uint8 max) private
        view returns(uint8) {

    require(max > min);

    bytes32 hash = keccak256(
        abi.encodePacked(now, msg.sender, block.difficulty)
    );

    return uint8(uint256(hash) % (max - min + 1)) + min;

}

}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

1条回答 默认 最新

相关推荐 更多相似问题