青少年编程Playgrounds之二十–算法
第五关 向左走,向右走
本关是本章也是学习编程1的最后一关。
感慨良多,对比一下第一关,这还是同一个学习编程吗?走到这里,想来也对编程有了一定的了解,逻辑,条件,循环,函数也应该有了深刻印象了。
学习编程2 会更进一步深入了解函数,数组,类,算法等等,真的很不错。
无论哪种语言,这些内容都是必不可少的
废话不多说了,进正题。
根据地图来看,通关方法有很多,完全自由发挥,地图和宝石及开关位置都是固定的,所以难点在于你想写多少种方案,你想多精简,你的野心有多大😄
抛砖引玉
先不头脑风暴,把必须要用到的函数写下来
func collectOrToggle(){
if isOnGem{
collectGem()
}else if isOnClosedSwitch{
toggleSwitch()
}
}
分析一下搜集和开关切换部分,每次遇到宝石必定右转,而切换开关必定左转,那么稍微修改一下函数
func collectOrToggle(){
if isOnGem{
turnRight()
for i in 0..<2{
collectGem()
moveForward()
}
}
//当执行完后,Byte已经不在开关上了
else if isOnClosedSwitch{
turnLeft()
for i in 0..<2{
toggleSwitch()
moveForward()
}
}
}
完成两个宝石,两个开关的动作,然后离开
然后导航算法
func navigateAroundWall() {
if isBlocked{
if !isBlockedLeft{
turnLeft()
}else {
turnRight()
}
}else{
moveForward()
}
}
主循环中依次调用函数,因为很明显可以用最后一个已经打开的开关作为结束条件,而我们的开关操作函数已经避免了会异常退出,所以,在主循环中
while !isOnOpenSwitch{
navigateAroundWall()
collectOrToggle()
}
高速运行代码
通关啦…!!!👌
虽然主循环中代码量很少,但整体代码量不少,所以肯定有更简单更灵活的代码,那就拜托你了…
我在学习编程2等着你哦。
你问我为什么不用复数,你们,嗯,你懂的,根据阅读量我们可以简单推断一下的。
说句心里话,我是真心觉得Playgrounds很适合入门编程语言学习,比Scratch更深一些,但是图文并茂啊,有3D地图和角色啊,直接控制角色啊。但是市场全是Python的编程学习的,几乎没有Playgrounds的市场,或许因为这个是基于Swift语言的原因吧。苹果还得再努力啊。虽然现在
Swift + SwiftUI 的方式已经把做苹果生态链的门栏降到地平线了,可惜中国的影响力完全不够啊。国外教学网站很多这方面的东西,可惜了。
其实就算不学Swift编程,这个学习编程系列也对于语言的理解很有帮助,语言都有共同性,掌握了这些,C,C++,C#,python…,Java也是能很好上手的啊。
好吧,Java我不知道,我只是熟练掌握C
会用C++,C#而已
Python其实也就是用它做AI的机器人学习生成学习模块而已。