【实时更新】playgrounds应用题解
swift吧
全部回复
仅看楼主
level 6
灬盲 楼主
本人新手,从上周五接触pad上的playgrounds应用后纯当解谜游戏在玩却一发不可收。
开始了解这门语言,并决定先攻破这三个疗程。
苦于缺少一些同好一起交流指正更优解题方案,故想在此开帖更新各关卡代码,欢迎大家一起交流。
由于之前的关卡过于简单,我直接从第一个疗程while里的富饶之地开始。
2017年03月30日 12点03分 1
level 6
灬盲 楼主
【富饶之地】
func backAround() {
turnLeft()
turnLeft()
moveForward()
moveForward()
turnRight()
}
while !isBlocked {
moveForward()
turnRight()
for i in 1 ... 3 {
if isOnClosedSwitch {
toggleSwitch()
moveForward()
} else if isOnOpenSwitch {
moveForward()
} else if isOnGem {
collectGem()
moveForward()
}
}
backAround()
}
2017年03月30日 12点03分 2
把每条路径看成循环解决方案,然后拆分这条路径里的方法
2017年03月30日 12点03分
这是我的
2017年04月04日 16点04分
@灬盲 唉。。一直写竖着的 写不出来 看了你的 把三个三个作为循环 唉,我的灵性何在~
2017年04月11日 15点04分
回复 wang_024:一样 😄
2017年04月15日 07点04分
level 6
灬盲 楼主
【征服迷宫】
func navigateAroundWall() {
if isBlockedRight && !isBlocked {
moveForward()
} else if isBlocked && isBlockedRight {
turnLeft()
} else {
turnRight()
moveForward()
}
}
while !isOnGem {
navigateAroundWall()
}
collectGem()
2017年03月30日 13点03分 3
关注[呵呵]
2017年03月31日 05点03分
level 6
灬盲 楼主
【左转还是右转?】
func go() {
if isOnClosedSwitch && !isBlocked {
toggleSwitch()
turnRight()
moveForward()
} else if isOnClosedSwitch && isBlocked {
toggleSwitch()
turnLeft()
moveForward()
} else {
moveForward()
}
}
while !isOnGem {
go()
}
collectGem()
2017年03月30日 13点03分 4
做了点小简化 func(go){ If isblockedright && ! Isblocked { Moveforward () }else if isblocked{ Turnleft() }else{ Turnright () Moveforward () } } while !isongem { Go() If isonclosedswitch{ Toggleswitch () } } Collectgem()
2017年04月11日 03点04分
厉害了
2018年03月11日 17点03分
level 6
灬盲 楼主
【向左走,向右走】
func getGem() {
if isOnGem {
collectGem()
moveForward()
} else if isBlocked {
turnLeft()
moveForward()
turnLeft()
} else {
moveForward()
}
}
func changeSwitch() {
if isOnClosedSwitch {
toggleSwitch()
moveForward()
} else if isBlocked {
turnRight()
moveForward()
turnRight()
} else {
moveForward()
}
}
moveForward()
turnRight()
while !isOnOpenSwitch {
while !isOnClosedSwitch && !isOnOpenSwitch {
getGem()
}
while !isOnGem && !isOnOpenSwitch {
changeSwitch()
}
}
2017年03月30日 13点03分 5
while !isOnOpenSwitch { if isOnGem { collectGem() } if isOnClosedSwitch { toggleSwitch() } if isBlocked && isBlockedLeft { turnRight() } if isBlocked { turnLeft() } moveForward() }
2017年04月03日 08点04分
我感觉自己写的这个一点不像解决问题的代码,单回楼你看看
2017年04月03日 08点04分
回复 莎碧·茜 :这么写在开启一个开关后角色就会停下来,因为不满足这个循环了
2017年04月03日 12点04分
@灬盲 过了的
2017年04月03日 15点04分
level 5
密切关注,我也闯关中
2017年03月30日 17点03分 7
level 14
见闺蜜男友之前先看过照片,感觉一般,闺蜜解释是他不上相的缘故。今天见到本人,比照片还丑好些,闺蜜问观后感。不好伤她自尊心,憋了半天,感慨道:其实他挺上相的。
2017年03月31日 01点03分 8
level 5
我卡在第二章第五关“随机宝石遍布各处”
2017年03月31日 04点03分 9
晚上更新上来[太开心]
2017年03月31日 05点03分
第二章第五关刚过了,就是算法自己感觉效率低下。等着看你的算法了。
2017年03月31日 06点03分
楼主,我QQ好1153765860加好友吧。
2017年03月31日 06点03分
回复 gong2k :你的扣扣拒绝被添加,加我吧114076891
2017年03月31日 08点03分
level 6
灬盲 楼主
【三颗宝石,四个开关】
var numOfGem = 0
var numOfSwitch = 0
var numOfBlocked = 0
while numOfGem < 3 || numOfSwitch < 4{
if isOnGem && numOfGem < 3 {
collectGem()
numOfGem = numOfGem + 1
moveForward()
} else if numOfBlocked == 2 {
turnLeft()
turnLeft()
moveForward()
numOfBlocked = 99
} else if isOnClosedSwitch {
toggleSwitch()
numOfSwitch = numOfSwitch + 1
} else if isBlocked {
turnRight()
moveForward()
numOfBlocked = numOfBlocked + 1
} else {
moveForward()
}
}
2017年03月31日 08点03分 11
numOfBlocked 是定义的什么?大神!
2017年04月05日 03点04分
@jimaing 自己声明的一个碰壁次数,记录角色有多少次无法前行。把他作为一个条件来用
2017年04月06日 08点04分
level 6
灬盲 楼主
【检查等值】
let switchCounter = 5
var gemCount = 0
while gemCount < 5 {
if isOnGem {
collectGem()
gemCount = gemCount + 1
moveForward()
} else if isBlocked {
turnRight()
moveForward()
} else {
moveForward()
}
}
2017年03月31日 12点03分 12
楼主,你的代码有问题吧 。常量的数值是变化的,每一次开始都是不一样的!开始怎么知道常量是多少?这一关卡我很长时间了 不知道怎么解决
2017年06月28日 01点06分
回复 Bruce_yinxf :不知道为什么发出来后会变形,反正思路在这你自己看吧。 第三次发希望能正常显示ing(let switchCounter = numberOfSwitches var gems = 0 while gems < switchCounter {if i
2017年07月19日 05点07分
回复 Bruce_yinxf :算了我新开一层,你自己翻
2017年07月19日 05点07分
level 6
灬盲 楼主
【清点开关】
var gemCount = 0
var switchCount = 0
for i in 1 ... 9 {
if isOnGem {
collectGem()
gemCount += 1
moveForward()
} else if isBlocked {
turnRight()
} else {
moveForward()
}
}
while switchCount < gemCount {
if isOnClosedSwitch {
toggleSwitch()
switchCount += 1
moveForward()
} else if isBlocked {
turnRight()
} else {
moveForward()
}
}
2017年03月31日 13点03分 13
可以不用设置for的循环。把while的循环条件设成 while switchCount != gemCount || switchCount == 0 就能解决最后停止的问题。我刚玩多些楼主,加油[大拇指]
2017年04月27日 03点04分
level 6
灬盲 楼主
【收集指定总数】
let totalGems = randomNumberOfGems
var gemCount = 0
while gemCount != totalGems {
for i in 1 ... 5 {
if isOnGem {
collectGem()
gemCount += 1
moveForward()
} else if isBlocked {
turnRight()
} else {
moveForward()
}
}
for i in 1 ... 5 {
if isOnGem {
collectGem()
gemCount += 1
moveForward()
} else if isBlocked {
turnLeft()
} else {
moveForward()
}
}
}
2017年03月31日 13点03分 15
level 6
灬盲 楼主
【设定
正确的
传送门】
var gemCount = 0
while gemCount<4 {
if gemCount == 1 {
bluePortal.isActive = false
} else if gemCount == 2 {
bluePortal.isActive = true
pinkPortal.isActive = false
} else if gemCount == 3 {
pinkPortal.isActive = true
}
if isOnGem {
collectGem()
gemCount += 1
moveForward()
} else if isBlocked {
turnRight()
turnRight()
moveForward()
} else {
moveForward()
}
}
2017年04月01日 10点04分 20
level 6
灬盲 楼主
【随机宝石遍布各处】
let totalGems = randomNumberOfGems
var gemCount = 0
pinkPortal.isActive = false
bluePortal.isActive = false
func turnAround() {
getGem()
turnLeft()
turnLeft()
moveForward()
}
func getGem() {
if isOnGem {
collectGem()
gemCount += 1
moveForward()
} else {
moveForward()
}
}
while gemCount != totalGems {
for i in 1 ... 3 {
getGem()
}
turnRight()
moveForward()
turnAround()
moveForward()
turnAround()
turnRight()
pinkPortal.isActive = true
bluePortal.isActive = true
moveForward()
pinkPortal.isActive = false
bluePortal.isActive = false
getGem()
getGem()
turnAround()
moveForward()
moveForward()
getGem()
turnAround()
pinkPortal.isActive = true
bluePortal.isActive = true
moveForward()
pinkPortal.isActive = false
bluePortal.isActive = false
}
2017年04月01日 10点04分 22
这关用两次自动寻路能更智能化一些
2017年04月02日 06点04分
@gong2k 贴上分享一下[花心]
2017年04月03日 06点04分
有庸余,for循环3个多个前进
2017年04月15日 07点04分
@gong2k 可以问下这关怎么自动寻路吗
2017年06月23日 07点06分
level 2

2017年04月01日 23点04分 23
1 2 3 4 尾页