標籤:
小夢今天把2048的遊戲原始碼給大家分享一下,其實感覺這個重在演算法,UI很簡單,而且幾乎沒有用到什麼windows phone的API。小夢遇到最主要的問題就是對觸摸事件的處理,我剛開始想到的就是 Manipulation的系列事件,不過在測試的時候不知道為什麼我設定的ManipulationDelta,ManipulationStart,ManipulationCompleted 竟然都全無反應,我還以為WP8.1不支援了,於是把所有的觸摸事件試了個遍,到最後發現當把ManipulationMode設定為”All”的時候,終於有了反應,(當然,這個不一定要是ALL,設定為你支援的觸摸事件就可以,比如平移,旋轉。)想問一下:是不是必須要設定ManipulationMode然後Manipulation才有反應呢? 我測試的結果是必須要有。於是我便用了ManipulationStart和ManipulationCompleted和擷取觸摸開始和結束的座標,不過當完成後,發現遊戲雖然正常運行,但是反應超級慢,明顯延遲1秒左右。我開始以為是演算法有問題,太費時間了,於是看了好多其他人公開的演算法,發現複雜度都差不多。最後想到了在觸摸事件的引發順序中,ManipulationCompleted時間比較靠後,或許是這個原因。於是便想用ManipulationDelta事件試下,看看反應會不會快點,結果反應的確快了,只不過一次觸摸會觸發多次。解決方案是在使用它的Complete()方法,這個方法師完成觸摸而不引發慣性時間。
還有一個小問題就是布局產生16個小方格時候,我採用的是在Grid裡放置Button來實現。就是大家要注意button按鈕本身有預設屬性是有Margin,Padding,borad,以及狀態屬性和各個狀態之間的轉移動畫,要想實現2048中的方格效果,我們應該刪除或者修改這些屬性。還有Grid也有預設的Margin屬性,我們也得改掉。
至於2048的完整實現過程,改天再寫吧。
歡迎大家吐槽和建議,源碼還有許多改進的地方,小夢還會在修改的。
源碼獻上: windows phone 2048 (大家只要註冊一下就可以了,沒有其他限制。)
windows phone 2048 原始碼奉上