一個比較實用的應用程式通常有許多的功能可以選擇,而要選擇這些功能的話,透過文字式的選單是其中一個方法,然而CyberPi的輸入介面只有一個搖桿和2個按鈕,並沒有數字鍵可以選擇,因此在這篇文章中,就來教同學們如何利用搖桿和按鈕來製作選單。
在這個例子中,我們使用的是事件導向的程式設計方式,所以一開始除了匯入cyberpi之外,也需要import event。選單的每一個項目先把它放到items串列中,並設定一開始的指標變數index=0,程式如下所示:
import cyberpi as cp
import event
items = [
'漁村文化',
'食魚達人',
'景點觀光',
'地方小吃']
index = 0
當CyberPi開始啟動的時候,需要先清除一下顯示幕,並顯示使用說明,程式碼如下:
@event.start
def on_start():
cp.display.show_label("請使用搖桿選擇", 16, "center", "center")
在這個應用中,我們的情境是當使用上把搖桿往上推時,就把選單的項目向上移動,一直到最上面一個就停下來。index=0表示第0個項目,index=1表示第1個項目,因此,我們只要在收到搖桿向上推的事件時,需要把index變數減1,但是如果減完之後index小於0的話,則需要把index調整回0。index調整完畢之後,即可顯示items[index]中的內容,程式如下:
@event.is_press("up")
def on_menu_up():
global index
index = index - 1
if index < 0:
index = 0
cp.display.show_label(items[index], 24, "center", "center")
類似的情況,如果是搖桿往下推的話,則要把index加1,而且要確保加的數值不會超出items長度的最後一個索引數值。程式碼如下:
@event.is_press("down")
def on_menu_down():
global index
index = index + 1
if index >= len(items) :
index = len(items) - 1
cp.display.show_label(items[index], 24, "center", "center")
當使用者按下按鈕A時,要把選用的資料顯示出來,同時為了要強化選擇完成的效果,我們在這裡也讓它發出一個音效,程式如下:
@event.is_press("a")
def on_menu_choice():
global index
cp.audio.play("yeah")
cp.display.clear()
cp.console.println("你選擇了")
cp.console.println("【{}】".format(items[index]))
以下是此程式執行時的示範: