簡單的方法,還有一些要改進的地方,但是可以用來瞭解基本的原理。
何老師上課使用
簡單的方法,還有一些要改進的地方,但是可以用來瞭解基本的原理。
我們使用了兩支不同的APP程式,但是它們共用同一個Firebase的資料庫。透過這個共用的網路資料庫,可以在不同的手機的APP上共用資料。其中一個Updater用來更新訊息,而當訊息一更新的時候,另一支手機上的APP即刻會偵測到訊息的變化,然後立即更新資料並發出語音提醒。
想要避免重複發牌的方法有非常多種,在這裡我們使用的是在隨機挑選了一張牌之後,就把該張牌從整幅牌列表中移除,既然被移除了,自然就不會再被隨機挑選程序挑中了。不過,要留意的是,第一張挑牌的時候是1到52,而第二次挑牌時要變成1到51,依此類推。
而要能夠確保操作可以順利進行,在迴圈的一開始還是初始化一個cards這個列表才行喔。
有了前一動作的整幅牌列表之後,接下來的工作就是透過一個迴圈從這帳紙牌中隨機挑選出其中一張,然後這樣的動作重複五次,就完成了五張牌的發牌動作,不過,還是有重複發牌的問題唷。
為了避免重複發牌,我們需要建立一個整體變數,用來儲存整副牌的內容,其實就是透過一個迴圈建立了52張牌自己的圖形檔案名稱,也就是1.jpg,2.jpg,一直到52.jpg啦。
接下來示範第一版的發牌程式,使用上一篇教學中介紹的任意組件功能,在沒有考慮到可能重複發牌的情況下完成所有五張牌的發牌動作。同學們可以先想想,為什麼這樣的程式會造成重複牌出現的可能呢?
在這裡我們要示範的是任意組件(Any component)功能的使用。首先要建立一個列表,把五個按鈕組件通通加進去,也就是讓按鈕成為列表的一部份。接著就可以利用迴圈的控制,再加上任意組件的功能,統一設定按鈕的寬度以及其它的內容。
第三個步驟是讓五張牌可以透過隨機的方式加以設定。在這裡示範的方法還沒有考慮到可能會有重複出牌的情形。所以,使用此方法完成了五張牌的設定之後,同學們可以多試著發牌幾次,看看五張之中有重複出牌的情形有多高。另外,在看下一支影片之前,你是否心裡已經有想法,知道大概可以解決此問題的方向?
第二個步驟,當然就是把程式的介面佈置好,也就是每一個組件都要各歸其位。一般來說,我們想像的撲克牌應該是使用圖像Image元件,但是為了要能夠和使用者互動,在這裡我們使用的是按鈕。別忘了,按鈕也可以把文字移除,改為顯示圖像。