首頁(yè) 游戲

Minecraft指令手冊(cè)

第九十三章 邏輯門 上

Minecraft指令手冊(cè) 你好MC 1925 2020-03-28 15:16:22

  (此章節(jié)已于2022年7月27日重寫)

  我們都知道,execute的條件子命令可以是『條件成立即執(zhí)行』,也可以是『條件不成立才執(zhí)行』,但是testfor指令就不行了。

  假設(shè)現(xiàn)在我們要在基巖版實(shí)現(xiàn)一個(gè)功能:如果以執(zhí)行地點(diǎn)為中心,半徑2米內(nèi)沒(méi)有任何的鉆石掉落物,就在此處生成一個(gè)鉆石。

  至于怎樣生成一個(gè)鉆石,我們不用管(本章不討論這個(gè))?,F(xiàn)在的問(wèn)題是,怎樣使得半徑2米內(nèi)沒(méi)有任何鉆石掉落物時(shí)才會(huì)激活用來(lái)生成鉆石的命令方塊呢?

  答案很簡(jiǎn)單:制作一個(gè)非門。

  非門是什么?在了解非門之前,我們得先了解一個(gè)東西:邏輯電路。

  邏輯電路(Logic Circuit),簡(jiǎn)單來(lái)說(shuō),就是一個(gè)你往里面輸入一些信號(hào),它就會(huì)返回特定信號(hào)的電路。比如你往里面輸入一個(gè)1,它就給你返回0;往里面輸入一個(gè)0,它就給你返回1。

  最基本的邏輯電路被稱之為邏輯門(Logic Gate)。邏輯門其實(shí)并不是指一個(gè)門,它只是一個(gè)很簡(jiǎn)單的紅石電路而已。邏輯門有很多種,每種邏輯門都擁有不同的作用。這一章,我們就來(lái)了解一些基本的邏輯門。

  非門(NOT Gate),又稱之為『反相器』,是一種會(huì)反轉(zhuǎn)輸入信號(hào)的邏輯門。它的結(jié)構(gòu)很簡(jiǎn)單,如下:

  ?█?(插圖93-1)

  ?······未激活的拉桿(輸入)

  █······任意完整方塊

  ?······開啟的紅石火把(輸出)

  為了方便,我們暫且把拉桿?這邊的輸入,叫做R,紅石火把?這邊的輸出,叫做C。拉桿按下,R=1,否則R=0。紅石火把開啟,C=1,否則C=0。

  現(xiàn)在的狀態(tài)是拉桿沒(méi)有拉下,紅石火把開啟,也就是:

  R=0 C=1

  讓我們改變一下拉桿的狀態(tài),拉下欄桿,然后你就會(huì)發(fā)現(xiàn):

  〇█

  〇······R拉下的拉桿

  ······C關(guān)閉的紅石火把

  R=1 C=0

  整理一下,我們就會(huì)發(fā)現(xiàn),當(dāng)我們給非門輸入一個(gè)信號(hào)時(shí),非門會(huì)把這個(gè)信號(hào)反轉(zhuǎn)。體現(xiàn)在游戲中,就是你拉下拉桿,反倒關(guān)閉了紅石火把;不拉下拉桿,反倒開啟了紅石火把。

  說(shuō)了這么多,那么這東西對(duì)我們有何幫助?

  我們可以把『強(qiáng)度等級(jí)大于0的紅石信號(hào)』視作1,『強(qiáng)度等級(jí)為0的紅石信號(hào)』視為0。testfor指令執(zhí)行成功后返回的執(zhí)行成功次數(shù)總會(huì)是一個(gè)大于0的值,紅石比較器轉(zhuǎn)化后的強(qiáng)度等級(jí)也肯定大于0,也就是輸出1。反之,testfor執(zhí)行失敗也就是輸出0。看到這個(gè)1、0,你想到了什么?

  二進(jìn)制?

  非門吶!反轉(zhuǎn)信號(hào)啊!我們只需要在輸出后面接上一個(gè)非門反轉(zhuǎn)一下信號(hào),不就可以實(shí)現(xiàn)『testfor執(zhí)行成功輸出0,失敗輸出1』了嗎?讓我們來(lái)試一試:

  ?□┠█??(插圖93-2)

  □······重復(fù)型命令方塊(testfor @e[r=2,name=鉆石,type=item])\\檢測(cè)半徑二米內(nèi)是否有鉆石掉落物\\

  ┠······R朝向東的紅石比較器(比較模式)

  ?······C開啟的紅石火把

  拉下拉桿,命令方塊開始執(zhí)行,但由于周圍并沒(méi)有鉆石,指令執(zhí)行失敗,紅石比較器沒(méi)有輸出信號(hào),導(dǎo)致R輸入一直為0,C輸出自然就一直反轉(zhuǎn)成1,紅石火把便一直亮著。

  讓我們?cè)谂赃吶右活w鉆石看看:

  ?〇□┠█(插圖93-3)

  你會(huì)發(fā)現(xiàn)紅石火把熄滅了。

  這是為什么?因?yàn)槊罘綁K檢測(cè)到了鉆石,成功次數(shù)大于0,紅石比較器將成功次數(shù)轉(zhuǎn)化為紅石信號(hào)后強(qiáng)度也就不等于0,同時(shí)轉(zhuǎn)化后的紅石信號(hào)也被輸入到了非門中,也就是非門的R=1。紅石火把接受到紅石信號(hào)后就進(jìn)入關(guān)閉狀態(tài),也就是非門的C=0。這樣子,我們就成功地將testfor指令的執(zhí)行結(jié)果反轉(zhuǎn),使得接下來(lái)的操作能夠加以進(jìn)行。

  下面是完整版的『鉆石生成裝置』:

  ?〇A→?┠█!B→C→D→(插圖93-4和93-5)

  圖例

  〇······拉下的拉桿

  A→······循環(huán)型命令方塊,寫有『testfor @e[r=2,name=鉆石,type=item]』

  ┠?······紅石比較器

  █······任意完整方塊

  !······紅石火把(可能是亮也可能是不亮,故這邊用感嘆號(hào))

  B→······脈沖型命令方塊,寫有『summon armor_stand diamond 84.47 -60.00 -91.30』

  C→······連鎖型命令方塊,寫有『replaceitem entity @e[name=diamond,type=armor_stand] slot.weapon.mainhand 0 diamond』

  D→······連鎖型命令方塊,寫有『kill @e[type=armor_stand,name=diamond]』

  整個(gè)裝置的運(yùn)行流程如下:

  如果半徑2米內(nèi)有鉆石,就

  →啥也不干

  否則,就

  →①生成一個(gè)盔甲架

  →②讓盔甲架拿著一顆鉆石

  →③然后殺死盔甲架,鉆石就掉落了

  非常簡(jiǎn)單是不是?這就是『非門』在指令中的主要用途。只不過(guò)隨著execute指令的升級(jí),非門也就慢慢地在指令圈中步入了歷史。

  ......

  所以邏輯門就這一種?肯定不是。

  接下來(lái)我會(huì)快速介紹其他的一些門,這些門由于在指令中的使用頻率會(huì)比非門少很多,我們就不詳細(xì)講解。如果你對(duì)紅石感興趣,我記得TIS(Trinity Union,中國(guó)最厲害的生電服務(wù)器,你應(yīng)該有聽說(shuō)過(guò))他們的B站賬號(hào)好像有在做紅石教程,還有明月莊主好像也有教程。

  與門(AND Gate),翻譯成中文就是『當(dāng).....和.....都成立時(shí),才會(huì).......』。也就是說(shuō),與門是用來(lái)判斷兩個(gè)或兩個(gè)以上的條件,當(dāng)這些條件都成立時(shí),輸出C才會(huì)等于1。在編程語(yǔ)言中,與門也就是邏輯運(yùn)算中的『且』,符號(hào)常常使用『&』或『&&』。

  在Minecraft中,與門有N多種做法,這邊就列出一個(gè)最簡(jiǎn)單的一種:

  ?◆⊕(這里的拉桿為R1)

  空┊!┈(插圖93-6)

  ??◆⊕(這里的拉桿為R2)

  ┊······紅石線,在這邊紅石線下面要有任意完整方塊,使得它和旁邊兩個(gè)紅石火把齊平

  ?⊕······一個(gè)完整方塊上面插著紅石火把的結(jié)構(gòu)

 ??!······C輸出用紅石火把

  ┈······紅石線

  ?◆······R輸入用拉桿

  空······空氣,沒(méi)有任何東西

  與門有如下的特性:

  當(dāng)R1=0 R2=0時(shí) C=0

  當(dāng)R1=1 R2=0時(shí) C=0

  當(dāng)R1=0 R2=1時(shí) C=0

  當(dāng)R1=1 R2=1時(shí) C=1

  也就是說(shuō),與門要全部輸入都為1時(shí),才會(huì)輸出1。也就是要所有條件都為真(true)時(shí),才會(huì)返回真(true)。

  或門(OR Gate),翻譯成中文就是『當(dāng)......或......中有一個(gè)成立時(shí),就......』。也就是說(shuō),或門同樣也是用來(lái)判斷兩個(gè)或兩個(gè)以上的條件。只不過(guò)和與門不一樣的是,或門只需要部分條件成立就可以返回真,也就是輸出C=1。在編程中,或門也就是邏輯運(yùn)算中的『或』,符號(hào)常常用『|』或『||』來(lái)表示。

  或門也有N多種做法,這邊也是用最簡(jiǎn)單的一種:

  ◆┊(這里的拉桿為R1)

  空┊┈(插圖93-7)

  ◆┊(這里的拉桿為R2)

  ┊······紅石線

  ┈······C輸出紅石線

  ◆······R輸入用拉桿

  空······空氣,沒(méi)有任何東西

  或門有如下的特性:

  當(dāng)R1=0 R2=0時(shí) C=0

  當(dāng)R1=1 R2=0時(shí) C=1

  當(dāng)R1=0 R2=1時(shí) C=1

  當(dāng)R1=1 R2=1時(shí) C=1

  也就是說(shuō),或門只要部分輸入為1時(shí),就會(huì)輸出1。也就是當(dāng)部分條件為真(true)時(shí),就會(huì)返回真(true)。

  這就是本章的全部?jī)?nèi)容,你會(huì)發(fā)現(xiàn)其實(shí)還是蠻簡(jiǎn)單的。如果你看不懂,那這邊推薦你去找?guī)讉€(gè)紅石教程,本書講紅石確實(shí)是有點(diǎn)......比較不適合。

按 “鍵盤左鍵←” 返回上一章  按 “鍵盤右鍵→” 進(jìn)入下一章  按 “空格鍵” 向下滾動(dòng)
目錄
目錄
設(shè)置
設(shè)置
書架
加入書架
書頁(yè)
返回書頁(yè)
指南