2016年3月3日 星期四

外行人寫手機遊戲Part.5 - App Inventor 2

翻了一下,距離上一篇 自己寫手機遊戲 Part.4 - 測驗題庫 整整經過5年
5年後Windows Phone系統已經完全變成時代的眼淚了,科技業真是殘酷(笑
到現在捫心自問寫程式算是我的一項技能嗎?很殘酷的並不是
我向來就只是把我想做的東拼西湊、用錯誤嘗試法弄出自己滿意的東西出來
比較深入的像是網路通訊協定、資料庫、逆向解析、硬體韌體這些我通通沒碰

07年某個機會下到大同CAD/CAM中心(後來改制工程資訊、再來收掉)去上了一天PRO/E的課 
那次很慘,前一天趕同事要的東西弄到半夜4點,然後早上7點的課,最慘的是那時候PRO/E我還不熟
想說就算一天也好,看能不能去學到一點操作技巧,結果客官您知道嗎?老師幾乎不講課就算了
整班的人大家都在搞PRO/E主程式的逆向解析,研究執行哪個功能時呼叫哪幾支DLL等等
跟我原先預期的課程內容完全兩回事啊(笑
大菜鳥的我大起膽子來問了一下為啥搞這個,得到的答案是售服時軟體運作出錯才有能力處理
順便被嘲笑了一下什麼都不會還敢跑來這上課,是哪個公司的FAE啊 XDDDDD

如果真有這個需要,大可跟原廠要技術文件,反正只是哪個功能走哪個DLL這樣而已
更不要說這樣接近是反組譯的作法,有沒有違反契約或使用者協定了

一不小心又講古了,最近還有另外一篇往事想寫,不過不算太久大概3年前而已
扯太遠了趕快把主題拉回來(笑


先前有興趣先看看的時候也去下了eclipse,JAVA語法跟C#也蠻相近的想說應該還好
但後來感覺eclipse的IDE環境實在太不友善,除了要先搞定一堆JRE、JDK、ADT、SDK、AVD...
建立一個專案一開始就直接開了一堆resource,萬一關掉還得要去翻半天
而且就算關閉專案還是會駐留在任務欄,專心寫程式時這個任務欄根本就只是在浪費畫面
再者連個基本的介面原件庫的排列都雜亂不堪、忽大忽小
也許這種直接拖拉介面原件的作法,專業的JAVA設計師是很不齒的吧,還是根本就沒有人用
在網路上看到不少文章,就連個buttom都是直接coding的,拉原件來放根本就菜逼巴 XDDD
至於後來的android studio在重點上來說個人感覺就是加了intellisense(誤),其餘不變(笑

回過頭來開始談App Inventor,第1版(現在的Classic)最大的敗筆在於不接受中文
這裡的不接受中文並不是像下圖中使用中文變數,而是包括各種title、label、text等都不吃
我知道給專業的看會被笑「用中文變數你不怕你程式怎麼死的都不知道嗎」(笑
之前寫C#的時候還會參照匈牙利命名法,現在什麼都懶了,能跑有順不出錯就好了我又不賣錢 XDDD

第一次看到App Inventor我的第一直覺是「這玩意有點像NI的labview...」
labview我想基本的理念就是給平時不在寫程式的電子/電機工程師做系統開發用的
而App Inventor比較起來沒那麼複雜,也是同樣把程式碼用block包裝起來的圖形化開發架構

現在的App Inventor 2還在追加各種功能,例如上圖中的試驗性質FirebaseDB(2016年3月)
基本上寫程式就只有三個畫面,一開始選擇專案、中間的外觀編排、最後的程式設計三個
而且畫面都很簡潔,除了程式設計的工作面版部分以外,正好跟java IDE成反比 XD

建構環境簡單,Classic還要JRE,2連JRE都不用,只要安裝主程式再網路打開Chrome打開就能用
我並沒有架單機版serv所以需要開網路,不過瀏覽器的部分在Firefox底下跟死掉沒兩樣
其他瀏覽器沒試過,偏偏Chrome肥的要命,WIN7 32bit環境下軟體一開多三不五時就當掉
測試環境一樣是有提供USB實機跟模擬器,不過內建模擬器每次RUN都要重新載入這點太腦殘


現在就要來開始缺點大點名了 XD
首先是這大概是我第一個遇到沒有undo/redo的編輯程式,不管是外觀或程式部分都不能undo
原件誤刪連帶程式方塊也一併全刪,沒救,只能自己重拉或備份還原(笑
2018更新:目前有undo功能了,不過只限一次

其次是外觀的工作面板尺寸無法自訂,雖然說原件的大小可以依比例設定很好用
但預覽面板跟模擬器/實機所顯示出來的差很多,例如上圖8個按鈕預覽要翻頁,在模擬器與實機都是剛好一頁;

此外原件的部分某些也很隨便,例如文字的對齊方式就只有左中右、沒有上中下
還有按鈕的底色改變的話,邊框會消失,就把你整個區域都填入顏色這樣了事
所以這裡不像以前做按鍵背景顏色改變,而是對答案時按鍵文字顏色改變,原先背景變色看起來比較明顯;

就程式設計的部分,首先是基本上各種Block其實底下都是包好的程式碼,實際運行結果還是要自己試過才知道
就以這次我碰上的csv to list來說,之前在C#我是自己用while下去割出陣列來,他有提供這功能是很方便
但人家寫好的東西你就只能照別人的規矩做,csv檔就是只能逗點跳列換行跳行
我原先的題庫檔夾了太多空換行,RUN起來就只能不斷以莫名其妙的錯誤死給你看 XD

這裡再延伸到另一個問題 - 除錯,整個App Inventor的除錯功能就只有上圖左下角的紅黃三角符號
幾乎大多數的組譯程式都會有run by step,就他沒有,出錯的時候只有安桌的系統錯誤提示
如果程式全寫完了才要來除錯那會讓人很想死
安全的作法應該是先把程式功能拆解成幾個部分,然後在分開寫分別測試,最後再組合;

但這裡又關連到一個問題,雖然現在增加一個背包功能,能把同一專案不同畫面的Block複製貼上
但不同專案或別人寫好的範例,無解,你只能手動自己照著再拉一遍進自己的專案
2018更新:背包功能可以跨專案使用

另外我想會令傳統設計師吐血的最大缺點,就是他的程式區塊排列顯示問題
雖然說他有提供橫向/縱向/同類型排列功能,但怎麼排就是不會排成你想要的順序(笑
其實只要提供個區塊間自動對齊功能就會好很多,偏偏他給的自動排列間距又過大
再來上圖最大的特徵:一點點的程式碼一個畫面塞不下,傳統的coding最多只要翻翻頁
但App Inventor只能用滑鼠拉,沒有如labview提供Zoom In/Out功能
2018更新增加了有段式Zoom In/Out功能,自動排列功能有修改

上面這些問題其實都還好,2016年3月還是問題,說不定以後開發團隊會追加或修正
但我想有個問題應該是無解,那就是官方線上說明,實在是簡陋到不行
為啥說這問題無解,這軟體開發團隊是麻省理工學院
對他們來說我想已經是這麼簡單的程式設計方式了,哪需要什麼說明範例,自己try一下不就得了(笑


上圖為模擬器執行時所顯示的程式主畫面,與之前在WM底下寫的不同,做了一個launcher
最主要就是因為上面提到的,同一專案內才能複製貼上程式區塊,這樣不同科目只要複製貼上再修改變數名稱
至於介面美術什麼的就別談了,不是說用App Inventor就做不出來,而是我的重點不在那裡(ry

雖然上面點了這麼多缺點,但我最後還是用他來寫的原因當然還是快速上手
不用去理解什麼JAVA、類別、專案、資源、套件、平台版本...etc
那些都可以略過,想做什麼直接就先做介面再拉程式最後打包就完成了

某書的副教授作者在他每一本的序都寫到「用這個連小學生都會程式設計」,這種書我是一定不會推薦的
題庫這類程式目前一堆App Inventor教學書都有範例可以參考
而且這回台灣出版蠻爭氣的,不像之前eclipse有用的都是簡體書


與之前的題庫程式幾乎一模一樣的畫面,答對綠色答錯紅色顯示,只是按鈕背景改為按鈕文字顏色
50題/25題計分,同樣會統計最近10次的平均得分,而且不光是選擇題型,連申論題型也可以做
只不過申論題型怎麼做這裡就保密了,雖然說題庫程式不是我最早做,在我之前就有個趙娟題庫
某出版社也提供過線上測驗題庫,還要買書登序號才能用半年,結果登進去...題目兩三隻
而最近幾年在搜尋引擎排前幾名的某線上測驗,好奇也去逛了一下
一直叫人要註冊,雖然光註冊是免費但很煩;功能非常多,然後使用者看起來也非常多,不愧是估狗前位網站
VIP一個月100塊算起來不貴,就題目的收集量與維護來說,這個價格我覺得還算合理
網站改版也相當頻繁,不過槽點不少啊...

之前印象中玩過一次,做完一份考題後看到這份考卷有幾十個人答對率都100%,然後點人進去看
幾乎每一科都拿100分,先不要說作弊什麼那沒有意義,但這會讓人喪失戰意的吧,我從來沒拿過100分啊
現在追加每題有幾個人選ABCD這樣,但是對答案的時候發現大家都選對只有我選錯,這也挺挫折的
幸好實際國考沒有這麼多人拿滿分,不然我早就放棄了吧 XDDDDD

同樣的讀書會功能,怎麼說呢很複雜...學生時代也許這套管用,國考等於同科目都是競爭對手
為達目的可以不擇手段的我除了想辦法從別人身上挖到啥訣竅以外,就只有欺騙與扯後腿可幹而已了...
另外大多數的留言下載都要綁FB,而FB我4年前就砍掉了,現在沒FB帳號就不用看了
我也不是不瞭解,營運網站要賺錢維生,與補習班/出版社合作這很正常,但搞團購是?

自己的題庫都是離線版不需依賴網路,除了出題速度也比較快以外,掛在網路上就是容易分心
附帶一提會把程式寫成線上版只有兩個目的,一是需彙整多使用者資料、二是防盜版抄襲
題外話又要扯遠,之前有遇上某資訊公司告某出版社請求給付報酬,因為幫他們寫好程式結果尾款不付
出版社還是負責人自己來開庭,說對方原本專案會建置12人團隊結果就只有5個人在搞,這當然是推託之詞
但另一點是指稱委託對方寫了安桌/蘋果雙平台APP,結果在蘋果上開啟他們的程式會有2秒鐘的黑畫面
要求他們改善但是沒下文,所以拒付尾款
資訊公司則稱該APP的所有功能均已完成,已依照合約完成驗收...於是兩邊都請員工出庭作證,好累啊 XD
因為法官沒有請兩方提出該APP出來勘驗,別說法官懂不懂程式設計,我們這只收光碟不收手機 XDDDD
所以我也沒拿到該APP,但外行人大概猜一下,如果不是資料處理出問題的話,應該就是網路延遲吧

又扯遠了回題,對某線上測驗並沒有批評的意思,只不過評估後覺得對我來說這不太合用而已
自己寫程式整理題庫也許照一般的看法「為了吃牛肉去養一頭牛」,是種浪費時間的作法
但我覺得自己量身訂製程式、整理考題,這兩件事對於準備國考來說,決不是浪費時間
真要說是在浪費時間應該就是正在寫Blog的現在吧,根本就只是在炫耀自己的自我成就感而已(笑


上面為實機執行照片,我用的是小米平板1代,2015年底才買的2014年機種
再之前是有一台4年前的歌美G2,雖然還能用但是原先買來就有背押螢幕水波紋跟觸控貼合漏光問題
這幾年這些二線廠也收掉很多了,所以這次挑的是目標是品牌貨
但Ipad很不情願的第一就先淘汰了,mini的話也不貴,但是自己要寫程式還得要先買一台MAC...
國產雙A則是很不爭氣,Acer的機種規格不怎麼亮眼、Asus則是同樣的規格再加上高返修率
日韓雙S...Sony同樣的規格硬是要比人貴上一截、Samsung平價機種當時是有考慮,就很普通...
聯想華為則是內建一堆垃圾所以不怎麼好,但沒想到我最後還是中招,中國品牌無可避免
其實原先理想的是Nexus 7,但2015年已經都停產沒貨了

最後會挑上小米,除了家裡目前就2支小米手機,評價還不錯以外
以台幣7K的價位有搭配2K解析度的螢幕也就只有這台了,NVIDIA的CPU+GPU架構效率也很高
謠傳這顆CPU的軟體相容度很低但實際上還好,至少PSO2es在上面正常能跑,還沒遇過真不能跑的APP
此外電池續航力我也還滿意,就算跑PSO2es也有超過8小時的續航力,幸好不是去買電池縮水的2代 XD

但除此之外軟體的部分就只能寫個慘字了,由於台版16G早就沒賣了,我買的是陸版64G
一開始是沒有Google Play的!得自己找解決方案,自己安裝各個系統服務
還好我裝的早!由於小米經常強制更新,目前的版本已經無法直接安裝APK了!搞屁啊
內建一堆垃圾不說、盜版木馬一堆的小米商店不說,連USB連線的MMC儲存模式都拿掉
當然除錯模式也是沒有的,小米是把使用者都當笨蛋,還是真的想跟使用者對著幹啊?
如果只是買來玩玩的話還可以,看影片並不推薦,因為螢幕比例不是標準16:X,上下黑邊留很大
要做系統開發的話最好還是別挑這種加工過多的系統,綁手綁腳的
老實說國內網拍目前WIN10+Android兩用平板我也相當有興趣,不過又得當白老鼠還是下次再說吧。