錢麗丹
摘 要: 以數(shù)獨游戲為切入點研究IOS平臺下的游戲開發(fā)技術。介紹了數(shù)獨游戲的起源與游戲規(guī)則,對系統(tǒng)進行功能模塊劃分,介紹了系統(tǒng)使用到的關鍵技術如Cocos2D游戲框架、舞蹈鏈算法等,給出了系統(tǒng)運行界面。該游戲可以在任何IOS移動終端上運行,界面美觀,性能穩(wěn)定。
關鍵詞: IOS; 數(shù)獨游戲; Cocos2D游戲框架; 舞蹈鏈算法
中圖分類號:TP311 文獻標志碼:A 文章編號:1006-8228(2016)04-58-03
Development of Sudoku game for IOS
Qian Lidan
(Department of Information & Technology, ZheJiang Economic & Trade Polytechnic, Hangzhou, Zhejiang 310018, China)
Abstract: Taking Sudoku game as an entry point, the game development technology on IOS platform is studied. The origin and the play rules of the game are introduced in this paper, the system function module is divided and some key technologies such as Cocos2D, Dancing Links algorithm etc. are introduced, and the system operation interface are given. The game can be run on any IOS mobile terminal, with beautiful interface and stable performance.
Key words: IOS; Sudoku game; Cocos2D game framework; Dancing Links algorithm
0 引言
伴隨著智能手機普及和4G網(wǎng)絡的發(fā)展,中國的手機游戲市場得到了迅猛發(fā)展,尤其近四年以來發(fā)展更為迅速。在2011年整個中國手機游戲手場收入不過62.4億元,但是在2015年則達到了416億[1]。2014年手機游戲銷售收入首次超越網(wǎng)頁游戲,手機游戲成為了網(wǎng)絡游戲的主力軍。
IOS作為主流的開發(fā)平臺,與Android相比,IOS平臺硬件統(tǒng)一,這使得程序開發(fā)人員需要考慮的兼容性問題變得相對容易,維護及修復成本也較低。IOS游戲開發(fā)收入是Android游戲開發(fā)收入的6倍,IOS已經(jīng)成為了手機游戲開發(fā)的首選平臺。本文以數(shù)獨游戲為切入點,研究IOS平臺下的游戲開發(fā)技術。
1 數(shù)獨游戲分析與設計
1.1 游戲介紹
數(shù)獨[2]最早起源于18世紀初瑞士數(shù)學家歐拉等人研究的拉丁方陣,經(jīng)歷了一系列的演變,從早期的“拉丁方塊”、“數(shù)字拼圖”到現(xiàn)在的“數(shù)獨”,游戲規(guī)則逐步確定。正式的數(shù)獨游戲最早出現(xiàn)在20世紀70年代的美國,后來逐漸被介紹到日本、英國、中國等,在全球范圍內確立了謎題領域的世界地位。
數(shù)獨盤面是個九宮,每一宮又分為九個小格,在這八十一格中給出一定的已知數(shù)字和解題條件,利用邏輯和推理,在其他的空格上填入1-9的數(shù)字,使1-9每個數(shù)字在每一行、每一列和每一宮中都只出現(xiàn)一次。這游戲全面考驗玩家觀察能力和推理能力,雖然玩法簡單,但數(shù)字排列方式卻千變萬化,使得數(shù)獨成為了訓練頭腦的絕佳方式。
1.2 系統(tǒng)功能模塊劃分
游戲共分為8個功能模塊:游戲主體模塊、解題器模塊、謎題自動生成器模塊、關卡編輯器模塊、游戲菜單模塊、關于游戲模塊、背景音效模塊和游戲分享模塊。系統(tǒng)功能模塊劃分如圖1所示。
[數(shù)獨游戲][謎題自動生成器][游戲主體][解題器][關于游戲][關卡編輯器][游戲菜單][游戲分享][背景音效]
圖1 系統(tǒng)功能模塊
在系統(tǒng)模塊劃分中,游戲主體模塊、解題器模塊、謎題自動生成器模塊、關卡編輯器模塊這四個模塊的設計相當重要。游戲主體模塊用于實現(xiàn)游戲界面的生成,接收用戶的輸入,并根據(jù)用戶輸入,通過調用解題器模塊,判斷用戶輸入的正誤;解題器模塊采用了無論在時間效率還是空間效率都有著明顯優(yōu)勢的舞蹈鏈算法實現(xiàn);謎題自動生成器模塊是為了使游戲更加生動有趣,系統(tǒng)已經(jīng)內置四個等級(初試身手、漸入佳境、龍?zhí)痘⒀?、巔峰時刻)共800套謎題,對于希望自定義游戲內容的用戶,可以通過謎題自動生成器模塊建立自己的謎題庫;關卡編輯器模塊使得用戶在完成低級別的謎題后,才可以繼續(xù)挑戰(zhàn)更高等級的謎題,關卡編輯器是基于HTML和javascript寫的網(wǎng)頁版工具;游戲菜單模塊在主菜單里提供了一系列常用的按鈕,方便用戶選擇相應的功能;關于游戲模塊為用戶提供了游戲說明,幫助用戶快速掌握游戲使用方法;為了在解題時增加樂趣,用戶可以選擇開啟游戲背景音效模塊;游戲分享模塊用于通過短信或郵件的方式向其他用戶分享該款游戲。
2 系統(tǒng)實現(xiàn)的關鍵技術
系統(tǒng)采用多種技術實現(xiàn)數(shù)獨游戲的各個功能模塊。其中,開發(fā)硬件環(huán)境為MacBook Pro,測試環(huán)境為iphone simulator,開發(fā)的軟件環(huán)境為Mac OS 10.11+Xcode 7.1+ Cocos2D-iphone,編程語言采用Objective-C,數(shù)據(jù)庫采用SQLite。在解題方面,采用了舞蹈鏈算法,解題效率極高。
2.1 Objective-C
系統(tǒng)開發(fā)采用Objective-C。Objective-C[3]是非常實用的編程語言,它是一個用C寫成的很小的運行庫,是一種擴充了C的面向對象的編程語言。Objective-C可以在支持GCC的系統(tǒng)上編譯并運行。利用Objective-C可以編寫如IOS操作系統(tǒng)、IOS應用程序等一系列程序。
Objective-C不支持多重繼承,且不支持運算符重載。Objective-C使用動態(tài)運行時類型(dynamicaly typed),所有的方法都是函數(shù)調用(包括系統(tǒng)調用),它的類庫比C++更容易操作,Objective-C在運行時可以允許根據(jù)字符串名字來訪問方法和類,還可以動態(tài)連接和添加類。
2.2 Cocos 2D開發(fā)框架
Cocos2D[4]是用于構建iPhone游戲的開源框架,是基于iPhone核心SDK之上架構而成,用于構建2D游戲、演示程序和其他圖形界面交互應用等。它可以讓程序員在創(chuàng)建自己的iPhone游戲時節(jié)省很多時間。它具有很多功能,比如sprite(精靈)扶持、非??岬膱D形效果、動畫效果、物理庫、音頻引擎等。
Cocos2D也擁有幾個主要版本,包括Cocos2D-
iPhone、Cocos2D-X。在系統(tǒng)開發(fā)過程中采用Cocos2D-iPhone版本的框架。雖然Cocos2D-X是一個跨平臺的框架,開發(fā)的應用程序可以適用于不同的平臺,但是在實際開發(fā)過程中,需要處理很多與平臺相關的問題,而Cocos2D-iPhone版本僅針對IOS平臺,以Objective-C為編程語言,和蘋果的硬件系統(tǒng)結合非常好,因此它是開發(fā)IOS游戲的不二選擇。
2.3 Xcode開發(fā)工具
Xcode[5]是運行在操作系統(tǒng)Mac OS X上的集成開發(fā)工具(IDE),由蘋果公司開發(fā)。Xcode是開發(fā)Mac OS X和iOS應用程序的最快捷的方式。Xcode具有統(tǒng)一的用戶界面設計,編碼、測試、調試都在一個簡單的窗口內完成。
Xcode支持多種開發(fā)語言,如C、C++、Objective-C、Java、Python等,Xcode由蘋果公司開發(fā),是一款免費的開發(fā)工具,與Mac OS X一起發(fā)行,可以在蘋果公司官方的網(wǎng)站下載,目前最新版本是Xcode 7.1。
2.4 舞蹈鏈算法
舞蹈鏈算法[6](Dancing Links)的發(fā)明者是Don Knuth,利用該算法可以使很多搜索問題得到優(yōu)化,舞蹈鏈算法不僅可以解決精確覆蓋問題,還可用于重復覆蓋問題。Dancing Links用的數(shù)據(jù)結構是交叉十字循環(huán)雙向鏈,Dancing Links中每個元素有六個分量,分別為:Left指向左邊的元素、Right指向右邊的元素、Up指向上邊的元素、Down指向下邊的元素、Col指向列標元素、Row指示當前元素所在的行。
利用舞蹈鏈算法求解數(shù)獨問題需要下列四個步驟:①把數(shù)獨問題轉換為精確覆蓋問題;②設計出數(shù)據(jù)矩陣;③用舞蹈鏈算法求解該精確覆蓋問題;④把該精確覆蓋問題的解轉換為數(shù)獨的解。
與此相對應,也可以利用暴力破解法解決數(shù)獨問題,暴力破解法基本思想是:根據(jù)題目的部分條件確定答案的大致范圍,并在此范圍內對所有可能的情況逐一驗證,直到全部情況驗證完畢。通過測算,舞蹈鏈算法無論在時間效率還是空間效率方面都優(yōu)于暴力破解法,因此它是最適合用于解決數(shù)獨問題的算法。
3 系統(tǒng)運行界面
本應用安裝完成后,包括了開始游戲、謎題生成器、快速解題器、背景音效開啟、排行榜與成就、關于游戲、游戲分享、獲取更多游戲共八部分系統(tǒng)界面,其主界面如圖2所示。當點擊開始游戲后進入到游戲難度等級選擇界面,難度等級共劃分成四類(初試身手、漸入佳境、龍?zhí)痘⒀?、巔峰時刻),用戶從最低難度等級的謎題開始。每一類難度等級有200題,系統(tǒng)共內置800個謎題,每題下方顯示答題時長,謎題關卡界面如圖3所示,對于尚未完成的謎題則顯示為灰色。選擇一個謎題進入游戲界面,游戲界面如圖4所示,游戲界面以咖啡色為主色調,包含了9行9列共81個格子,大部分區(qū)域已經(jīng)填寫好數(shù)字,用戶只需選擇空白區(qū)域,并填入合適的數(shù)字即可,用戶也可以利用右上角的重置按鈕,將游戲恢復到原始狀態(tài)。用戶的狀態(tài)數(shù)據(jù)保存在本地數(shù)據(jù)庫SQLite中。
4 結束語
數(shù)獨游戲看似簡單,但由于數(shù)字排列可以做到千變萬化,因此成了考驗玩家耐心與邏輯推理能力的一款益智類游戲,深受大眾喜愛。該游戲基于IOS平臺,可以運行在任意的IOS移動終端上,其界面美觀,性能穩(wěn)定。隨著智能手機的普及以及4G時代的全面開啟,這一類益智游戲將具有更大的市場空間。
參考文獻(References):
[1] 天極網(wǎng).2015手游市場報告:中國成全球最大市場[EB/OL].
http://gameonline.yesky.com/482/95650482.shtml,2015.9.
[2] 王陽,褚治廣.基于Android 平臺的數(shù)獨游戲設計[J].遼寧工
業(yè)大學學報(自然科學版),2013.8.
[3] 楊正洪,鄭齊心等.IOS編程揭秘——Objective-C程序設計
入門[M].清華大學出版社,2013.
[4] 劉杰逾.基于IOS平臺的一款游戲設計與實現(xiàn)[D]. 電子科技
大學,2012.5.
[5] 林冀,范俊等.Objective-C程序設計(第四版)[M].電子工業(yè)
出版社,2012.
[6] 萬倉一黍博客園.算法實踐——舞蹈鏈(Dancing Links)算法
求解數(shù)獨[EB/OL].http://www.cnblogs.com/grenet/p/3163550.html,2013.7.