王晨+丁濛
摘 要: 本系統(tǒng)以亞馬遜棋游戲作為研究對(duì)象,在Windows平臺(tái)下,運(yùn)用QT語(yǔ)言編寫代碼實(shí)現(xiàn)了一個(gè)具有智能、個(gè)性化的人機(jī)和人人亞馬遜棋博弈系統(tǒng)。該系統(tǒng)的界面設(shè)計(jì)采用卡通的像素風(fēng)格,除了具有常規(guī)的菜單界面、游戲?qū)?zhàn)界面外,還設(shè)置了行棋記錄、悔棋位置顯示、棋子運(yùn)動(dòng)動(dòng)畫顯示等界面,實(shí)現(xiàn)了用戶可根據(jù)自己的愛好調(diào)節(jié)背景音樂、效果音樂音量大小等功能。實(shí)驗(yàn)表明該系統(tǒng)是可行并有效的。
關(guān)鍵詞: 個(gè)性化;亞馬遜棋;界面設(shè)計(jì);計(jì)算機(jī)博弈
中圖分類號(hào):TP391
文獻(xiàn)標(biāo)志碼:A
文章編號(hào):2095-2163(2017)02-0078-03
Abstract:In this system, the Amazon game is the object of study. Under the platform of Windows,the QT language code is used to realize an intelligent and individualized human-computer and person-person Amazon game system. The interface design of the system adopts the cartoon pixel style. Besides the conventional menu interface and game interface, it also sets the interface of row chess record, regret chess position display and chess movement animation display. Users are able to adjust the background music and volume of the effect music. Experiments contend that the system is feasible and effective.
Keywords:individuation;game of Amazon; interface design; computer game
0 引 言
計(jì)算機(jī)博弈是人工智能一個(gè)傳統(tǒng)而重要的研究領(lǐng)域?,F(xiàn)今以計(jì)算機(jī)博弈為代表的人工智能技術(shù)在計(jì)算機(jī)游戲中的應(yīng)用,極大地提高了游戲的娛樂性,已然成為計(jì)算機(jī)游戲品級(jí)確認(rèn)的核心保障。計(jì)算機(jī)博弈系統(tǒng)的界面是系統(tǒng)的外在直觀表現(xiàn),是博弈軟件系統(tǒng)和玩家交流的門戶語(yǔ)言,所以系統(tǒng)界面設(shè)計(jì)在整個(gè)系統(tǒng)研發(fā)中發(fā)揮著舉足輕重的關(guān)鍵作用。
亞馬遜棋是由阿根廷沃爾特Zamkauskas 于1988年發(fā)明的雙人抽象策略游戲,是圈地游戲家族中的一員,同時(shí)與國(guó)際象棋也形同遠(yuǎn)親。亞馬遜棋[1]的棋盤由黑白相間的10*10的方格組成,雙方右下角為白色格子。棋子每方有4個(gè)棋子。時(shí)下通用的行棋規(guī)則為:
1)每個(gè)棋子都相當(dāng)于國(guó)際象棋中的皇后,其行棋方法與皇后相同,可以在8個(gè)方向(上、下、左、右、左上、左下、右上、右下)上任意行走,但不能穿過(guò)阻礙;
2)當(dāng)輪到一方行棋時(shí),此方只能、而且必須移動(dòng)4個(gè)Amazons中的一個(gè),并在移動(dòng)完成后,由當(dāng)前移動(dòng)的棋子釋放一個(gè)障礙,障礙的釋放方法與棋子的移動(dòng)方法相同(8個(gè)方向,但不能穿過(guò)障礙),同樣障礙的放置也是由規(guī)則內(nèi)部生成的;
3)當(dāng)某方完成某次移動(dòng)后,對(duì)方4個(gè)棋子均不能再移動(dòng)時(shí),對(duì)方將輸?shù)舯荣悾?/p>
4)每次開局位于棋盤下方的玩家將執(zhí)先手行棋;
5)整個(gè)比賽中,雙方均不能吃掉對(duì)方或己方的棋子或障礙。
亞馬遜棋不僅能增強(qiáng)思維能力,改善記憶力,而且富含哲理,有助于修身養(yǎng)性。亞馬遜棋游戲程序[2-3]的開發(fā)使得亞馬遜棋同款游戲得到了高效推廣及流行,也有越來(lái)越多的人開始喜愛并投身于這一游戲活動(dòng)中。但是,其界面設(shè)計(jì)在直觀視覺上卻顯得單調(diào)無(wú)趣、且呆板生硬,這樣就使玩家無(wú)法盡享棋局中的玄妙與樂趣。
基于此,本文設(shè)計(jì)開發(fā)了一個(gè)別樣的個(gè)性化亞馬遜棋游戲,目的是讓人們?cè)谟螒蛑邢硎芘c電腦激戰(zhàn)的樂趣,緩解身心疲勞,開發(fā)才智,從而大幅提升亞馬遜棋的大眾接受度及風(fēng)靡程度。
1 個(gè)性化亞馬遜棋游戲主界面設(shè)計(jì)
一個(gè)優(yōu)秀的游戲系統(tǒng)應(yīng)該展現(xiàn)一個(gè)令人賞心悅目的游戲界面,同時(shí)更要具備人性化特質(zhì),讓玩家操作起來(lái)倍感流暢且自然。本文亞馬遜棋界面采用卡通生動(dòng)的像素風(fēng)格,這樣當(dāng)玩家打開游戲之后,輕松感覺撲面而來(lái),能夠愜意地融入到這個(gè)游戲的氛圍中來(lái)。整個(gè)界面主要由2個(gè)模塊組成,分別是:左側(cè)的棋盤模塊、右側(cè)的菜單模塊,具體如圖1所示。在此,則將對(duì)左、右側(cè)模塊的功能設(shè)計(jì)給出如下闡釋解析。
1.1 棋盤模塊
棋盤模塊(chesswidget)是該游戲的主體模塊。本文棋盤使用QT中QPaintEvent繪圖事件來(lái)實(shí)現(xiàn),這樣當(dāng)玩家執(zhí)行了某一操作后,系統(tǒng)可以即時(shí)改變游戲中的元素。為了讓界面看起來(lái)簡(jiǎn)約清新并且棋盤劃分清晰,棋盤的背景主要是由3個(gè)圖片拼接而成,視覺呈現(xiàn)則如圖2所示。
在960*960像素的界面中,每80*80像素對(duì)應(yīng)著一個(gè)位置,在二維數(shù)組中正好是12*12,數(shù)組中不同的數(shù)字代表不同的物件,例如1是紅色棋子,2是藍(lán)色棋子,等等……。各種圖片由QPixmap組件來(lái)裝載,隨著游戲的進(jìn)展,圖片也會(huì)隨著數(shù)組中值的不同而發(fā)生改變。為了讓用戶更為直接地感受到棋子狀態(tài)的變化,本程序總共用11個(gè)不同圖片來(lái)表示棋子和障礙,并且使用侵略性更強(qiáng)的紅色代表先手方,用偏沉穩(wěn)一些的藍(lán)色代表后手方,詳情如圖3所示。
另外,考慮到用戶可能會(huì)因?yàn)檫吔绮磺鍖?dǎo)致誤操作,本程序在用戶操作棋盤時(shí)將鼠標(biāo)改為黑色方框如圖4所示,與此同時(shí)方框上下左右對(duì)準(zhǔn)的坐標(biāo)元素會(huì)特別加重顯示,設(shè)計(jì)細(xì)節(jié)可見于圖5,這樣即可使用戶知道光標(biāo)的所在位置,實(shí)現(xiàn)方法是先在移動(dòng)事件中獲取當(dāng)前鼠標(biāo)位置,通過(guò)計(jì)算找到上下左右四個(gè)字符數(shù)字組件,而后將關(guān)聯(lián)圖片做出指定改變。
1.2 菜單模塊
游戲過(guò)程中,用戶可能會(huì)想看到自己或?qū)κ值男衅逵涗?,或者重新開始游戲等等,添加這個(gè)模塊的目的是讓該游戲系統(tǒng)功能更趨完善,并主要由5個(gè)按鈕集結(jié)構(gòu)成,分別為:開始游戲、游戲記錄、悔棋、選項(xiàng)、展開菜單。其中,開始按鈕設(shè)計(jì)提供了系統(tǒng)狀態(tài)的總體控制,也就是:?jiǎn)稳擞螒?、雙人游戲和歡迎界面間的切換均由其實(shí)施選擇操縱。
在游戲過(guò)程中,如果菜單界面始終前置,勢(shì)必會(huì)在視覺上對(duì)玩家造成影響,所以引入展開菜單按鈕即是旨在當(dāng)需要時(shí)實(shí)現(xiàn)菜單隱藏。同時(shí),聲音調(diào)節(jié)也至關(guān)重要,選項(xiàng)按鈕可以用來(lái)調(diào)節(jié)音量的大小,用格子填充的形式可以使調(diào)節(jié)過(guò)程顯現(xiàn)生動(dòng)視覺效果,用QMediaPlayer中的setmedia函數(shù)可以開發(fā)生成這一功能。在細(xì)節(jié)上,為了使用戶感受到按鈕是“活”的,當(dāng)鼠標(biāo)移動(dòng)到按鈕上時(shí),按鈕組件的圖片會(huì)發(fā)生改變,點(diǎn)擊之后又會(huì)有不同變換,這是通過(guò)QT中的MouseMoveEvent()來(lái)支持獲得的,系統(tǒng)會(huì)接收光標(biāo)的位置,當(dāng)位置到達(dá)按鈕范圍內(nèi)時(shí),通過(guò)邏輯選擇啟動(dòng)函數(shù)。
2 個(gè)性化亞馬遜棋游戲子界面設(shè)計(jì)
為了讓用戶更多地融入并享受游戲過(guò)程,一些重點(diǎn)細(xì)節(jié)上的功能研發(fā)是必不可少的,為此本系統(tǒng)加入了記錄模塊和提示信息模塊。詳情論述闡析如下。
2.1 記錄模塊設(shè)計(jì)
棋類游戲功能運(yùn)行的控制關(guān)鍵就是記錄,用戶可以看到自己和對(duì)手的行棋記錄,在這個(gè)窗口中將會(huì)顯示出從游戲開始以來(lái)所有的行棋步驟。記錄方式是根據(jù)橫向坐標(biāo)A-J,縱向坐標(biāo)1-10來(lái)設(shè)計(jì)展開的。這些記錄的來(lái)源是一個(gè)三維數(shù)組,三維數(shù)組用來(lái)存儲(chǔ)行棋步,行棋記錄處理即如圖6所示。
2.2 提示信息模塊設(shè)計(jì)
考慮到玩家想看到更詳細(xì)的行棋記錄,本系統(tǒng)加入了提示信息模塊。基于亞馬遜棋的特殊性,棋子移動(dòng)會(huì)有一些重復(fù)的位置,只有障礙的位置是不變的,因而本系統(tǒng)在設(shè)計(jì)給出的提示信息模塊中就可以看到所有之前施放過(guò)的障礙,再通過(guò)點(diǎn)擊其中的某一個(gè)障礙,玩家就會(huì)看到曾經(jīng)施放此障礙的完整過(guò)程,這種可視化的方式明顯便于玩家觀察行棋記錄。
除上面論及的功能之外,信息模塊還提供一些行棋過(guò)程中的提示信息,顯示棋子下一步可移動(dòng)位置:當(dāng)光標(biāo)點(diǎn)擊或者指定至可以移動(dòng)的棋子時(shí),在棋盤可以顯示出其能夠移動(dòng)到的位置,效果展示如圖7所示。在激活這個(gè)功能之后,光標(biāo)在這些位置上移動(dòng)時(shí)將會(huì)顯示出路徑,其風(fēng)格設(shè)計(jì)模式則如圖8所示,這樣可以方便玩家觀察能移動(dòng)到的位置,實(shí)現(xiàn)方法是通過(guò)調(diào)用規(guī)則算法來(lái)篩選這些一步能走到且中間無(wú)障礙的點(diǎn)。如果悔棋的位置不能在界面上形成標(biāo)識(shí),就可能給玩家制造現(xiàn)實(shí)繁瑣,所以模塊的另一個(gè)功能:顯示悔棋的點(diǎn)。在鼠標(biāo)移動(dòng)到悔棋按鈕之上時(shí),顯示可悔棋的點(diǎn)。若在雙人游戲中,顯示的是上一步棋(包括初始點(diǎn)、落棋點(diǎn)、落障礙點(diǎn));若在單人游戲中,顯示的就是雙方上一步的位置。單雙人視景影像的不同主要是考慮到單人游戲只悔一步的話是沒有意義的。
3 結(jié)束語(yǔ)
亞馬遜棋計(jì)算機(jī)博弈系統(tǒng)的研究還在不斷發(fā)展中,本文給出一種個(gè)性化亞馬遜棋博弈游戲系統(tǒng)的設(shè)計(jì)思想,同時(shí)提供一些獨(dú)特的功能設(shè)計(jì),進(jìn)而開發(fā)論述了系統(tǒng)中重點(diǎn)模塊的設(shè)計(jì)與實(shí)現(xiàn)方法。亞馬遜棋博弈程序的研究,不但會(huì)給計(jì)算機(jī)博弈帶來(lái)有益推動(dòng),甚至在一定程度必將給整個(gè)人工智能領(lǐng)域構(gòu)迼、并開啟新的進(jìn)程及方向。
參考文獻(xiàn):
[1]Technical Committee of Computer Games, Chinese Association for Artificial Intelligence. University Computer Games Championship & National Computer Games Tournament[EB/OL].[2016-11-21].http://www.caaigames.net/.
[2] 王靜文,吳曉藝. 全國(guó)大學(xué)生計(jì)算機(jī)博弈大賽培訓(xùn)教程[M]. 北京:清華大學(xué)出版社,2013:1-161.
[3] 郭琴琴,李淑琴,包華. 亞馬遜棋機(jī)器博弈系統(tǒng)中評(píng)估函數(shù)的研究[J]. 計(jì)算機(jī)工程與應(yīng)用,2012,48(34):50-54,87.