雷舒昊 何歡
【摘 要】中國象棋不僅娛樂性強,還能激發頭腦的思考,集娛樂與智慧于一體。但由于實體中國象棋的娛樂受限于時間地點和對弈人的限制,不能達到業余時間隨時隨地娛樂的目的,因此,在熟練掌握中國象棋的行走規則的背景下,學習了在Android平臺下的游戲開發技術,設計和實現了在Android系統下的中國象棋游戲的設計,經過系統調試,中國象棋游戲運行良好,實現最終設計目標。
【關鍵詞】Android;中國象棋;游戲開發;
中圖分類號: TP 393 文獻標識碼: A 文章編號: 2095-2457(2018)30-0266-003
DOI:10.19694/j.cnki.issn2095-2457.2018.30.118
The Design and Implementation of Chinese Chess in Android
LEI Shu-hao1 HE Huan2
(1.Anshan First Middle School,Anshan Liaoning 114041;
2.National Computer Experimental Teaching Demonstration Center,Northeastern University,
Shenyang Liaoning 110819,China)
【Abstract】Chinese chess is not only entertaining,but also stimulates the mind and integrates entertainment and wisdom.However,due to the restriction of time,place and players, the entertainment of Chinese chess in the entity can not achieve the purpose of entertaining anytime,anywhere in the spare time.Therefore,under the background of mastering the rules of Chinese chess,we learned the game development technology under Android platform,designed and realized the design of Chinese chess game under Android system.After debugging,Chinese chess game runs well and achieves the final goal.
【Key words】Android;Chinese chess;Game Development
中國象棋是受廣大中國人喜愛的休閑娛樂活動之一。中國象棋[1]發展至今已有兩千三百多年歷史,是中華民族的國粹。以往經常見到路邊一堆人圍在一起下棋的場面,但隨著信息技術的高速發展,智能手機已進入到普通人的日常生活,手機游戲[2]這種大眾化的娛樂方式也受到人們的廣泛歡迎。因此手機端的游戲開發,成為目前研究的熱點。中國象棋愛好者遍布全球,通過網絡,下棋沒有了地域限制,人們甚至可以和電腦對弈。在對弈中,對戰雙方通過對游戲規則的掌握使游戲結果利于己方,機器博弈研究成果已廣泛應用于眾多領域[3]。中國象棋集文化、科學、軍事、競技于一體,有利于開發人的智力,鍛煉人的思維能力,并增強人的競爭意識[4],使人更加輕松地感受象棋的魅力。
鑒于此,本文在Android系統[5]上開發了一款中國象棋游戲,提出一種簡單、實用、易操作的象棋游戲系統,方便各個年齡階層使用。
1 系統需求及總體設計
1.1 系統需求分析
游戲界面需求如下:
(1)運行游戲,首先出現歡迎界面,隨后進入菜單頁面;
(2)菜單頁面設置“開始游戲”、“象棋歷史”、“象棋 規則”、“退出游戲”幾個板塊。點擊“象棋歷史”與“象棋 規則”可分別進入象棋歷史介紹與游戲玩法介紹頁面;
(3)單擊“開始游戲”進入游戲主界面,分為單機游戲和聯機游戲。游戲界面中玩家按照象棋規則下棋,可單擊聲音按鈕控制聲音,當游戲一方的“將”或“帥”被吃掉時,出現“你輸了”或“你贏了”界面。游戲中玩家還可隨時通過“退出”按鈕返回游戲主菜單。
1.2 系統總體設計
系統構架及功能設計,使用功能層次圖或類圖等描述,并進行說明,如圖1所示。
整個系統主要分為四大塊,分別為登錄模塊,注冊模塊,注銷模塊,下棋模塊。
登錄模塊為游客登錄APP操作。注冊模塊是游客注冊為會員操作,注冊功能和注銷功能緊密相連,注銷和注冊都可以由管理員進行。而注冊還可以由游客自行完成。下棋模塊是APP的核心模塊,通過本模塊進行中國象棋游戲,游戲結束后可進行再來一局和返回菜單功能。
2 系統詳細設計及方案
下面將分別實現各個模塊的設計,由于涉及的模塊較多,這里列出主要模塊的設計實現。
2.1 注冊模塊
實現功能:游客注冊成為用戶,將用信息寫入數據庫內。
實現過程:(1)系統獲取用戶輸入的用戶名、密碼和昵稱。
(2)若有空,則提示用戶輸入完整;若均已輸入,則系統檢驗該用戶名、郵箱和手機號是否已被注冊,即遍歷用戶表查詢是否有相同信息,若有相同記錄則提示用戶該用戶名/郵箱/手機號已被注冊,否則用戶注冊成功,跳轉至登錄界面。
2.2 登錄模塊
實現功能:游客登錄到APP。
實現過程:(1)系統獲取用戶輸入的用戶名、密碼。
(2)若有空,則提示用戶輸入完整;若均已輸入,則系統檢驗該用戶名和密碼是否已被注冊,即遍歷用戶表查詢是否有相同信息,若有相同記錄則提示用戶登錄成功,否則輸出相應結果,即用戶名、密碼不存在,跳轉至菜單界面。
2.3 注銷模塊
實現功能:管理員注銷用戶,將信息在數據庫中修改或刪除。
實現過程:(1)管理員選擇要注銷的用戶。
(2)若不存在,則提示用戶輸入完整;若存在,則系統檢驗該用戶名是否已被注冊,即遍歷用戶表查詢是否有相同信息,若不存在有相同記錄則提示用戶該用戶名不存在,否則用戶注銷成功。
2.4 下棋模塊
實現功能:用戶進行象棋游戲,選擇單機或者聯機。
實現過程:
1.游戲開始之前,初始化棋盤。
2.選中棋子進行走子操作,如果已有選中的棋子,則不能選中其他棋子。如果想選擇其他棋子,則需點擊已選中的棋子,進行取消。
3.判斷是哪種棋子,若游戲未結束,則循環執行步驟3。
當未選擇棋子時:如果選擇位置為空,則輸出結果。如果選擇位置不為空,先判斷當前執方,再對執行次數進行判斷,選中時,執行次數為1,落下時為2.如果大于1,則執行另一方棋子,輸入已落子,請另一方落子。
(1)為“兵”或“卒”時:新建solider類,將落點和棋子的原橫縱坐標及棋子執方存入。
判斷走棋規則是否合法。
如果非法,輸出結果;
如果合法,則判斷落點是否有子。
如果落點沒有棋子,更新棋盤。
如果落點有子,首先判斷是否為本方棋子,
如果是本方棋子,輸出結果;
否則,更新棋盤。
如果吃掉的棋子為敵方將帥,則輸出結果勝利。執行步驟4
行棋結束后,判斷兩帥是否相對,如果相對執行步驟4。
(2)為“車”或“車”時:新建car類,將落點和棋子的原橫縱坐標及棋子執方存入。
判斷走棋規則是否合法。如果非法,輸出結果;如果合法,則判斷落點是否有子。如果落點沒有棋子,更新棋盤。如果落點有子,首先判斷是否為本方棋子,如果是本方棋子,輸出結果;否則,更新棋盤。如果吃掉的棋子為敵方將帥,則輸出結果勝利。執行步驟4行棋結束后,判斷兩帥是否相對,如果相對執行步驟4。
(3)為“帥”或“將”時:新建marshal類,將落點和棋子的原橫縱坐標及棋子執方存入。
判斷走棋規則是否合法。如果非法,輸出結果;如果合法,則判斷落點是否有子。如果落點沒有棋子,更新棋盤。如果落點有子,首先判斷是否為本方棋子,如果是本方棋子,輸出結果;否則,更新棋盤。如果吃掉的棋子為敵方將帥,則輸出結果勝利。執行步驟4行棋結束后,判斷兩帥是否相對,如果相對執行步驟4。
判斷棋子的執方,將棋子的當前位置賦給相應的變量,判斷兩帥是否相對,如果相對執行步驟4。
(4)為“士”或“仕”時:新建housecarl類,將落點和棋子的原橫縱坐標及棋子執方存入。
判斷走棋規則是否合法。如果非法,輸出結果;如果合法,則判斷落點是否有子。如果落點沒有棋子,更新棋盤。如果落點有子,首先判斷是否為本方棋子,如果是本方棋子,輸出結果;否則,更新棋盤。如果吃掉的棋子為敵方將帥,則輸出結果勝利。執行步驟4行棋結束后,判斷兩帥是否相對,如果相對執行步驟4。
(5)為“馬”或“馬”時:新建horse類,將落點和棋子的原橫縱坐標及棋子執方存入。
判斷走棋規則是否合法。
如果非法,輸出結果;
如果合法,
判斷是否蹩馬腳,如果蹩馬腳輸出相應結果
否則,判斷落點是否有子。
如果落點沒有棋子,更新棋盤。
如果落點有子,首先判斷是否為本方棋子,
如果是本方棋子,輸出結果;
否則,更新棋盤。
如果吃掉的棋子為敵方將帥,則輸出結果勝利。執行步驟4
行棋結束后,判斷兩帥是否相對,如果相對執行步驟4。
(6)為“相”或“象”時:新建prime minister類,將落點和棋子的原橫縱坐標及棋子執方存入。
判斷走棋規則是否合法。
如果非法,輸出結果;
如果合法,
判斷是否堵象眼,如果堵象眼輸出相應結果
否則,判斷落點是否有子。
如果落點沒有棋子,更新棋盤。
如果落點有子,首先判斷是否為本方棋子,
如果是本方棋子,輸出結果;
否則,更新棋盤。
如果吃掉的棋子為敵方將帥,則輸出結果勝利。執行步驟4
行棋結束后,判斷兩帥是否相對,如果相對執行步驟4。
(7)為“炮”或“砲”時:新建cannon類,將落點和棋子的原橫縱坐標及棋子執方存入。
判斷走棋規則是否合法。如果非法,輸出結果;
如果合法,
判斷起始點和落點之間間隔的子數,如果大于1,輸出相應結果
如果中間隔了一個棋子,判斷落點是否有子。如果落點沒有棋子,輸出結果。
如果落點有子,首先判斷是否為本方棋子,如果是本方棋子,輸出結果;否則,更新棋盤。如果吃掉的棋子為敵方將帥,則輸出結果勝利。執行步驟4
如果中間沒有棋子,判斷落點是否有子。如果落點沒有棋子,更新棋盤。如果落點有子,首先判斷是否為本方棋子,如果是本方棋子,輸出結果;否則,更新棋盤。如果吃掉的棋子為敵方將帥,則輸出結果勝利。執行步驟4
4.游戲結束,彈出對話框,選擇重新開始或再來一局。
5.聯機模式下,用戶創建房間,第二個用戶會自動搜尋第一個未滿的房間,來加入到游戲中。進入游戲后,通過比目提供的數據監聽,來對數據進行更新操作。當本方為黑時,下棋結束后將執方繼續置為黑,知道數據更新后才進行行棋操作。
3 電路調試與驗收
3.1 本次開發所用環境及工具
系統開發所使用的操作系統為:Windows10
開發工具[6]為:Android Studio
Java SDK版本:1.8.0.1610.12
Android版本:Android 9.0 API 28
AndroidManifest:minSdkVersion=15,targetSdkVersion=23
3.2 測試項目
(1)使用不同型號的安卓手機,系統是否能夠正常顯示和運行。
(2)系統能否正常連接數據庫,多用戶登錄,服務端會不會發生異常。
(3)能否正常實現用戶注冊和登錄,注冊信息是否被寫入到后端數據庫內的用戶表中。
(4)玩家的昵稱是否正確的顯示出來。
(5)各種棋子的判斷是否正確。
(6)當取消棋子時是否正確的取消棋子的選中,當取消后是否能正確的選擇下一個棋子。
(7)當選擇空位置時,是否正確的顯示提示信息。
(8)各種棋子的行棋規則是否正確的表現出來。
(9)能否正確的判斷是否對將。
(10)吃掉敵方將帥后是否正確的顯示游戲結束和勝利結果。
(11)游戲結束后彈出的對話框是否正確的顯示再來一局和返回,以及能否正確的進行下一步操作。
(12)數據是否能正確同步。
(13)修改各類個人信息后,是否正常更新了數據庫數據。
(14)一系列其它運行過程中的細節測試,包括UI界面的效果等。
3.3 測試結果
所測試項目均符合預期目標,并且APP在運行過程中并未出現任何異常,測試順利結束。
4 結束語
本文在熟練掌握中國象棋運行規則的前提下,在Android系統上開發了中國象棋游戲,界面簡潔,步驟易操作,實現了網絡人工對弈的效果,以后的設計中還可以引入人工智能等先進熱點技術,優化游戲算法,提示游戲性能。
【參考文獻】
[1]危春波.中國象棋博弈系統的研究與實現[D].昆明:昆明理工大學,2008.
[2]姚昱昱,劉衛國.Android的架構與應用開發研究[J].計算機系統應用,2008(11):110-112.
[3]徐心和,王驕.中國象棋計算機博弈關鍵技術分析[J].小型微型計算機系統,2006,27(6):961-969.
[4]杜幫國.基于Java平臺的中國象棋游戲的設計與實現[D].大連:大連理工大學,2013.
[5]胡偉.Android系統構架及其驅動研究[J].廣州:廣播電視大學學報,2008.8.
[6]趙燕萍.Java程序設計語言基礎研究[J].硅谷,2013(8): 61-62.