今天我們進(jìn)入“布爾邏輯”歌劇世界的后8關(guān)。
這次的攻略大約1200字,閱讀時間大約10分鐘。
我們可以簡要回顧一下關(guān)于邏輯的基礎(chǔ)知識。
基礎(chǔ)知識
布爾邏輯里有三個邏輯符號:或,且,非。如果有A,B兩個判斷結(jié)果,A,B是yes或no。
如果“A或B”是yes,那么A,B當(dāng)中至少有一個是yes;
如果“A且B”是yes,那么A,B都是yes;
如果“非A”是yes,那么A是no。
下面進(jìn)入闖關(guān)游戲吧。
第128關(guān)

在這一關(guān)里,我們要使用and這個邏輯指令,來判斷兩個或者多個條件是否同時滿足。

比如,上圖中的老虎和熊同時睡覺的時候,我們的猴子和山羊才能動起來。
我們來看看已給出的代碼:

在第2,6行里,我們需要加入until ... wait ... 的代碼,在代碼里需要用到and來判斷老虎和熊是否同時睡覺去了。
修改后的代碼如下:

點擊運(yùn)行看效果!


第129關(guān)

在這一關(guān)里,我們可以用or這個邏輯指令,判斷老虎要么睡覺,要么玩耍去了。只要老虎不在虎視眈眈地把關(guān),猴子就可以趁機(jī)去吃香蕉。

比如在上圖中,老虎旁邊有一個小球,那么老虎就多了一個分心的可能,要么睡覺,要么玩球。
不管如何,這時候小猴子都可以去吃香蕉。
代碼如下:

顯然,我們需要加入讓小猴子去吃香蕉的代碼。如下:

點擊運(yùn)行看效果!


第130關(guān)

這一關(guān)和上一關(guān)一樣。

看右側(cè)的代碼區(qū)域,如下:

我們不需要第4-7行的代碼,可以改為如下的代碼:

點擊運(yùn)行看效果!


第131關(guān)


這一關(guān)和前兩關(guān)的區(qū)別是,這一關(guān)多了一只熊。
我們一定要明確and和or的含義:
當(dāng)老虎和熊同時分心的時候,小猴子才能去吃香蕉,這里需要用到and;
當(dāng)老虎(熊)睡覺或者玩球的會后,小猴子都可以去吃香蕉,這里需要用到or。
看右側(cè)的代碼區(qū)域,如下:

我們需要在第6行加入第1,2行的代碼,代碼如下:

點擊運(yùn)行看效果!


第132關(guān)


這一關(guān)和前幾關(guān)的區(qū)別在于,我們需要讓山羊去吃香蕉(而小猴子只能在旁邊看著)。
已給出的代碼如下:

第2行的代碼是錯誤的,需要考慮熊是否睡覺或者玩球的判斷語句,如下:

點擊運(yùn)行看效果!


第133關(guān)


這一關(guān)是融合了前4關(guān)的情況,對于多個香蕉,可以采用for循環(huán)的方式,這在“for”循環(huán)王國里已經(jīng)介紹過了。
已給出的代碼如下:

在第2行,我們需要加入兩行代碼,在老虎睡覺或者玩球之前,小山羊和小猴子都需要等待。
代碼如下:

點擊運(yùn)行看效果!


第134關(guān)


這一關(guān)也是一樣,小猴子需要區(qū)吃兩個香蕉,在吃每一個香蕉之前,小猴子都需要等待熊去睡覺了或者去玩球了。
右側(cè)給出的代碼如下,注意代碼循環(huán)的對象是熊,而不是香蕉:

我們需要在第2行里,加入熊b是否睡覺或者玩耍的代碼:

點擊運(yùn)行看效果!


第135關(guān)


這一關(guān)里,我們需要讓小猴子和小山羊都分別吃到兩個香蕉。而在他們吃香蕉前,需要在自己和香蕉之間的老虎在睡覺或者玩耍。
右側(cè)給出的代碼如下:

我們可以把等待老虎的過程寫成一個函數(shù),waitFor。
這樣,我們就很方便地重復(fù)使用waitFor函數(shù)來讓猴子,山羊等待某一只老虎睡覺或者玩耍了。
修改后的代碼如下,注意我們還對猴子和山羊進(jìn)行了循環(huán)處理,用變量stepper來代替monkey或goat中的某一個。

點擊運(yùn)行看效果!


到目前為止,“邏輯”歌劇這16關(guān)都已經(jīng)被我們攻破了。
下期預(yù)告
下一次教程,我們會一起來闖過“不是”這一組關(guān)卡,其實也是邏輯指令中的“非”。
