亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Android的圍棋游戲開發(fā)

        2012-12-31 00:00:00王賀劉知青
        計算機光盤軟件與應用 2012年22期

        摘要:本文設計實現(xiàn)了基于Android平臺的圍棋游戲,分別利用SDK、NDK交叉編譯工具開發(fā)了圖形界面和圍棋引擎,然后利用Java輸入輸出流和對GTP協(xié)議的解析,完成了圖形界面和引擎進程間的通信。經(jīng)測試,游戲操作簡單,棋力優(yōu)異,具備一定的可玩性。所提出的開發(fā)框架對Android棋牌類游戲開發(fā)有一定的參考意義。

        關鍵詞:Android;NDK;GTP;圍棋游戲

        中圖分類號:TP311.52 文獻標識碼:A 文章編號:1007-9599 (2012) 22-0000-02

        隨著生活節(jié)奏的加快,智能手機的發(fā)展,人們對于在智能手機上進行娛樂的需求越來越大,而棋牌類游戲作為游戲中趣味性較強的一類,有著廣泛的市場空間和一定的娛樂價值。圍棋因其可玩性強和操作簡便等特點,成為棋牌類游戲中最受歡迎的游戲之一。本文基于Android平臺,利用Android SDK,結(jié)合Android NDK工具,設計實現(xiàn)了19路圍棋游戲。

        1 游戲設計及框架

        本文所討論的圍棋游戲,主要功能是人機對弈。它的實現(xiàn)主要涉及三個方面:對弈界面,引擎程序以及界面和引擎程序間的通信。基本步驟為:利用Android SDK開發(fā)游戲界面,將已有的C++引擎程序交叉編譯到Android系統(tǒng)上獨立運行在子進程中,再通過Java輸入輸出流實現(xiàn)界面與引擎間通信,且通信中遵循GTP(Go Text Protocol)協(xié)議。該游戲的整體結(jié)構(gòu)如圖1所示:

        2 游戲界面的設計與實現(xiàn)

        圍棋對弈需要遵守圍棋規(guī)則,所以,需要定義規(guī)則算法來保證對弈過程的正確性和真實性。規(guī)則算法中主要實現(xiàn)兩個功能:判斷某點是否可下和把無氣之子提出盤外。棋盤的繪制是將組成棋盤的元素,包括材質(zhì)背景圖片、棋盤線、星點和坐標,順序繪制在屏幕上。監(jiān)聽手指的觸屏動作,刷新界面,將棋子圖片繪制在屏幕正確的位置上,實現(xiàn)落子效果。

        2.1 棋盤繪制

        圍棋對弈界面的開發(fā)可以被劃歸到游戲開發(fā)范疇,Android游戲開發(fā)中常用的三種視圖是View、SurfaceView和GLSuifaceView[1]。View是顯示視圖,內(nèi)置畫布,提供圖形繪制函數(shù)、觸屏事件、按鍵事件函數(shù)等;SurfaceView拓展于View,以單獨的線程執(zhí)行畫布重繪;GLSurfaceView拓展于SurfaceView,專用于3D游戲開發(fā)。

        View游戲框架已經(jīng)可以滿足圍棋界面2D顯示。定義游戲界面類GameView,繼承自View。復寫onDraw方法,在畫布(Canvas)上依次繪制棋盤材質(zhì)圖片、361條垂直交叉的棋盤線、9個圓形星位和76個橫縱坐標。

        2.2 屏幕監(jiān)聽和棋子繪制

        View視圖類中封裝了觸屏監(jiān)聽函數(shù):onTouchEvent(MotionEvent event),event實例中保存了觸屏動作,如:按下、抬起、移動、屏幕壓力、多點觸屏等。重寫onTouchEvent函數(shù),調(diào)用event的getX()、getY()方法獲取手指觸摸位置,將觸摸點對應到與其距離最近的棋盤坐標上。通過event.getAction()方法獲取玩家的動作,與MotionEvent類中定義的動作常量值相匹配,若匹配成功,進行相應處理??紤]落子操作的需求,對玩家的按下動作、抬起動作和移動動作進行處理。這三個動作對應的動作常量值分別是ACTION_DOWN、ACTION_UP和ACTION_MOVE。監(jiān)聽到ACTION_UP事件后,依據(jù)規(guī)則,判斷該坐標點可以落子后,調(diào)用invalidate()方法重繪畫布,刷新屏幕,將棋子繪制在棋盤上。

        3 引擎程序交叉編譯

        本文所利用的圍棋引擎程序是基于Linux、以C++語言實現(xiàn)的Lingo程序,對Lingo的交叉編譯是基于Android NDK(Native Development Kit)實現(xiàn)的。

        NDK是Android原生態(tài)開發(fā)工具,主要面向C、C++程序員,NDK可以將本地C、C++組件代碼嵌入到應用程序中,為已有代碼的重用提供了便利[3]。NDK集成了交叉編譯器,并提供了相應的mk文件隔離CPU、平臺、ABI等差異,開發(fā)人員只需要編寫mk文件,就可以創(chuàng)建出動態(tài)庫、可執(zhí)行文件或者靜態(tài)庫。

        Android NDK源碼路徑設置遵循一定的路徑格式。工程文件夾下需要包含如下幾個目錄:JNI、Libs、Obj[4]。將Lingo源碼文件存放在JNI目錄下,同時在JNI目錄下創(chuàng)建并編寫Android.mk文件和Application.mk文件,指出需要編譯的文件、編譯特性要求等,編譯的時候編譯腳本會在JNI目錄下自動尋找這兩個mk文件,然后根據(jù)腳本配置開始編譯工作。

        將sgfc(sgf格式棋譜解析)模塊、go(引擎)模塊分別編譯成靜態(tài)庫libsgfc.a、libgo.a,再集成到lingo模塊中,最終將lingo編譯成可執(zhí)行文件。編譯后的可執(zhí)行文件lingo會自動拷貝到Libs文件夾下。

        然后利用adb push命令將可執(zhí)行文件lingo復制到模擬器或手機上。

        4 游戲界面與引擎通信

        Java API中的ProcessBuilder提供了創(chuàng)建操作系統(tǒng)進程的方法。在游戲界面端,調(diào)用ProcessBuilder實例的start()方法,啟動lingo子進程。

        4.1 GTP協(xié)議

        目前,計算機圍棋程序間對弈多采用GTP協(xié)議,它基于文本輸入輸出來傳遞信息[5]。GTP協(xié)議基于提問/應答模式,通信雙方分別作為控制器與引擎,二者建立連接后,控制器可以向引擎發(fā)送請求指令,然后引擎會做出應答?;贚ingo程序?qū)TP協(xié)議的良好支持,游戲界面也解析了GTP協(xié)議,并作為客戶端向lingo發(fā)送指令,lingo會做出應答。本文所討論的圖形界面支持的兩個主要GTP協(xié)議指令為:

        4.2 獨立線程實現(xiàn)通信

        在多線程方面,Android提供了非常好的支持。為避免引擎計算時間可能過長而造成主線程阻塞,將界面與引擎的通信在單獨的線程中實現(xiàn)。在該線程中通過Java輸出流向lingo引擎發(fā)送請求指令,利用Java輸入流接收lingo引擎的應答。

        5 結(jié)束語

        圍棋游戲成功安裝,經(jīng)反復測試,該圍棋游戲通過友好的圖形界面和棋力優(yōu)異的圍棋引擎,使玩家體驗到圍棋的智慧與樂趣。文中重點介紹了本游戲開發(fā)過程中使用的關鍵技術,為Android棋牌類游戲開發(fā)提供了一定參考價值。

        參考文獻:

        [1]李華明. Android游戲編程之從零開始[M].北京:清華大學出版社,2011:118-119.

        [2]吳亞峰,蘇亞光. Android游戲開發(fā)大全[M].北京:人民郵電出版社,2012:325-371.

        [3]趙宏偉. Android NDK開發(fā)環(huán)境實現(xiàn)與應用[J].電腦知識與技術,2010,6(35):10055-10060.

        [4]劉知青,李文峰.現(xiàn)代計算機圍棋基礎[M].北京:北京郵電大學出版社,2011:182-183.

        亚洲处破女av日韩精品中出| 狠狠亚洲婷婷综合色香五月| 青青草一级视频在线观看| 日本免费久久高清视频| 亚洲午夜久久久久久久久电影网 | 国产无吗一区二区三区在线欢| 免费人成年小说在线观看| 亚洲色www无码| 日本一区二区免费看片| 国产a在亚洲线播放| 久久久国产精品123| 中文字幕无码毛片免费看 | 久久久久久亚洲av无码蜜芽 | 亚洲综合色婷婷久久| 国产日本精品一区二区免费| 无码毛片内射白浆视频| 人妻少妇邻居少妇好多水在线| 色综合久久精品中文字幕| 国产成人精品一区二三区在线观看| 黑人大群体交免费视频| 国产精品免费大片| 中文字幕有码一区二区三区| 亚洲国产精品成人一区二区在线| 妺妺窝人体色www婷婷| 亚洲成a人片在线观看无码| 日本岛国精品中文字幕| 网站在线观看视频一区二区| 特级精品毛片免费观看| 亚洲av无码成人精品区天堂 | 中文字幕精品人妻av在线| 手机av在线中文字幕| 国产婷婷色综合av蜜臀av| 国产精品无码久久久一区蜜臀 | 久久综合给合久久狠狠狠9| 亚洲午夜精品第一区二区| 无码国内精品久久人妻| 久久久精品久久波多野结衣av| 99久久这里只精品国产免费| 区一区二区三免费观看视频| av狠狠色丁香婷婷综合久久| 久久中文字幕乱码免费|