亚洲免费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.

        91精品欧美综合在线观看| 欧美亚洲色综久久精品国产| 日本丰满人妻xxxxxhd| 亚洲熟妇网| 亚洲国产成人av第一二三区 | 在线观看国产av一区二区| 蜜桃视频网站在线观看一区| 国产成+人+综合+亚洲欧美丁香花| 亚洲av成人精品日韩一区| 久久亚洲精彩无码天堂| av免费在线国语对白| 免费欧洲毛片a级视频老妇女| 国产乱人伦av在线无码| 亚洲欧洲日产国码久在线| 一级内射免费观看视频| 色欲人妻aaaaaaa无码| 国内精品无码一区二区三区| 国产传媒在线视频| 日产分东风日产还有什么日产 | 午夜短无码| 日本91一区二区不卡| 一本久道综合色婷婷五月| 欧美人妻精品一区二区三区| 自慰高潮网站在线观看| 国产一区二区av在线免费观看| 色欲人妻综合aaaaa网| 亚洲AV色无码乱码在线观看| 中文字幕在线人妻视频| 国产一区二区视频免费在线观看| 一本一道波多野结衣av中文| 欧美日韩国产在线观看免费| 日韩精品一区二区在线视| 国产精品久人妻精品老妇| 亚洲精品成人网站在线观看| 亚洲AV手机专区久久精品| 国产91成人精品高潮综合久久| 人妻体体内射精一区二区| 亚洲日韩一区二区一无码| 亚洲综合伊人久久综合| 无码色av一二区在线播放| 品色堂永远的免费论坛|