我們之前學(xué)習(xí)了變量“手疲回憶一下變量绅这,我們想到它是變化的,可以從1變成2在辆,也可以從1變成0证薇,它是一個(gè)數(shù)值,那還有其他的變量嗎匆篓?這一節(jié)浑度,我們就開始學(xué)習(xí)類型,它可以解答你的疑問鸦概。
讓我來到第一個(gè)類型的關(guān)卡箩张,關(guān)閉傳送門。
在游戲開始的時(shí)候,傳送門是打開的先慷。就像這樣子一樣饮笛。
如果我們讓角色直接走過去,傳送門就把我們送到一座小磚塊上了论熙,那怎么樣才能把傳送門關(guān)上呢福青?設(shè)想一下,傳送門是一個(gè)房間的門脓诡,這個(gè)門的狀態(tài)有兩種:
門--打開
門--關(guān)閉
是不是无午,那么我們對(duì)傳送門可否給它的狀態(tài)進(jìn)行設(shè)定?
傳送門.打開()
傳送門.關(guān)門()
是的祝谚,系統(tǒng)給我們了傳送門的狀態(tài)的設(shè)定代碼宪迟。就是這句:
greenPortal.isActive =false
false代表“否”,true代表“是”踊跟。
greenPortal.isActive =false ?//代表傳送門是關(guān)閉的踩验。
greenPortal.isActive =ture ? //代表傳送門是打開的。
我們把過關(guān)的要求商玫,放在這里:
學(xué)會(huì)了,傳送門狀態(tài)的變更方法牡借,我們可以進(jìn)行下面的工作了拳昌。寫代碼。
代碼如下:
greenPortal.isActive =false
var MoveNum = 0
while MoveNum < 30 {
? ? moveForward()
? ? MoveNum +=1
? ? if isBlocked && isBlockedLeft && isBlockedRight {
? ? ? ? turnLeft()
? ? ? ? turnLeft()
? ? }
? ? if isOnClosedSwitch {
? ? ? ? toggleSwitch()
? ? }
? ? if MoveNum %6==3{
? ? ? ? turnLeft()
? ? }
}
在這里钠龙,我們首先就改變了傳送門的狀態(tài)炬藤,然后創(chuàng)造了一個(gè)變量,讓變量用于標(biāo)準(zhǔn)移動(dòng)的次數(shù)碴里。然后通過while循環(huán)沈矿,去判斷走路的方向和動(dòng)作操作。
MoveNum %6==3
這一句是用來判斷角色是否回到十字路口的中心咬腋,“%6”表示除以六羹膳,是個(gè)除法的表示形式。因?yàn)樵谶@個(gè)地圖里根竿,每走一個(gè)路口來回經(jīng)過的磚塊數(shù)量是6陵像,在這個(gè)地圖上是不變的。所以寇壳,我們偷一下懶醒颖。等于3,是因?yàn)榭茄祝懊娼巧叩街行呐⑶福呀?jīng)經(jīng)過了三塊磚。
執(zhí)行結(jié)果如下:
我們改變的傳送門的狀態(tài),叫做屬性腰耙。屬性的狀態(tài)可以改變的話榛丢,也是一種變量。
想想沟优,還有什么其他的方法可以讓角色自己走遍十字路的磚塊涕滋。