天天看點

CodeMonkey過關學習筆記系列:71-85關 函數•“函數”農場 (FUNCTION FARM) 71 ~ 85•“函數”農場 (FUNCTION FARM) 71 ~ 85

CodeMonkey過關學習筆記系列:71-75關

•“函數”農場 (FUNCTION FARM) 71 ~ 85

CodeMonkey過關學習筆記系列:71-85關 函數•“函數”農場 (FUNCTION FARM) 71 ~ 85•“函數”農場 (FUNCTION FARM) 71 ~ 85
CodeMonkey過關學習筆記系列:71-85關 函數•“函數”農場 (FUNCTION FARM) 71 ~ 85•“函數”農場 (FUNCTION FARM) 71 ~ 85
第  關挑戰
"函數"農場

step distanceTo match
grab()
step pile.distanceTo rat
drop()

           
CodeMonkey過關學習筆記系列:71-85關 函數•“函數”農場 (FUNCTION FARM) 71 ~ 85•“函數”農場 (FUNCTION FARM) 71 ~ 85
第  關挑戰

turnTo match
step distanceTo match

grab()

turnTo pile
step distanceTo pile
drop()

           
CodeMonkey過關學習筆記系列:71-85關 函數•“函數”農場 (FUNCTION FARM) 71 ~ 85•“函數”農場 (FUNCTION FARM) 71 ~ 85
第  關挑戰

# 順便說一下,這是一行注釋哦  這裡開始引入了注釋的概念
# 它是由 '#' 開始的

for m in matches
    turnTo m
    step distanceTo m
    grab()
    turnTo pile
    step distanceTo pile
    drop()
    # 每次隻能撿一根火柴

           
CodeMonkey過關學習筆記系列:71-85關 函數•“函數”農場 (FUNCTION FARM) 71 ~ 85•“函數”農場 (FUNCTION FARM) 71 ~ 85
第  關挑戰

# 有沒有發現代碼有重複的地方,下面會引入函數,就可以減少代碼的重複了

turnTo bridge
step distanceTo bridge
turnTo match
step distanceTo match

grab()

turnTo bridge
step distanceTo bridge
turnTo pile
step distanceTo pile

drop()

           
CodeMonkey過關學習筆記系列:71-85關 函數•“函數”農場 (FUNCTION FARM) 71 ~ 85•“函數”農場 (FUNCTION FARM) 71 ~ 85
第  關挑戰

# 這裡開始引入函數的概念了,這一關卡是不是和上一個很類似
goto = (t) ->
    turnTo t
    step distanceTo t


goto bridge
goto match
grab()
goto bridge
goto pile
drop()

           

CodeMonkey過關學習筆記系列:76-85關

•“函數”農場 (FUNCTION FARM) 71 ~ 85

CodeMonkey過關學習筆記系列:71-85關 函數•“函數”農場 (FUNCTION FARM) 71 ~ 85•“函數”農場 (FUNCTION FARM) 71 ~ 85
CodeMonkey過關學習筆記系列:71-85關 函數•“函數”農場 (FUNCTION FARM) 71 ~ 85•“函數”農場 (FUNCTION FARM) 71 ~ 85
第  關挑戰

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()

           
CodeMonkey過關學習筆記系列:71-85關 函數•“函數”農場 (FUNCTION FARM) 71 ~ 85•“函數”農場 (FUNCTION FARM) 71 ~ 85
第  關挑戰

goto = (a) ->
    turnTo a
    step distanceTo a

for m in matches
    goto m
    grab()
    goto pile
    drop()

           
CodeMonkey過關學習筆記系列:71-85關 函數•“函數”農場 (FUNCTION FARM) 71 ~ 85•“函數”農場 (FUNCTION FARM) 71 ~ 85
第  關挑戰

goto = (c) ->
    turnTo c
    step distanceTo c

goto bridge
goto match
grab()
goto bridge

goto(pile)
drop()


           
CodeMonkey過關學習筆記系列:71-85關 函數•“函數”農場 (FUNCTION FARM) 71 ~ 85•“函數”農場 (FUNCTION FARM) 71 ~ 85
第  關挑戰

goto = (p) ->
    #請在這裡編寫函數的實作
    turnTo p
    step distanceTo p

for m in matches
    goto bridge
    goto m
    grab()
    goto bridge
    goto pile
    drop()

           
CodeMonkey過關學習筆記系列:71-85關 函數•“函數”農場 (FUNCTION FARM) 71 ~ 85•“函數”農場 (FUNCTION FARM) 71 ~ 85
第  關挑戰

collect = (e) ->
    turnTo e
    step distanceTo e
    grab()
    turnTo pile
    step distanceTo pile
    drop()
for m in matches
    collect m

           
CodeMonkey過關學習筆記系列:71-85關 函數•“函數”農場 (FUNCTION FARM) 71 ~ 85•“函數”農場 (FUNCTION FARM) 71 ~ 85
第  關挑戰

這裡不隻有一個函數, 而是有 兩個 函數 !
goto = (t) ->
    turnTo t
    step distanceTo t

collect = (e) ->
    goto e
    grab()
    goto pile
    drop()

for m in matches
    collect m


           
CodeMonkey過關學習筆記系列:71-85關 函數•“函數”農場 (FUNCTION FARM) 71 ~ 85•“函數”農場 (FUNCTION FARM) 71 ~ 85
第  關挑戰

#請在這裡定義 goto 函數
goto = (x)->
    turnTo x
    step distanceTo x

goto match
grab()
goto pile
drop()

           
CodeMonkey過關學習筆記系列:71-85關 函數•“函數”農場 (FUNCTION FARM) 71 ~ 85•“函數”農場 (FUNCTION FARM) 71 ~ 85
第  關挑戰

接下來我們試試将小島 islands 和木筏 rafts 作為函數的參數來使用

goto = (t) ->
    turnTo t
    step distanceTo t
gotoAll = (stuff) ->
    for s in stuff
        goto s

gotoAll islands
grab()
gotoAll rafts
drop()

           
CodeMonkey過關學習筆記系列:71-85關 函數•“函數”農場 (FUNCTION FARM) 71 ~ 85•“函數”農場 (FUNCTION FARM) 71 ~ 85
第  關挑戰

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 
           
CodeMonkey過關學習筆記系列:71-85關 函數•“函數”農場 (FUNCTION FARM) 71 ~ 85•“函數”農場 (FUNCTION FARM) 71 ~ 85
第  關挑戰

我們也可以用數字 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[]

           

繼續閱讀