本关卡砖块长度是随机的,所以为了简洁代码不使用【for】循环而是采用【while】循环。

为了代码整洁不使用过多的移动函数。

完整代码如下:

func cheak() {
    
    if isOnClosedSwitch {
        toggleSwitch()
        
    }else if isOnGem {
        collectGem()
        
    }

}


while !isBlocked  {
    cheak()
    moveForward()
    
    if isBlockedLeft && isBlocked {
        turnRight()
        moveForward()
        turnRight()
        
    };
    if isBlocked && !isBlockedRight {
            turnLeft()
            moveForward()
            turnLeft()
            
        }
}

在右下角提示中会告知用户需要检查每一块砖上是否有开关或宝石。

所以在第一步要创建【func】函数做检查。⬇️
func cheak() {
    
    if isOnClosedSwitch {
        toggleSwitch()
        
    }else if isOnGem {
        collectGem()
        
    }

}
第二步,创建while循环并添加【!isBlocked】条件以让其在满足条件时运行循环,不满足时停止循环。
while !isBlocked  {


}
第三步,加入第一步的检查【cheak()】函数使其在每次【while】循环时检查一遍砖块,并添加前进函数。
while !isBlocked  {
    cheak()
    moveForward()

}
第四步,遇到第一次阻塞时添加【if】条件并加入逻辑运算符,原理是当符合左边阻塞&&前方阻塞条件时运行此条件代码使其向右转-前进一步-向右转实现转身并继续运行【while】循环代码。

while !isBlocked  {
    cheak()
    moveForward()
    
    if isBlockedLeft && isBlocked {
        turnRight()
        moveForward()
        turnRight()

}
第五步,在遇到第二次阻塞时再次添加【if】条件并加入逻辑运算符,原理是当符合前方阻塞&&右侧没有阻塞条件时运行此条件代码使其实现向左转-前进一步-向左转实现转身并继续运行【while】循环代码。

while !isBlocked  {
    cheak()
    moveForward()
    
    if isBlockedLeft && isBlocked {
        turnRight()
        moveForward()
        turnRight()
        
    };
    if isBlocked && !isBlockedRight {
            turnLeft()
            moveForward()
            turnLeft()
            
        }
}

教程结束,感谢观看

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐