TechFinger遊戲搬磚(智慧合約)系統程式設計開發技術程式碼示例

I76製作2o72建9II9發表於2023-04-18

TechFinger遊戲搬磚是一款基於區塊鏈技術的遊戲,玩家可以透過遊戲搬磚獲取代幣獎勵,並將其交易或持有。


遊戲規則:


每輪遊戲中有兩個玩家,分別是搬磚者和監工;


搬磚者需要在規定的時間內搬運磚塊,每搬運一個磚塊就可以獲得一定數量的代幣獎勵;


監工需要監2督搬磚者的行為,確保其沒有作弊,如果發現搬磚者有作弊行為,則監2工可以將其舉2報,舉2報成功後,搬磚者將會

失去本輪遊戲的代幣獎勵;


每輪遊戲結束後,玩家可以選擇將代幣交易或持有。




Solidity智慧合約


scssCopy codepragma solidity ^0.8.0;
contract TechFinger {
    
    uint256 public constant PRICE = 0.01 ether; //每塊磚的價格
    uint256 public constant TOTAL_BRICKS = 100; //每輪遊戲中的磚塊總數
    uint256 public constant TIME_LIMIT = 1 minutes; //每輪遊戲的時間限制
    uint256 public constant REPORT_REWARD = 10; //成功舉報後的獎勵數量
    
    uint256 public roundIndex = 0; //當前遊戲輪次
    uint256 public bricksIndex = 0; //當前已經搬運的磚塊數
    uint256 public startTime; //當前遊戲開始時間
    address public lastBricker; //上一個搬磚者
    address public lastSupervisor; //上一個監工
    
    mapping (address => uint256) public balances; //玩家的餘額
    
    event BuyBrick(address indexed player, uint256 amount); //購買磚塊事件
    event ReportCheater(address indexed supervisor, address indexed bricker); //舉報作弊者事件
    event Withdraw(address indexed player, uint256 amount); //提現事件
    
    function buyBrick() public payable { 
           require(msg.value == PRICE, "Incorrect price");  
                 require(bricksIndex < TOTAL_BRICKS, "All bricks have been bought");    
                     require(block.timestamp < startTime + TIME_LIMIT, "Game over");
        
        lastBricker = msg.sender;
        bricksIndex++;
        balances[msg.sender] += 1;
        
        if (bricksIndex == TOTAL_BRICKS) {
            roundIndex++;
            bricksIndex = 0;
            startTime = block.timestamp;
        }
        
        emit BuyBrick(msg.sender, 1);
    }
    
    function reportCheater(address _bricker) public {   
         require(msg.sender != _bricker, "Can't report yourself");  
               require(block.timestamp < startTime + TIME_LIMIT, "Game over");    
                   require(balances[msg.sender] >= REPORT_REWARD, "Not enou


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70028135/viewspace-2946511/,如需轉載,請註明出處,否則將追究法律責任。

相關文章