CodeMonkey過關學習筆記系列:71-75關
•“函數”農場 (FUNCTION FARM) 71 ~ 85
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZlBnaucTZnFWbp9CX5V2au9WblR2bj9CXyVGdzFWbvw1ZvxmY512LcNkRTV2Zh12Lc12bj5CduVGdu92YyV2c1JWdoRXan5ydhJ3Lc9CX6MHc0RHaiojIsJye.jpeg)
第 關挑戰
"函數"農場
step distanceTo match
grab()
step pile.distanceTo rat
drop()
第 關挑戰
turnTo match
step distanceTo match
grab()
turnTo pile
step distanceTo pile
drop()
第 關挑戰
# 順便說一下,這是一行注釋哦 這裡開始引入了注釋的概念
# 它是由 '#' 開始的
for m in matches
turnTo m
step distanceTo m
grab()
turnTo pile
step distanceTo pile
drop()
# 每次隻能撿一根火柴
第 關挑戰
# 有沒有發現代碼有重複的地方,下面會引入函數,就可以減少代碼的重複了
turnTo bridge
step distanceTo bridge
turnTo match
step distanceTo match
grab()
turnTo bridge
step distanceTo bridge
turnTo pile
step distanceTo pile
drop()
第 關挑戰
# 這裡開始引入函數的概念了,這一關卡是不是和上一個很類似
goto = (t) ->
turnTo t
step distanceTo t
goto bridge
goto match
grab()
goto bridge
goto pile
drop()
CodeMonkey過關學習筆記系列:76-85關
•“函數”農場 (FUNCTION FARM) 71 ~ 85
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZlBnaucTZnFWbp9CX5V2au9WblR2bj9CXyVGdzFWbvw1ZvxmY512LcNkRTV2Zh12Lc12bj5CduVGdu92YyV2c1JWdoRXan5ydhJ3Lc9CX6MHc0RHaiojIsJye.jpeg)
第 關挑戰
goto = (a) ->
turnTo a
step distanceTo a
for match in matches
goto match
grab()
goto pile
drop()
//================================================
goto = (a) ->
turnTo a
step distanceTo a
goto matches[]
grab()
goto pile
drop()
goto matches[]
grab()
goto pile
drop()
第 關挑戰
goto = (a) ->
turnTo a
step distanceTo a
for m in matches
goto m
grab()
goto pile
drop()
第 關挑戰
goto = (c) ->
turnTo c
step distanceTo c
goto bridge
goto match
grab()
goto bridge
goto(pile)
drop()
第 關挑戰
goto = (p) ->
#請在這裡編寫函數的實作
turnTo p
step distanceTo p
for m in matches
goto bridge
goto m
grab()
goto bridge
goto pile
drop()
第 關挑戰
collect = (e) ->
turnTo e
step distanceTo e
grab()
turnTo pile
step distanceTo pile
drop()
for m in matches
collect m
第 關挑戰
這裡不隻有一個函數, 而是有 兩個 函數 !
goto = (t) ->
turnTo t
step distanceTo t
collect = (e) ->
goto e
grab()
goto pile
drop()
for m in matches
collect m
第 關挑戰
#請在這裡定義 goto 函數
goto = (x)->
turnTo x
step distanceTo x
goto match
grab()
goto pile
drop()
第 關挑戰
接下來我們試試将小島 islands 和木筏 rafts 作為函數的參數來使用
goto = (t) ->
turnTo t
step distanceTo t
gotoAll = (stuff) ->
for s in stuff
goto s
gotoAll islands
grab()
gotoAll rafts
drop()
第 關挑戰
goto = (t) ->
turnTo t
step distanceTo t
getAndReturn = (r) ->
goto r
grab()
goto turtle
for m in matches
getAndReturn m
goto pile
drop()
goto turtle
turtle.step
//我們把去火柴的的過程也封裝為一個函數
goto = (p) ->
turnTo p
step distanceTo p
grabAndReturn = (r) ->
goto r
grab()
goto turtle
dropAndReturn=()->
goto pile
drop()
goto turtle
for m in matches
grabAndReturn m
dropAndReturn()
turtle.step
第 關挑戰
我們也可以用數字 numbers 作為函數的參數
goto = (t) ->
turnTo t
step distanceTo t
collect = (m) ->
goto m
grab()
goto pile
drop()
#這個函數應該讓所有
#turtles 前進 d (d是數字)
allTurtlesStep = (d) ->
#請完成這裡!
for c in turtles
c.step d
allTurtlesStep
collect matches[]
allTurtlesStep -
collect matches[]