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

        ?

        基于Android的中國(guó)象棋手機(jī)APP設(shè)計(jì)與實(shí)現(xiàn)

        2018-05-15 08:31:14沈旭梁文
        軟件導(dǎo)刊 2018年4期
        關(guān)鍵詞:移動(dòng)設(shè)備中國(guó)象棋手機(jī)游戲

        沈旭 梁文

        摘 要:中國(guó)象棋歷史悠久,集思想謀略、軍事競(jìng)技于一體,是一種古老而傳統(tǒng)的文化。中國(guó)象棋手機(jī)APP是基于Android平臺(tái)開發(fā)的一款應(yīng)用軟件,具備兼容性和人機(jī)對(duì)弈的特點(diǎn)。 其APP設(shè)計(jì)主要由3部分組成:流程分析、功能設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì),對(duì)游戲界面設(shè)置、棋盤繪制、游戲規(guī)則與棋子走法設(shè)置,以及所有布局算法進(jìn)行設(shè)計(jì)開發(fā),實(shí)現(xiàn)了APP的預(yù)定功能。實(shí)際運(yùn)行結(jié)果表明,中國(guó)象棋手機(jī)APP界面美觀、運(yùn)行穩(wěn)定,富有對(duì)抗性且具有傳統(tǒng)文化色彩,有助于游戲者的智力開發(fā)與思維能力鍛煉。

        關(guān)鍵詞:Android;移動(dòng)設(shè)備;中國(guó)象棋;手機(jī)游戲

        DOI:10.11907/rjdk.172668

        中圖分類號(hào):TP319

        文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2018)004-0104-03

        Abstract:Chinese chess has a long history and combines ideological strategy and military competition. It is an ancient and traditional culture. Chinese chess mobile phone APP is based on the Android platform to develop an application software, with compatibility and man-machine chess features. APP design mainly consists of three parts: process analysis, function design and data structure design. the game interface, welcome board drawing, the rules of the game, chess go settings, and all layout algorithm are set and designed, to achieve the intended function of APP. The actual running result proves that Chinese chess mobile phone APP has the characteristics of beautiful interface, stable operation, full of antagonism and traditional culture color, and it is conducive to the development of human intelligence and peoples thinking ability.

        Key Words:Android; mobile devices; Chinese chess; mobile game

        0 引言

        隨著信息技術(shù)的高速發(fā)展,智能手機(jī)已進(jìn)入到普通人的日常生活,手機(jī)游戲這種大眾化的娛樂方式也受到人們的廣泛歡迎。中國(guó)象棋發(fā)展至今已有兩千三百多年歷史,是中華民族的國(guó)粹。它集文化、科學(xué)、軍事、競(jìng)技于一體,有利于開發(fā)人的智力,鍛煉人的思維能力,并增強(qiáng)人的競(jìng)爭(zhēng)意識(shí)[1]。中國(guó)象棋愛好者遍布全球,通過網(wǎng)絡(luò),下棋沒有了地域限制,人們甚至可以和電腦對(duì)弈。在對(duì)弈中,對(duì)戰(zhàn)雙方通過對(duì)游戲規(guī)則的掌握使游戲結(jié)果利于己方,機(jī)器博弈研究成果已廣泛應(yīng)用于眾多領(lǐng)域[2]。通過中國(guó)象棋人機(jī)游戲,可以使象棋愛好者及希望了解象棋的人更加輕松地感受象棋的魅力[3]。

        1 Android特征與體系結(jié)構(gòu)

        1.1 Android特征

        Android是一個(gè)對(duì)第三方軟件完全開放的平臺(tái),開發(fā)者在為其開發(fā)程序時(shí)擁有更大的自由度,打破了iPhone等只能添加為數(shù)不多的固定軟件的枷鎖。同時(shí),與Windows mobile、Symbian等操作系統(tǒng)不同,Android操作系統(tǒng)免費(fèi)向開發(fā)人員開放,從而大大降低了開發(fā)成本[4]。

        1.2 體系結(jié)構(gòu)

        Android的系統(tǒng)架構(gòu)與其操作系統(tǒng)相同,采用了分層架構(gòu)。Android結(jié)構(gòu)分為4層,從低到高層分別為:①Linux內(nèi)核層:該層是基礎(chǔ)層,包含各種驅(qū)動(dòng),并提供操作系統(tǒng)的基本功能;②中間層,包括程序庫(Libraries)和Android運(yùn)行環(huán)境;③應(yīng)用框架層:該層是編寫核心應(yīng)用使用的API框架,開發(fā)者可以使用相關(guān)框架開發(fā)自己的應(yīng)用,但必須遵守該框架的開發(fā)原則[5];④應(yīng)用層:該層是各種應(yīng)用軟件,包括通話、短信、日歷、地圖、瀏覽器等軟件的核心應(yīng)用程序。

        2 系統(tǒng)分析

        2.1 可行性分析

        中國(guó)象棋人機(jī)游戲是基于Android平臺(tái)開發(fā)的一個(gè)手持設(shè)備應(yīng)用游戲,具備兼容性和人機(jī)對(duì)弈的特點(diǎn)。中國(guó)象棋游戲?qū)儆谄迮祁愑螒颍款惒煌钠遄佑兄髯怨潭ǖ淖叻?,?duì)弈雙方進(jìn)行輪換走棋。本游戲模擬人人對(duì)弈,可實(shí)現(xiàn)人機(jī)對(duì)弈。游戲設(shè)計(jì)主要由3方面組成:流程分析、功能設(shè)計(jì)與數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)。

        2.2 界面需求分析

        游戲界面需求如下:①運(yùn)行游戲,首先出現(xiàn)歡迎界面,隨后進(jìn)入菜單頁面;②菜單頁面設(shè)置“開始游戲”、“象棋歷史”、“象棋規(guī)則”、“退出游戲”幾個(gè)板塊。點(diǎn)擊“象棋歷史”與“象棋規(guī)則”可分別進(jìn)入象棋歷史介紹與游戲玩法介紹頁面;③單擊“開始游戲”進(jìn)入游戲主界面,游戲界面中玩家按照象棋規(guī)則下棋,可單擊聲音按鈕控制聲音,當(dāng)游戲一方的“將”或“帥”被吃掉時(shí),出現(xiàn)“你輸了”或 “你贏了”界面。游戲中玩家還可隨時(shí)通過“退出”按鈕返回游戲主菜單。

        2.3 游戲流程分析

        進(jìn)入游戲界面后,設(shè)置象棋棋盤。雙方各持一種顏色的棋子,棋子按照規(guī)則從棋盤的一個(gè)位置走到另一個(gè)位置,或吃掉該位置上對(duì)方的一枚棋子,方為走了一步,之后以輪換的方式進(jìn)行交互走棋博弈。玩家走完一步后,程序需要在棋子的諸多走法中,通過搜索函數(shù)和局面評(píng)估函數(shù)逐一打分,最后挑選出最佳走法并執(zhí)行[6]。

        3 游戲系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

        3.1 類框架設(shè)計(jì)

        通過瀏覽中國(guó)象棋的歷史以及走法,同時(shí)結(jié)合象棋人機(jī)對(duì)戰(zhàn)游戲的需求分析,游戲總體設(shè)計(jì)由以下幾部分組成:共有類、輔助界面相關(guān)類、游戲界面相關(guān)類。

        共有類是Activity的派生類Chess_DJB_Activity,該類是游戲的控制器,也是整個(gè)程序的入口;輔助界面相關(guān)類由歡迎界面類WelcomeView、菜單界面類MenuView等組成;游戲界面相關(guān)類由游戲界面類GameView、游戲界面相關(guān)常量類ViewConstant組成;走法引擎相關(guān)類由常量類Constant、方法類Chess_LoadUtil、走法引擎主類LoadUtil、比較器類MyComparator,以及走棋步驟類StackplayChess組成。

        3.2 共有類實(shí)現(xiàn)

        共有類Chess_DJB_Activity的主要作用是通過接收Handler消息變量,根據(jù)各界面發(fā)送過來的Handler消息類型判斷需要執(zhí)行的操作。適當(dāng)?shù)爻跏蓟鄳?yīng)用戶界面,各個(gè)界面初始化被調(diào)用時(shí),根據(jù)其它界面需求直接將用戶界面切換到相應(yīng)界面[7]。

        3.3 輔助界面相關(guān)類實(shí)現(xiàn)

        游戲歡迎界面通過WelcomeView類實(shí)現(xiàn),加載一個(gè)歡迎圖片,并通過監(jiān)聽菜單圖片,向Activity發(fā)送Handler消息,通知控制器切換用戶界面,然后切換到菜單界面MenuView。MenuView類中通過監(jiān)聽“開始游戲”切換到游戲界面,監(jiān)聽“打開聲音/關(guān)閉聲音”按鈕切換聲音的打開與關(guān)閉,監(jiān)聽“象棋歷史”切換到象棋起源界面,監(jiān)聽“象棋規(guī)則”切換到規(guī)則介紹頁面,監(jiān)聽“退出游戲”,結(jié)束并退出游戲。

        3.4 游戲界面相關(guān)類實(shí)現(xiàn)

        游戲界面類GameView是游戲最核心的類,該類首先繪制屏幕棋盤和相應(yīng)棋子,提示一方先走,當(dāng)“帥”或“將”被吃掉則彈出“贏”或者“輸”[8],還可控制游戲聲音及結(jié)束游戲。

        3.5 走法引擎相關(guān)類實(shí)現(xiàn)

        3.5.1 常量類Constant

        中國(guó)象棋分為紅黑雙方,以楚河漢界為界限,雙方排兵布陣,一方持16子,分為2車、2馬、2炮、2象(相)、2士(仕)、1將(帥)、5卒(兵)。各類棋子走法不同,具體如下:“將”、“帥”統(tǒng)領(lǐng)整個(gè)棋局,在中軍帳中運(yùn)籌帷幄,并且受到嚴(yán)密保護(hù),不能隨意走出軍帳范圍。因此,“將”、“帥”的行走范圍只在己方底三行中三列形成的9個(gè)交叉點(diǎn),俗稱“九宮格”,一步只能走一個(gè)方格的直線距離。同時(shí),在中間無其它棋子隔離時(shí),將帥不能出現(xiàn)在同一條直線上,如圖1所示。

        “仕”的主要職責(zé)是保護(hù)首領(lǐng),因此它們也只能在將帥附近九宮格的交叉線上走動(dòng),一步只能走一個(gè)交點(diǎn)的距離;“象”、“相”只可在己方陣營(yíng)以“田字格”形式走動(dòng),不能過河,走動(dòng)時(shí)起始點(diǎn)與目標(biāo)點(diǎn)構(gòu)成一條斜線,若該斜線的中點(diǎn)位置存在其它棋子(包括己方棋子),則無法走動(dòng);“炮”可以走直線上的任意距離,但起點(diǎn)與目標(biāo)點(diǎn)之間不能存在其它棋子?!芭凇毕麥鐚?duì)方棋子的條件是與目標(biāo)棋子在一條直線上,而且兩棋子之間有且只有一個(gè)棋子(已方或敵方棋子)作為“炮臺(tái)”,如圖2所示。

        “馬”只能走“日”字方格并且可以過河,但是存在“絆馬腿”的情況,從初始位置到目標(biāo)位置緊挨著的兩格長(zhǎng)度方向不能有棋子,否則會(huì)被絆?。弧败嚒笨梢噪S意在直線上走動(dòng)任意距離,但起點(diǎn)和目標(biāo)點(diǎn)中間不能有其它棋子,包括己方棋子;卒和兵個(gè)數(shù)最多,在過河之前不能向左右走,只能向前走,過河之后可以向左右走,但不能向后走。

        3.5.2 棋盤表示

        對(duì)于棋盤的設(shè)計(jì),每種棋子采用一個(gè)固定值以識(shí)別該棋子類型,然后根據(jù)紅黑雙方以及不同類型的棋子設(shè)計(jì)規(guī)則類,調(diào)用其中的canMove方法判斷每一步走法是否可行。規(guī)則類設(shè)計(jì)采用規(guī)則方法,因?yàn)槠遄臃N類只有7類,且紅黑雙方位于棋盤兩端[9],部分棋子走動(dòng)時(shí)方向不同,設(shè)計(jì)時(shí)需要進(jìn)行分類設(shè)計(jì),采用14種不同的判別方法對(duì)所有棋子的走法進(jìn)行判斷。棋盤上各個(gè)棋子以及棋盤的初始布局設(shè)計(jì)采用10*9的數(shù)組進(jìn)行標(biāo)識(shí),各數(shù)字的對(duì)應(yīng)關(guān)系為:

        0-無棋子;8-黑方的將;9-黑方的士;10-黑方的象;11-黑方的馬;12-黑方的車;13-黑方的炮;14-黑方的卒;16-紅方的帥;17-紅方的仕;18-紅方的相;19-紅方的馬;20-紅方的車;21-紅方的炮;22-紅方的兵。

        3.5.3 走法引擎主類實(shí)現(xiàn)

        (1)在棋盤上放一枚棋子的方法AddPiece:

        public static void AddPiece(int sq, int pc){

        ucpcSquares[sq]=pc;

        if (pc<16) {

        vlWhite+=cucvlPiecePos[pc-8][sq];

        } else {

        vlBlack+=cucvlPiecePos[pc-16][SQUARE_FLIP(sq)];

        }

        }

        (2)在棋盤上拿走一枚棋子的方法DelPiece:

        public static void DelPiece(int sq, int pc){

        ucpcSquares[sq]=0;

        if (pc<16) {

        vlWhite-=cucvlPiecePos[pc-8][sq];

        } else {

        vlBlack-=cucvlPiecePos[pc-16][SQUARE_FLIP(sq)];

        }

        (3)撤銷一步棋的方法UndoMakeMove:

        public static void UndoMakeMove(int mv,int pcCaptured){

        nDistance--;

        ChangeSide();

        UndoMovePiece(mv, pcCaptured);

        }

        (4)移動(dòng)棋子方法MovePiece:

        public static int MovePiece(int mv){

        int sqSrc, sqDst, pc, pcCaptured;

        sqSrc=SRC(mv);

        sqDst=DST(mv);

        pcCaptured=ucpcSquares[sqDst];

        if (pcCaptured !=0) {

        DelPiece(sqDst, pcCaptured);

        }

        pc=ucpcSquares[sqSrc];

        DelPiece(sqSrc, pc);

        AddPiece(sqDst, pc);

        return pcCaptured;

        }

        (5)撤銷移動(dòng)棋子方法UndoMovePiece:

        public static void UndoMovePiece(int mv,int pcCaptured){

        int sqSrc, sqDst, pc;

        sqSrc=SRC(mv);

        sqDst=DST(mv);

        pc=ucpcSquares[sqDst];

        DelPiece(sqDst, pc);

        AddPiece(sqSrc, pc);

        if (pcCaptured !=0) {

        AddPiece(sqDst, pcCaptured);

        }}

        (6)走棋的方法MakeMove:

        public static boolean MakeMove(int mv, int pcCaptured){

        pcCaptured=MovePiece(mv);

        if (Checked()) {

        UndoMovePiece(mv, pcCaptured);

        return false;}

        ChangeSide();

        nDistance++;

        return true;}

        3.6 游戲?qū)崿F(xiàn)

        子力價(jià)值表示一個(gè)棋子在棋盤中某個(gè)位置時(shí)的價(jià)值,而一方棋盤上所有棋子的子力價(jià)值之和,表示該局面下的局面價(jià)值。局面價(jià)值越大,說明該局面對(duì)己方越有利,程序根據(jù)局面價(jià)值搜索最優(yōu)走棋步驟并執(zhí)行。

        4 結(jié)語

        在中國(guó)象棋人機(jī)對(duì)戰(zhàn)APP的開發(fā)中,遇到了諸多問題,如棋子走法如何約束、人機(jī)輪流走棋如何控制等。最后成功克服了諸多難題,實(shí)現(xiàn)了一款界面美觀、運(yùn)行穩(wěn)定,且富有對(duì)抗性和傳統(tǒng)文化色彩的中國(guó)象棋人機(jī)對(duì)弈游戲Android APP。未來還可作進(jìn)一步改進(jìn),比如通過深度學(xué)習(xí)等人工智能算法[10],讓機(jī)器更加“聰明”,從而使人機(jī)對(duì)戰(zhàn)更具有挑戰(zhàn)性和觀賞性。

        參考文獻(xiàn):

        [1] 杜幫國(guó).基于Java平臺(tái)的中國(guó)象棋游戲的設(shè)計(jì)與實(shí)現(xiàn)[D].大連:大連理工大學(xué),2013.

        [2] 魏欽剛,王驕,徐心和,等.中國(guó)象棋計(jì)算機(jī)博弈開局庫研究與設(shè)計(jì)[C].2006中國(guó)機(jī)器博弈學(xué)術(shù)研討會(huì),2006.

        [3] 王曉鵬,王驕,徐心和,等.中國(guó)象棋與國(guó)際象棋比較分析[J].重慶工學(xué)院學(xué)報(bào):自然科學(xué)版,2007(1):71-76.

        [4] 韓敬海.Android程序設(shè)計(jì)[M].北京:電子工業(yè)出版社,2012.

        [5] 趙燕萍.Java程序設(shè)計(jì)語言基礎(chǔ)研究[J].硅谷,2013(8):61-62.

        [6] 徐心和,王驕.中國(guó)象棋計(jì)算機(jī)博弈關(guān)鍵技術(shù)分析[J].小型微型計(jì)算機(jī)系統(tǒng),2006,27(6):961-969.

        [7] 蘇攀,王熙照,李艷.基于不平衡學(xué)習(xí)的分類器博弈模型及其在中國(guó)象棋中的應(yīng)用[J].計(jì)算機(jī)研究與發(fā)展,2011(5):841-847.

        [8] 周瑋,王水濤,孫旸.中國(guó)象棋計(jì)算機(jī)博弈中的一種數(shù)據(jù)結(jié)構(gòu)方法[J].計(jì)算機(jī)工程與應(yīng)用,2006(35):219-221.

        [9] 杜俊俐,張景飛,黃心漢.基于視覺的象棋棋盤識(shí)別[J].計(jì)算機(jī)工程與應(yīng)用,2007(34):220-222.

        [10] 劉建偉,劉媛,羅雄麟.深度學(xué)習(xí)研究進(jìn)展[J].計(jì)算機(jī)應(yīng)用研究,2014(7):1921-1930.

        (責(zé)任編輯:黃 ?。?/p>

        猜你喜歡
        移動(dòng)設(shè)備中國(guó)象棋手機(jī)游戲
        讓手機(jī)游戲成為傳統(tǒng)文化的傳播新渠道
        手機(jī)游戲?qū)Υ髮W(xué)生的負(fù)面影響及對(duì)策分析
        移動(dòng)端界面設(shè)計(jì)中“容錯(cuò)性”思考
        馬踏連營(yíng)
        馬踏連營(yíng)
        讀寫算(上)(2016年12期)2016-12-13 10:50:39
        基于移動(dòng)設(shè)備的富媒體兒童電子書研究
        CSS3在響應(yīng)式網(wǎng)頁設(shè)計(jì)中的應(yīng)用
        無線網(wǎng)絡(luò)在校園中的重要性
        中國(guó)象棋博弈程序中邊界判斷的優(yōu)化方法研究
        在干什么
        狠狠cao日日橹夜夜十橹| 99精品国产成人一区二区在线| 日本午夜精品一区二区三区电影| 亚洲中文字幕无码av永久| 亚洲国产成人精品无码区在线播放| 亚洲av福利天堂一区二区三 | 欧美丰满熟妇bbb久久久| 亚洲精品国产一区二区| 一边做一边喷17p亚洲乱妇50p| 性无码专区无码| 最新国产av无码专区亚洲| 2019最新国产不卡a| 国产视频网站一区二区三区 | 少妇特殊按摩高潮惨叫无码| 亚洲乱色视频在线观看| 日韩女优中文字幕在线| 蜜桃在线高清视频免费观看网址| 最新国产激情视频在线观看| 日韩中文字幕不卡在线| 粉嫩av国产一区二区三区| 国内揄拍国内精品少妇| 亚洲精品97久久中文字幕无码| 婷婷综合缴情亚洲| 妺妺窝人体色www在线图片| 连续高潮喷水无码| 亚洲中文欧美日韩在线| AV无码专区亚洲AVL在线观看 | 亚洲av永久无码精品古装片| a级大胆欧美人体大胆666| 久久伊人色av天堂九九| 在线观看亚洲精品国产| 久久精品国产久精国产69| 男生自撸视频在线观看| 日韩中文字幕不卡在线| 久久精品亚洲精品国产色婷| 极品嫩模高潮叫床| 美女又色又爽视频免费| 无码ol丝袜高跟秘书在线观看| 亚洲高潮喷水无码av电影| 四虎影视在线观看2413| 国产精品久久中文字幕第一页|