蔣志鳳,徐家磊
(湖南科技學(xué)院智能制造學(xué)院,湖南 永州 425199)
中國象棋發(fā)展到今天,已有近兩千年的歷史。隨著信息技術(shù)的發(fā)展,棋牌對弈類游戲因其優(yōu)良的娛樂性、智慧性和方便性深受大眾喜愛[1]。2017年4月9日,象棋國際發(fā)展研討會(huì)在成都職業(yè)技術(shù)學(xué)院(成都棋藝學(xué)院)舉行,陳澤蘭在會(huì)上指出:“目前是智力運(yùn)動(dòng)發(fā)展的一個(gè)關(guān)鍵時(shí)期,如何在這個(gè)重要的戰(zhàn)略機(jī)遇期,做好象棋運(yùn)動(dòng)的國際推廣,實(shí)現(xiàn)從民族到世界的跨越,是象棋運(yùn)動(dòng)發(fā)展面臨的一個(gè)重大挑戰(zhàn)”。針對目前市面上的象棋游戲在不能悔棋,不能認(rèn)輸?shù)扔螒蚬δ芊矫嬗写齼?yōu)化,本文基于Linux操作系統(tǒng)設(shè)計(jì)了一款象棋游戲,優(yōu)化了象棋游戲中的一些功能。
帥(將):可以走任意位置,每次只能移動(dòng)一格,能翻蓋出現(xiàn)在任意位置,作為最強(qiáng)大的兵種,只能被小兵吃掉,其他棋子都不是對手,可以被炮隔子吃掉。
士(仕):作為帥將的門前護(hù)衛(wèi),精通十八般武藝,排行第二,除了敵方老將之外的棋子,在他旁邊都只能被他吃掉,同樣炮可以隔子吃掉它。
相(象):保衛(wèi)國家的一把手,排名第三,除了士和將不能被吃掉,其他兵種都不是他的對手,每次只能移動(dòng)一個(gè)方格,可以被炮隔子跳吃。
馬:排名第四,每次只能移動(dòng)一個(gè)方格,可以干掉敵方車、兵、炮,但是遇到炮隔子跳,也是無濟(jì)于事,只能任人宰割。
車:排名第五,可以吃掉敵方的炮和兵,不能盲吃,每次只能走動(dòng)方格一步,遇到炮的隔子跳,無濟(jì)于事,只能被吃掉。
炮:最特殊的一個(gè)棋子,因?yàn)樗某霈F(xiàn),游戲的趣味性才能出來,第一個(gè)技能就是盲打,可以在他被翻出來之后,盲打其他棋子,盡管是不知道這個(gè)棋子是啥,不論是自己方的棋子,還是敵方的棋子,都會(huì)被清除場外;第二個(gè)技能,只要兩點(diǎn)中間存一顆棋子,炮可以吃掉任意棋子,所以他很需要其他的棋子的配合;第三個(gè)技能,他不像其他棋子一樣,每次只能移動(dòng)一個(gè)小格,他可以做到橫沖直撞,橫縱方向只要中間沒有棋子,可以移動(dòng)到任何位置。
兵(卒):它存在的目的只有一個(gè),那就是吃掉對方的將帥。每次只能移動(dòng)一個(gè)小方格[2]。
棋子的移動(dòng)規(guī)則以“卒”、“炮”為例。如圖1是卒(兵)的行走軌跡圖,每次行動(dòng)只能移動(dòng)一個(gè)方格。首先注意的是,兵在過河前只能往前行走,也就是只能挺身往敵方敵營前進(jìn),過河間之后,將帥對他的控制相對變小,他開始可以往兩邊慢慢行走,但是本著殺敵的信念,他只能往前,不能退后,永遠(yuǎn)做最勇敢的那一個(gè)小兵,每次行走之前需要判斷,行走的位置是否存在自己的軍友。圖2是炮的行走軌跡圖,可以橫縱方向行走多個(gè)方格,當(dāng)行走的終點(diǎn)沒有棋子時(shí),可以移動(dòng)到指定位置。他不能直接吃掉敵方的棋子,如果想吃掉敵方棋子,需要借助其他棋子的幫助,必須在炮和敵方棋子之間存在任意一顆棋子,也僅僅只能是一顆棋子,當(dāng)然他不能斜著走動(dòng)。
圖1 卒(兵)行走軌跡圖圖2 炮行走軌跡圖
1.3 系統(tǒng)總流程
圖3 游戲總體設(shè)計(jì)流程圖
如圖3所示,整個(gè)游戲一共分為兩個(gè)模式:一個(gè)是傳統(tǒng)模式,一個(gè)是娛樂模式。從游戲主菜單界面,選擇模式開始分為兩條通路。傳統(tǒng)模式下,玩家雙方對戰(zhàn),通過玩家的聰明才智,利用每個(gè)棋子的靈活變換,達(dá)到將對方將死的狀態(tài),玩家獲得勝利。在中途下錯(cuò)了,也可以選擇悔棋,但是不能一直悔棋,只能悔棋一步,然后覺得自己沒有勝算了,可以選擇認(rèn)輸或者重新開始游戲。娛樂模式下,每個(gè)棋子都是背面朝上的,通過玩家的點(diǎn)擊,翻開棋子,隨機(jī)出現(xiàn)棋子,通過翻開的棋子吃掉對方的棋子,直到最后把某一方的棋子全部吃完后獲得勝利[3]。
如圖4所示,本系統(tǒng)設(shè)計(jì)共分為四個(gè)模塊:圖片解析映射模塊,傳統(tǒng)模式模塊,娛樂模式模塊,觸摸屏解析模塊。圖片解析模塊負(fù)責(zé)分析出所有使用的圖片的像素點(diǎn),傳統(tǒng)模式模塊負(fù)責(zé)傳統(tǒng)模式的游戲運(yùn)行,娛樂模式模塊負(fù)責(zé)娛樂模式的游戲運(yùn)行,觸摸屏解析模塊負(fù)責(zé)手指點(diǎn)擊屏幕的位置獲取[4-5]。
圖4 總體模塊圖
1.5 軟件測試
圖5 游戲界面圖
圖5是傳統(tǒng)模式的游戲界面圖。點(diǎn)擊棋子,然后控制棋子吃掉對面棋子,其中返回主菜單可以回到游戲主界面;點(diǎn)擊悔棋,可以回到上一步;點(diǎn)擊認(rèn)輸,直接顯示對手獲勝。中間的紅方走棋表示輪到紅方走子。通過測試,驗(yàn)證了本設(shè)計(jì)的功能實(shí)現(xiàn),展示了關(guān)于游戲的界面圖。兩個(gè)模式下的界面圖,解析每個(gè)模式中的每個(gè)按鍵的作用;驗(yàn)證傳統(tǒng)模式的被將軍,悔棋等功能,驗(yàn)證關(guān)于傳統(tǒng)模式和娛樂模式的勝利判斷功能。
本文基于Linux設(shè)計(jì)了一款象棋游戲,該設(shè)計(jì)主要包括圖片解析模塊、傳統(tǒng)模式實(shí)現(xiàn)模塊、娛樂模式實(shí)現(xiàn)模塊、觸摸屏解析模塊等四個(gè)部分。本設(shè)計(jì)在實(shí)現(xiàn)了基本的游戲功能之外,還增加了悔棋,退出游戲回到主菜單,認(rèn)輸?shù)裙δ?。在傳統(tǒng)玩法的基礎(chǔ)上增加了一些更有趣的娛樂玩法。