2015年10月10日 星期六

開發Multiplication Chessboard紀錄

中秋節連假前的星期五(2015.9.25),我們利用下午沒有課務的時段,在圖書館辦了一場校內的研習:「桌遊在教學上的運用」,參加的就是幾位平時對於桌遊很有興趣的老師,像是内人(Spring Wu)和女兒(Irene Zheng)就是桌遊長期以來的支持者。所以在這小小的研習中,老婆帶了許多之前買的桌遊和其他老師及小朋友分享,也分享了最近在溫老師備課party中看到的資訊:有位邱老師分享了九九乘法盤遊戲的作法,大人和小孩都覺得效果很好。
剛好本人會寫點小程式,心想可以把這「寓教於樂」的想法化成程式,或二人玩或投影,若有電子白板的教室,豈不美事一件,就立刻動手…
※寫程式對自己也是很有幫助的,它可以促進腦細胞快速運動,讓一個人即使夜深了也不會累…哈哈!是隔天才會累
第一件事就是看著人家這張設計,想一下人家建議的玩法
分析原本構思者的想法很重要,它將成為程式最基本的樣子,這方面我算是還可以啦!過去也累積了許多經驗。

一開始先把想像中的畫面做出來
既為「程式」,程式碼才是最重要的,接下來就是思考畫面上的各種功能要如何佈置及靠程式碼去實現,這過程中充滿了腦海中對於未來運作程序的順序模擬,事件及動作,如果怎樣就怎樣…英文就是event→function→if xxx then else xxx,我寫程式的速度算是蠻快的(如果慢下來放著,就會不想寫了),很快地我就完成了基本樣式(約莫一二天中的空餘時間),也不能全部時間都拿來做這事,還是要上課、打球、家務事、也得睡覺…
第一階段最費腦袋的應該就是如何判斷所有三連環的情形,一想之下,情形真多…如何把它化為公式判斷是很重要的,像下方這樣:
function chk_line(user,point)
  if user == "user_green" then
    if String.Find(txt_user_green, "|" .. n-6 .. "|", 1, false) ~= -1 and String.Find(txt_user_green, "|" .. n+6 .."|", 1, false) ~= -1 then
      victory = true;
    end
  elseif user == "user_red" then
    if String.Find(txt_user_red, "|" .. n-6 .. "|", 1, false) ~= -1 and String.Find(txt_user_red, "|" .. n+6 .."|", 1, false) ~= -1 then
      victory = true;
    end
end
這大概花了我最多的時間來思考吧!
還有我也希望程式能吸引小朋友,剛好我家女兒很喜歡「Angry Birds」,所以裡頭如果能用Angry Birds圖案就不錯,但會不會有版權問題呢?上網找了一下,Angry Birds Playing CardDeck and Vector Characters,很棒的外國作者的作品,以創用CC 3.0釋出,看來應該可以使用

在程式中我也用了女兒(Irene Zheng)的手繪作品,寫程式的人特權就是愛用什麼素材就用什麼素材,可以完全客製化
玟琳喜歡畫Angry Birds(其中一張)
這個夠活化腦細胞的
經過一番努力,我完成了所謂的Beta版,迫不及待地請老婆女兒當首席測試員,看看有沒有什麼問題,果然就有問題,竟然出現了該獲勝,程式卻沒反應的情形,當然就是有Bug啦!
這程式是耍呆嗎?
這其實很平常啦!「哪有人吃燒誁餅不掉芝麻的!」寫程式哪有沒bug的,但這可又要想一下了,快速地掃視一下程式碼,果然原本的想法裡有漏洞,通常我會做筆記把情形寫下
這東西應該只有我自己看得懂
很幸運地!很快看出問題出在哪兒,就可以快速修正它,所有的邏輯思考到此應算完成了,接下來我就想為程式加些原本沒有的想法,免得遊戲太陽春了,所以我加入了進階版亂數盤面的功能和限時的功能,以及讓玩家能選擇代表圖的功能。
跑起來的畫面
先這樣吧!就Release了,這程式我放在http://163.26.23.3/app/multiplication_chessboard/,讓有興趣的同好們一起玩玩看,過二天有空,我還會繼續Update它,最終我想讓它和「兒童學習網」連接,取得學生的資訊,並可以上傳對戰歷程。
以下是一些程式中用到的畫面:都是用女兒畫的圖來做的



這是我個人最喜歡的咖菲貓

沒有留言: