CyberPi 文字選單程式

一個比較實用的應用程式通常有許多的功能可以選擇,而要選擇這些功能的話,透過文字式的選單是其中一個方法,然而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]))

以下是此程式執行時的示範:

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *