青少年编程Playgrounds之十一--条件代码

青少年编程Playgrounds之十一–条件代码

第六关 微困其中

在这里插入图片描述
在这里插入图片描述

首先无脑完成开关或宝石搜集函数

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

然后,当我们点击编程区域时,仔细看下方提供的函数时,会发现,它悄悄提供了一个函数,即isBlock
在这里插入图片描述
有了这个函数,编程就会方便很多。
那么分析Byte同学的逻辑线路
总共需要完成8个开关或者宝石的操作,那么需要前进8次,同时每次前进完成需要完成搜集或打开开关动作,然后根据情况选择是直接前进还是转向。
那么,再定义一个转向或者前进的函数

//如果前路不通,左转,再前进
func moveAndTurn(){
    if isBlocked{
        turnLeft()
    }
    moveForward()
}

然后在主程序中调用8次上面两个函数即可

for i in 0..<8{
    moveAndTurn()
    collectOrToggle()
}

在这里插入图片描述

在这里插入图片描述

第七关 决策树

在这里插入图片描述
在这里插入图片描述

Byte再一次站在了起点,这是他本章冒险的最后一关,但不是冒险的全部。虽然每次过关等待它的只不过是新的挑战,但它并不退却,因为这是它生命的意义。

每次遇到钻石右转,遇到未打开的开关左转。那么首先完成,左右两个方向的任务。

func solveRightSide(){
    collectGem()
    turnRight()
    for i in 0..<4{
        if isBlocked{
            turnLeft()
        }
        moveForward()
        
        
    }
    collectGem()
    turnLeft()
    turnLeft()
    for i in 0..<4{
        if isBlocked{
            turnRight()
        }
        moveForward()
    }
    turnRight()
    
}

分成来去两个方式来解决右路的问题,并回到原点。
左边宝石获取并回到原点

func solveLeftSide(){
    toggleSwitch()
    turnLeft()
    moveForward()
    collectGem()
    turnLeft()
    turnLeft()
    moveForward()
    turnLeft()
    
}

主程序

for i in 0..<5{
    moveForward()
    if isOnGem{
        solveRightSide()
    }else if isOnClosedSwitch{
        solveLeftSide()
    }
}

运行代码
在这里插入图片描述
虽然完成了任务,但是这个方法只是针对该地图宝石,开关位置固定的情况而言,可以通过修改程序,实现宝石开关不固定的情况来完成任务,这个也不是很麻烦,就不赘述了。
好了,条件代码章节完成。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值