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