学习编程2.playgroundbook 随机宝石遍布各处

挑战如下图所示:



1.挑战先给一个常量,这个常量等于随机宝石的数量;例如:宝石随机5个,totalgems就=5

这个常量作用不大,主要是后面使用whlie语句时,使宝石数小于随机数时,可以一直循环whlie内语句用的

let totalGems = randomNumberOfGems



2.我们先设2个常量,初始值都=0;一个是宝石数,一个是“转身”数(这才是最有用的!!!)

var numberOfGem = 0

var numberOfGoback = 0


3.定义一个“转身”函数,这个函数就是当前方遇到阻碍时,2次左转来实现转身的

�funcgoback()

{

    turnLeft()

    turnLeft()

}


4.定义获取宝石和前方遇到阻碍时,主角的动作;当然,宝石数和转身数都要相应增加 +=1

funcgetgem()

{

    ifisBlocked

    {

        goback()

        numberOfGoback +=1

    }

    ifisOnGem

    {

        collectGem()

        numberOfGem +=1

    }

}


5.再定义一个转身次数与粉开关&蓝开关的对应关系,false为关,true为开

场景:【转身1,粉关】、【转身2,粉开】、【转身3,粉关&蓝关】

           【转身4,蓝开】、【转身5,蓝关】

说明:转身次数1~5的条件都是有必要的,多运行几次就会发现宝石的分布会出现在

一些角落里,如果条件少了,宝石就会获取不到(代码还可以优化,不过我懒得改了)

functwoswitch()

{

    ifnumberOfGoback ==1

    {pinkPortal.isActive = false}

    ifnumberOfGoback ==2

    {pinkPortal.isActive = true}

    ifnumberOfGoback ==3

    {

        pinkPortal.isActive = false

        bluePortal.isActive = false

    }

    ifnumberOfGoback ==4

    {bluePortal.isActive = true}

    ifnumberOfGoback ==5 

    {bluePortal.isActive = false}

}

这种场景就可以看出1-5次的重要了

6.下面为简单代码,函数变量等说明都是上面了⬆️

whilenumberOfGem != totalGems

{

    moveForward()

    getgem()

    twoswitch()

}


7.最后就是所有代码了,大家可以参考一下;另外,宝石数不能决定开关是否开关啊喂(反正我是没找到方法),后面灵光一闪,发现转身的次数用来决定粉色和蓝色开关是否开关才是最佳的办法啊!!!果断被宝石数和随机宝石数所迷惑了,并且“提示”还建议比较2者进行写代码?!

//随机数totalgems

lettotalGems = randomNumberOfGems

//设变量宝石数,初始值为0

varnumberOfGem =0

varnumberOfGoback =0

//定义转身函数

funcgoback()

{

    turnLeft()

    turnLeft()

}

//定义获取宝石和转身的函数

funcgetgem()

{

    ifisBlocked

    {

        goback()

        numberOfGoback +=1

    }

    ifisOnGem

    {

        collectGem()

        numberOfGem +=1

    }

}

//定义开关的函数

functwoswitch()

{

    ifnumberOfGoback ==1

    {pinkPortal.isActive =false}

    ifnumberOfGoback ==2

    {pinkPortal.isActive =true}

    ifnumberOfGoback ==3

    {

        pinkPortal.isActive =false

        bluePortal.isActive =false

    }

    ifnumberOfGoback ==4

    {bluePortal.isActive =true}

    ifnumberOfGoback ==5 

    {bluePortal.isActive =false}

}

//*****正式代码正式代码正式代码正式代码*****

whilenumberOfGem != totalGems

{

    moveForward()

    getgem()

    twoswitch()

}

//转身1,粉关

//转身2,粉开

//转身3,粉关,蓝关

//转身4,蓝开

//转身5,蓝关

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容