一、華容道游戲簡(jiǎn)介
華容道,古老的中國(guó)游戲,以其變化多端、百玩不厭的特點(diǎn)與魔方、獨(dú)立鉆石棋一起被國(guó)外智力專家并稱為“智力游戲界的三個(gè)不可思議”。它與七巧板、九連環(huán)等中國(guó)傳統(tǒng)益智玩具還有個(gè)代名詞叫作“中國(guó)的難題”。華容道游戲取自著名的三國(guó)故事,曹操在赤壁大戰(zhàn)中被劉備和孫權(quán)的“苦肉計(jì)”、“火燒連營(yíng)”打敗,被迫退逃到華容道,又遇上諸葛亮的伏兵,關(guān)羽為了報(bào)答曹操對(duì)他的恩情,明逼實(shí)讓,終于幫助曹操逃出了華容道。游戲就是依照“曹瞞兵敗走華容,正與關(guān)公狹路逢。只為當(dāng)初恩義重,放開金鎖走蛟龍”這一故事情節(jié),通過(guò)移動(dòng)各個(gè)棋子,幫助曹操?gòu)某跏嘉恢靡频狡灞P最下方中部,從出口逃走。不允許跨越棋子,還要設(shè)法用最少的步數(shù)把曹操移到出口。曹操逃出華容道的最大障礙是關(guān)羽,關(guān)羽立馬華容道,一夫當(dāng)關(guān),萬(wàn)夫莫開。關(guān)羽與曹操當(dāng)然是解開這一游戲的關(guān)鍵。四個(gè)劉備軍兵是最靈活的,也最容易對(duì)付,如何發(fā)揮他們的作用也要充分考慮周全?!叭A容道”有一個(gè)帶二十個(gè)小方格的棋盤,代表華容道。棋盤下方有一個(gè)兩方格邊長(zhǎng)的出口,是供曹操逃走的。棋盤上共擺有十個(gè)大小不一樣的棋子,它們分別代表曹操、張飛、趙云、馬超、黃忠和關(guān)羽,還有四個(gè)卒。“華容道”有幾十種布陣方法,如“橫刀立馬”、“近在咫尺”、“過(guò)五關(guān)”、“水泄不通”、“小燕出巢”等等玩法。棋盤上僅有兩個(gè)小方格空著,玩法就是通過(guò)這兩個(gè)空格移動(dòng)棋子,用最少的步數(shù)把曹操移出華容道。
很小的時(shí)候就用父親的手機(jī)玩過(guò)這個(gè)游戲,記得當(dāng)時(shí)用了好久才過(guò)得去一關(guān),現(xiàn)在同樣覺得真的挺難的一個(gè)游戲。
但當(dāng)時(shí)卻玩的不亦樂(lè)乎,因?yàn)椴]有別的游戲可以選擇,記得當(dāng)時(shí)就覺得這個(gè)游戲的人物角色太丑了,讓我這個(gè)三國(guó)迷無(wú)法忍受。沒想到好多年后的今年終于可以自己做出這個(gè)簡(jiǎn)單的小游戲,把每個(gè)角色定義成自己喜歡的樣子,也算是圓了小時(shí)候的一個(gè)夢(mèng)想。
程序主要由一個(gè)框架類和功能類構(gòu)成。
框架類構(gòu)造游戲主窗口,游戲頁(yè)面七大操作按鈕和十個(gè)游戲角色的創(chuàng)建和初始化,以及地圖的構(gòu)建
功能類包括鼠標(biāo)操作方法和鍵盤操作方法的添加,以及人物角色移動(dòng)方法的具體實(shí)現(xiàn)
算法主要體現(xiàn)在人物的移動(dòng)上。主要是操作方式,鼠標(biāo)和鍵盤都可進(jìn)行操作,由用戶進(jìn)行選擇使用哪種方式來(lái)進(jìn)行游戲。
組件調(diào)用getBounds()方法可以返回一個(gè)和自己大小相等,位置相同的Rectangle對(duì)象,但Rectangle沒有可視的外觀,僅封裝組件的位置和大小,因此可以用組件返回的Rectangle對(duì)象判斷位置和大小信息,檢查移動(dòng)后的Rectangle對(duì)象和其他組件的是否相交即可。
若選擇鍵盤,初始給特定一個(gè)小兵一個(gè)焦點(diǎn),即從它開始進(jìn)行移動(dòng),若玩家按下某方向鍵,當(dāng)前小兵需要往某方向移動(dòng)但是它不能往某方向移動(dòng)(在邊界處或者被其他人物阻擋),則選擇當(dāng)前可以往該方向移動(dòng)的角色進(jìn)行移動(dòng)。
算法具體實(shí)現(xiàn):遍歷每一個(gè)角色,若當(dāng)前角色可以執(zhí)行該操作,用當(dāng)前角色進(jìn)行該操作。
用事先寫好的goc方法判斷其是否可以移動(dòng)。
goc方法為boolen類型方法,Return True or False,表示當(dāng)前角色是否可進(jìn)行移動(dòng)。
精確操作:鍵盤操作模式下,先用鼠標(biāo)點(diǎn)擊某個(gè)角色(鼠標(biāo)點(diǎn)擊即可給當(dāng)前用戶得到焦點(diǎn)),然后使用方向鍵進(jìn)行移動(dòng)。
