樂高4位數密碼鎖完成型成功啦!

程式這種東西一旦鑽進去,就會上頭一段時間啊~以下為程式設計概念:

 1.增加PASSWORD變數模組為數列(陣列或一維矩陣),內有預設密碼1234。增加INPUT變數模組為數列,但為空數列。

2.迴圈內為不斷偵測四個觸碰感測器是否有被按下,如果1號感測器被按下,則將INPUT數列讀出,放進數列模組,並用附加數字模式寫入數字1,它會自行排到最前面的位元(地0位元),以此類推到2-4號感測器。以下為失敗解決經驗:



3.跳出這個偵測感測器是否被按下的迴圈條件為:INPUT數列的長度是否跟PASSWORD的長度一樣,亦即是否已經輸入四個密碼,一旦相同,就跳出迴圈。(將兩個變數數列讀出放進數列模組,選第四個長度就可以取得長度了。)

4.跳出迴圈後就要比對INPUT和PASSWORD的四個位元是否完全相同,帶樂高EV3無法直接比對,需用數列模組的索引模式一個一個位元取出來,再用是否相等的邏輯模組來比對,最後再用AND邏輯模組再比對是否四個位元都相等,這裡寫成了自訂模組,節省空間。

最後加入一個大大迴圈框住全部,如果最後比對結果不符,就回到最前頭,重新設定兩個變數初始直,再偵測按鈕,再比較兩個變數長度是否相同,再比對兩個變數四個位元是否相同.....


PS:再新增加一個字串變數WINDOWS,當一號觸碰感測器按下時,就讀出WINDOWS字串變數將他放進連結文字模組的第一個位置,然後在第二個位置寫入文字1,亦即不管現在WINDOWS字串變數儲存的文字為何,都把文字1皆在其後,例如:WINDOWS已經有存放文字2,接著就會把文字1接在其後,最後輸出文字21,把連接文字模組的輸出再傳給WINDOWS字串模組與螢幕顯示模組即可,以此類推。



留言

熱門文章