版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
西洋跳棋智能程序設計學院計算機學院專業(yè)計算機科學與技術班級學號姓名指導教師負責教師2016年6月摘要隨著社會發(fā)展,科技進步,電腦得以普及。電腦游戲伴隨著網(wǎng)絡和電腦的普及深深的吸引了很多玩家,特別是快節(jié)奏的生活,傳統(tǒng)的兩個人一張桌子的下棋方式逐漸被取締,人機對弈棋牌類電腦游戲被越來越多的人認可。西洋跳棋作為一款益智類棋牌游戲,不僅可以休閑娛樂,達到游戲自身放松的目的,同時,可以鍛煉玩家的思維能力。計算機博弈是非常實際的計算機科學與技術研究課題,也是非常富有挑戰(zhàn)性的人工智能領域的研究方向。西洋跳棋是一種平均分支因子較少的棋種,博弈樹算法可以得到很好地應用。本游戲是利用Qt開發(fā)工具與C++開發(fā)語言,利用搜索算法設計最優(yōu)落子的一款西洋跳棋人機博弈游戲。Qt是一個多平臺的C++圖形用戶界面應用程序框架,一種完全面向?qū)ο蟮牡某绦蜷_發(fā)軟件,具有很好地封裝機制、較高的模塊化程度和良好的應用性。C++是一種應用非常廣泛的面向?qū)ο蟮挠嬎銠C程序設計語言,利用C++語言在游戲中的編程,使得西洋跳棋游戲具有美觀的界面,人機對弈方面電腦具有較高的智商。本文主要是對西洋跳棋設計的詳細闡述,分別從軟件設計背景,需求分析,總體設計和詳細設計深入的介紹了軟件的開發(fā),并通過對軟件的調(diào)試分析詳細介紹了軟件的使用方法,同時,本文深入比較了多種搜素按算法在本設計中的應用。關鍵詞:西洋跳棋;人工智能;Qt;C++AbstractWiththedevelopmentofsocietyandtheprogressofscienceandtechnology,computerhasbeenpopularized.Computergameswiththepopularityofcomputernetworksanddeeplyattractedalotofplayers,especiallythefastpaceoflife,traditionaltwotablechesshasgraduallybeenbanned,man-machinechesschesscomputergameismoreandmorepeoplerecognized.Asapuzzlegameofchess,checkerscannotonlyentertainment,toachievethegoaloftheirgametorelax,atthesametime,youcanexerciseplayer'sthinkingability.Computergameisaverypracticalcomputerscienceandtechnologyresearch,isveryrichchallengeinthefieldofartificialintelligenceresearchdirection.Checkersisanaveragebranchingfactorlesschess,thegametreealgorithmcanbeappliedwell.ThegameisusingQtdevelopmenttoolsandC++programminglanguage,usingsearchalgorithmsforthedesignofoptimalLaziacheckershuman-computergame.QtisamultiplatformC++graphicaluserinterfaceapplicationprogramframework,afullyobject-orientedprogrammingsoftware,hasagoodencapsulationmechanismandhighdegreeofmodularizationandgoodapplicationofC++isakindofwidelyusedobjectorientedcomputerprogramminglanguage,usingC++languageingameprogramming,makescheckersgamewithbeautifulinterface,man-machinechesselectricbrainhasahigherIQ.Themainpurposeofthispaperistocheckersdesignareelaboratedindetail,respectively,fromthebackgroundofsoftwaredesign,demandanalysis,generaldesignanddetaileddesigndeeplyintroducedsoftwaredevelopment,andthroughthesoftwaredebuggingandanalysisoftheusageofthesoftwareareintroducedindetail.Atthesametime,thispaperwithvarioussearchelementaccordingtothealgorithminthedesignoftheapplication.Keywords:checkers;artificialintelligence;Qt;C++目錄TOC\t"標題_謝辭及參考文獻,1,標題_附錄,1,第2級標題,2,第3級標題,3,第1級標題,1"1前言 11.1研究背景 11.2國內(nèi)外研究狀況 11.3研究內(nèi)容 21.4課題意義 22需求分析及相關技術介紹 32.1軟件設計總體目標 32.2系統(tǒng)基本功能 32.3西洋跳棋游戲規(guī)則說明 42.4相關技術介紹 42.4.1Qt軟件簡介 42.4.2C++編程語言介紹 52.5系統(tǒng)技術需求 53系統(tǒng)分析及設計 63.1系統(tǒng)總體設計 63.1.1模塊化設計流程 63.1.2系統(tǒng)總體構成流程 63.2系統(tǒng)算法設計概述 73.3系統(tǒng)特點及功能結構 73.3.1系統(tǒng)特點 73.3.2功能結構 74詳細設計 94.1游戲界面模塊詳細設計 94.2棋盤設計模塊詳細設計 104.3人機博弈模塊設計詳細設計 124.3.1博弈樹算法設計 124.3.2局面評估設計 124.3.3走法生成 124.4游戲規(guī)則模塊詳細設計 144.5勝負判斷模塊詳細設計 155運行及調(diào)試 175.1開始界面調(diào)試情況 175.2棋盤初始化調(diào)試情況 175.3走棋調(diào)試 185.4勝負判斷調(diào)試 196總結 21參考文獻 22致謝 23前言研究背景西洋跳棋的起源無法追溯,根據(jù)大多數(shù)棋藝史家的考證,現(xiàn)在認為西洋跳棋起源于法國的南部地區(qū)。當今,例如國際象棋等游戲規(guī)則在西方已經(jīng)統(tǒng)一標準,擁有一套統(tǒng)一化的走棋規(guī)則,但西洋跳棋至根據(jù)地域不同今卻流傳著幾十種不同的游戲規(guī)則,例如波蘭跳棋、英國跳棋、中東跳棋等。西洋跳棋下棋過程特別注重玩家對整體棋局的掌控性。西洋跳棋玩法種類繁多,本次設計采用最通用的西洋跳棋規(guī)則。雙方輪流走子,玩家執(zhí)紅旗先行,人機輪流落子。規(guī)則規(guī)定:未成王的棋子只能沿斜線向?qū)Ψ阶笊匣蛘哂疑锨靶幸桓?該格空出沒有落子),且未成王的棋子只能前行不可后退。吃子時,對方的棋子在己方棋子斜對角格子的左上或者右上,且對方棋子左上或者右上格子沒有其他棋子。加冕成王,游戲在雙方底界設計了加冕線,當己方棋子到達對方底邊界時,加冕成王,王棋與未成網(wǎng)的棋子區(qū)別在于王棋可以后退。勝負判斷為兩種情況,當一方棋子數(shù)量為零時,判斷為對方游戲勝利;當雙方棋子都無法移動后,由局面評估給出勝利一方。國內(nèi)外研究狀況當今,西洋跳棋在流行5000年的歷史之后已經(jīng)被計算機完全攻破。多年來,西洋跳棋一直被眾多數(shù)學家、電腦學家和英國跳棋專家研究,取得了非常顯著的成功。早在1989年,喬納森·謝弗(JonathanSchaeffer)開始了西洋跳棋項目的研究,在1994年,謝弗的計算機程序已經(jīng)可以擊敗當時人類最頂尖的西洋跳棋大師。在之后的研究中,喬納森·謝弗聯(lián)手艾伯特大學的學者共同研究出西洋跳棋程序“奇努克”,被譽為當今世界無法被戰(zhàn)勝的跳棋程序。自1950年,香儂首次提出國際象棋解決方案揭開機器博弈發(fā)展序幕之后,諸多計算機愛好者和科學家在此領域不斷研究,在九十年代初期,計算機連續(xù)戰(zhàn)勝很多棋道大師,特別是1997年“深藍”戰(zhàn)勝世界棋王,人工智能在計算機博弈方面取得輝煌的成就。之后的研究中,相繼攻克中國象棋等眾多棋類。2016年3月谷歌AlphaGo與韓國與韓國棋手李世石進行的圍棋比賽中計算機以4:1戰(zhàn)勝對手獲得勝利,人工智能在下棋程序又一次重大進步。研究內(nèi)容西洋跳棋是一款規(guī)則簡單,易于上手的游戲,由于游戲的特性,可以提高玩家對全局的把握能力,并且可以提高玩家邏輯思維能力。本次設計研究內(nèi)容主要包括以下介個方面:游戲界面設計:游戲界面的設計風格直接影響到玩家對游戲的興趣,所以游戲界面設計在游戲設計中起到非常重要的作用,游戲界面設計主要為游戲開始界面。游戲棋盤設計:本游戲棋盤設計為標準西洋跳棋10*10的棋盤設計,棋盤中100個格子黑白分明落子明確,玩家可以很容易掌握棋盤。落子設計:落子設計分為玩家落子和電腦落子。玩家落子只需遵從游戲規(guī)則即可,電腦落子采用博弈樹搜索算法,尋找最優(yōu)落子方案。局面評估設計:局面評估采用分類加權計算雙方優(yōu)勢,最終判斷局面勝負情況。課題意義目前,市面上棋牌類游戲種類繁多,例如中國象棋、跳棋等棋類游戲版本眾多,但西洋跳棋游戲卻在棋牌類游戲中特別少見,特別是網(wǎng)絡上玩家可選擇的西洋跳棋游戲制作簡單,畫面粗糙,加上許多讓玩家不喜的廣告,很難滿足西洋跳棋愛好者的興趣。因此需要一款設計畫面精美,走棋風格合理的西洋跳棋程序來滿足西洋跳棋愛好者的興趣。本設計在過程中注重界面設計,Qt軟件獨特的界面設計功能在設計中可以為玩家設計出精美的界面,精美的開始界面有利于提高玩家的游戲樂趣。在游戲設計中,略高的電腦走法,使玩家不會感到枯燥,玩家在下棋過程中提高自身棋藝的同時,不僅可以起到放松的作用,還可以鍛煉玩家的邏輯思維能力和智力。需求分析及相關技術介紹軟件設計總體目標西洋跳棋是一款益智類人機對弈棋類游戲。本款軟件主要針對的用戶為西洋跳棋愛好者和初學者玩家,玩家在使用軟件過程中達到休閑娛樂,提高棋藝的目的。設計目標:第一,界面設計獨特新穎,輕松自然,可以吸引玩家,使玩家達到放松的目的;第二,游戲難度適中,電腦走棋算法合理,適合初級玩家使用,使玩家在使用過程中可以達到提高棋藝的目的,但游戲難度不會過大,不可以讓玩家使用過程中因游戲難度過高感到枯燥。系統(tǒng)基本功能本軟件使用對象為游戲玩家,以界面新穎,風格獨特,走棋合理的特點為主,軟件應包括游戲開始界面,棋盤,棋子,人機博弈,局面評估,勝負判斷等內(nèi)容,設計分為五個模塊:開設界面模塊:用戶進入游戲,首先是歡迎界面,既游戲開始界面,玩家點擊開始游戲按鈕,進入游戲。棋盤設計:玩家進入游戲后,生成初始棋盤,棋盤為10*10共一百個格子,棋盤設計格子為黑白兩色分別交錯排布,便與玩家區(qū)分,棋子設計要求與棋盤形成對比色彩,便于玩家操作。人機對弈模塊:本模塊為程序設計的核心模塊,玩家落子后,電腦根據(jù)搜索算法找到最優(yōu)落子方法,可與玩家進行對弈。下棋規(guī)則模塊:本模塊為西陽跳棋程序的基礎模塊,判斷落子地方和吃子情況。勝負判斷模塊:本模塊的目的是判斷游戲勝負。以上為游戲軟件主要功能設計,系統(tǒng)功能模塊如圖2.1所示軟件功能模塊圖西洋跳棋游戲規(guī)則說明游戲雙方輪流走棋。棋子為成為王棋前,棋子只能向左上角或者右上角且無人占據(jù)的格子斜走一格。吃子時,敵方的棋子必須在己方棋子的左上角或者右上角的格子,而且該敵方棋子對應的左上角或者右上角必須沒有棋子。當棋子到了對方底線,該棋子就可以加冕成王棋,王棋可以向后移動。若一個棋子可以吃棋,則必須吃子。若一方無法行走或者所有棋子均被吃,則該方算輸。相關技術介紹本軟件利用Qt5.2.0軟件編寫,編程語言為C++計算機編程語言編寫。Qt軟件簡介Qt是一個跨平臺的C++應用程序和圖形界面開發(fā)框架。于1991年由奇趣科技研發(fā),2007年之后,Qt跨平臺開發(fā)戰(zhàn)略得以迅速發(fā)展,現(xiàn)在廣泛用于圖形用戶界面程序開發(fā)。Qt的特點:優(yōu)良的跨平臺特性:Qt支持多平臺運行,在不同平臺下無需修改源代碼便可以生成特有的圖形界面風格。面向?qū)ο螅河捎赒t擁有非常良好的封裝機制,所以,Qt的模塊化程度較高,不同元件之間協(xié)同工作簡方便。豐富的應用程序接口(API):Qt擁有非常多的C++類。除此之外,Qt還擁有大量的開發(fā)文檔,支持XML技術。自Qt4.6之后Qt中引進QtQuick,開發(fā)人員與設計人員可以協(xié)同創(chuàng)建動畫模式界面和應用程序。Qt擁有簡單漂亮的界面,同時簡單易學并且資料豐富,實用性很強。C++編程語言介紹C++編程語言是一種面向?qū)ο蟮某绦蛟O計語言,是由C語言發(fā)展而來。C++繼承了C語言大部分特點,并在C語言的基礎上進行了完善,添加了類,C++能夠與C語言相互兼容。C++編程語言的優(yōu)勢:在高級語言中處理運行速度最快的面向?qū)ο蟪绦蛟O計語言,目前市面上大多數(shù)游戲軟件都是又C++來實現(xiàn)的。語言靈活,功能強大,特別是類層次結構的設計。C++標準定義細致,具有嚴謹、精確的特性,語法思路參差分明,語法結構明確。
系統(tǒng)技術需求本程序采用Qt開發(fā)環(huán)境,編程語言使用C++編程語言的西洋跳棋游戲。開發(fā)環(huán)境:QtCreator5.2.0運行環(huán)境:Windows7x64系統(tǒng)分析及設計本章內(nèi)容是在第二章的需求分析的基礎上形成的程序設計藍圖,作為后續(xù)編碼設計的依據(jù)。本章主要介紹了西洋跳棋程序開發(fā)的總體設計。系統(tǒng)總體設計模塊化設計流程根據(jù)需求分析,游戲設計需要六大模塊,每個模塊功能實現(xiàn)如下:開設界面模塊:設計開始界面。繪制棋盤與棋子設計設計模塊:繪制棋盤,設計棋子。人機對弈模塊:設計算法,實現(xiàn)人機對弈。下棋規(guī)則模塊:根據(jù)規(guī)則判斷落子地方和吃子情況。勝負判斷模塊:設計算法判斷游戲勝負。系統(tǒng)總體構成流程西洋跳棋博弈軟件構成如圖3.1所示西洋跳棋博弈軟件構成圖乙方為玩家,甲方為電腦。乙方遵循游戲規(guī)則落子,甲方通過對當前局面進行局面評估,然后進行博弈樹搜索算法進行搜索,形成當前最優(yōu)落子,生成走法并落子,甲、乙雙方落子后,當前局面在棋盤顯示,電腦循環(huán)對棋盤當前局面掃描,經(jīng)當前局面反饋給甲方機器博弈系統(tǒng),甲方重新進行局面評估,生成走法。系統(tǒng)算法設計概述西洋跳棋人機對弈模塊為系統(tǒng)的核心模塊,算法采用極大極小值算法,算法的本質(zhì)思想是:一方總是尋找對己方最有利的的走法,而另一方總是尋找對對方最不利的走法,其搜索樹如圖3.2所示圖3.2極大—極小搜索算法樹根據(jù)算法樹可知Min節(jié)點總是從其下一層Max中挑選估值最小的節(jié)點進行估值,Max節(jié)點剛好相反。在走棋過程中,遍歷整顆搜索樹,尋找對己方最有利的走法走子。系統(tǒng)特點及功能結構系統(tǒng)特點具有和諧的界面。界面設計美觀,簡潔。具有易操作性。本系統(tǒng)避免過多按鈕在游戲中給玩家?guī)淼牟槐?,設計簡單,已于操作。適用于廣大西洋跳棋愛好者,面向性廣闊。本系統(tǒng)是本地游戲,安全可靠功能結構通過上文需求分析和總體設計,本系統(tǒng)以5個模塊為目標設計。其中,下棋規(guī)則模塊為基礎,為玩家和電腦落子提供基礎規(guī)則,人機對弈模塊為系統(tǒng)核心,本次設計采用極大極小人機博弈搜索算法設計了合理的電腦落子算法,繪制棋盤模塊和勝負判斷模塊為本次設計的前提,為游戲的可行性提供保障,最后是游戲界面設計,為整體游戲進行美化。其具體模塊及主要功能結構圖如圖3.2所示西洋跳棋整體設計及主要功能結構圖詳細設計游戲界面模塊詳細設計為了使游戲界面美觀大方,從網(wǎng)絡上選取圖片,并用美圖秀秀軟件對所選圖片進行美圖修改,利用Qt庫自帶的paintEvent(QPaintEvent
*e)函數(shù)設計了游戲開始界面,開始界面采用綠色圖片作為背景圖片,一方面可以緩解玩家視覺疲勞,另一方面,背景顏色與開始游戲按鈕色彩區(qū)分明確,使整體設計達到簡單、美觀的效果。游戲界面模塊流程圖如圖4.1所示游戲界面模塊流程圖程序運行首先進入游戲開始界面,點擊開始游戲按鈕,將進入游戲。界面設計尺寸長為10cm,寬為8cm,并在界面中添加“開始游戲”按鈕,該按鈕有Qt編程工具中的界面布局工具完成,關鍵代碼如圖4.2所示界面設計模塊開始游戲按鈕添加關鍵程序通過界面背景設計和按鈕添加,開始界面模塊設計完成,開始界面模塊設計效果圖如圖4.3所示界面設計效果圖棋盤設計模塊詳細設計該模塊的主要功能是繪制棋盤和設計棋子,棋盤與棋子分為兩種狀態(tài),一種是初始化狀態(tài),當點擊開始游戲按鈕后,進入游戲,此時,棋盤顯示為初始化狀態(tài)。初始化狀態(tài)時,甲、乙雙方各持有15枚棋子處于雙方邊界。另一種狀態(tài)是走子或者吃子時,棋盤中棋子位置發(fā)生改變,甲、乙雙方輪流走子,每次走子之后都將跟新一遍棋盤。棋盤繪制與棋子設計模塊流程圖如圖4.4所示棋盤繪制與棋子設計模塊棋盤設計包括棋盤繪制和棋子設計在高性能的博弈設計中,比特棋盤應用較為廣泛,西洋跳棋智能程序設計也采用比特棋盤設計而成。棋盤設計了10*10共100個格子,其中50個格子用來落子,棋盤設計用4個64位無符號整型設計而成,如表4.2所示棋子位置與對應比特關系表494847464544434241403938373635343332313029282726252423222120191817161514131211109876543210由<黑棋,黑王棋,白棋,白王棋>四元素組生成棋盤,棋盤初始狀態(tài)為<0X0003FFFFC00000,0,0X000000000FFFFF,0>, 棋盤設計效果圖如圖4.2所示棋盤設計效果圖人機博弈模塊設計詳細設計博弈樹算法設計人機博弈模塊為本次設計核心模塊,而博弈樹算法為本次設計核心算法。該模塊設計主要目的是完成人機對弈過程。該過程設計核心算法為極大-極小搜索算法,算法的核心思想是,一方總是尋找對己方最有利的走法,另一方總是尋找對對方最不利的走法。在本次設計中,設計玩家為藍色方,電腦為紅色方,紅色方為極大方,博弈樹搜算算法設計的核心是紅方通過搜索算法和局面評估函數(shù)找到對自己最有利的走法。計算機走棋由函數(shù)computer_go()設計完成。局面評估設計西洋跳棋是零和游戲,局面評估影響因素眾多,本次設計主要對以下幾個方面進行評估,分別為棋子和王棋的數(shù)量,處于安全位置的棋子和王棋的數(shù)量(安全位置是指處于底邊或者邊界無法被對方吃子的位置),可以移動的棋子和王棋數(shù)量,還有防御棋子數(shù)量和進攻棋子數(shù)量。估值函數(shù)設計思路為:估值方法=電腦棋子數(shù)-選手棋子數(shù)-0.5*威脅棋子數(shù)(可能會被吃掉的棋子)估值函數(shù)最重要的任務是找到威脅棋子,在程序中由CalValue()函數(shù)設計完成。在設計中,函數(shù)InThreat()判斷該棋子是否有可能被對方棋子吃掉,判斷標準是對該棋子左上、右上、左下、右下分別判斷。函數(shù)InBoard()則判斷棋子當前位置是否處于邊界。走法生成普通棋子走法生成普通棋子走棋規(guī)則為棋子可沿對角線對方方向棋子周邊移動一個,移動方向的格子為空。遇到吃子時,被吃的棋子周圍有空格才可以吃子,其設計流程如下,普通棋子走棋流程圖如圖4.6所示若棋子列表不為空,則從棋子列表中取出一個棋子;對該棋子相鄰四個方向進行判斷,若存在對方棋子且對方棋子后方格子為空,則將該走法加入走法棧中,否則到第③步;若走法棧不為空,則從走法棧中取出一個走法;如果從棋子位置可以繼續(xù)吃子,則按照第②步繼續(xù)走子;否則若當前吃子數(shù)量大于最大吃子數(shù)量,則清空吃子走法列表;若當前吃子數(shù)量等于最大吃子數(shù)量,則將該走法加入走法列表;否則到第③步;若該走法最后一步落在加冕線上,則棋子加冕成王,否則到第①步;否則吃子走法終結普通棋子走法生成流程圖王棋走法生成王棋是由普通棋子到達加冕線轉換而來,因此王棋走法與普通棋子走法有部分相同,王棋走發(fā)生成流程圖如圖4.7所示,王棋走法流程如下,若棋子列表不為空,則從棋子列表中取出一個棋子;對該棋子相鄰四個方向進行判斷,若從在對方棋子且對方棋子為空,則將該走法加入走法棧中,將后面所有空格子走法加入走法棧中,否則到第④步;若走法棧不為空,則從走法棧中取出一個走法;如果從棋子位置可以繼續(xù)吃子,則按照第②步繼續(xù)走子;否則若當前吃子數(shù)量大于最大吃子數(shù)量,則清空吃子走法列表;否則若當前吃子數(shù)量等于最大吃子數(shù)量,則將該走法加入走法列表;否則到第④步;否則到第①步;否則吃子走法終結王棋走法生成流程圖游戲規(guī)則模塊詳細設計本模塊主要功能是實現(xiàn)游戲按照規(guī)則落子,西洋跳棋游戲規(guī)則為,游戲雙方輪流走棋。棋子為成為王棋前,棋子只能向左上角或者右上角且無人占據(jù)的格子斜走一格。吃子時,敵方的棋子必須在己方棋子的左上角或者右上角的格子,而且該敵方棋子對應的左上角或者右上角必須沒有棋子。當棋子到了對方底線,該棋子就可以加冕成王棋,王棋可以向后移動。若一個棋子可以吃棋,則必須吃子。若一方無法行走或者所有棋子均被吃,則該方算輸。游戲規(guī)則在程序中有函數(shù)CanMove()設計完成,普通走子規(guī)則由函數(shù)Computer_Can_Move()生成,普通棋子吃子規(guī)則由函數(shù)Computer_Can_Eat()設計完成。代碼if(_piece->GetStatus()!=piece::king)returnfalse;完成了普通棋子不能后退,王棋可以后退的游戲規(guī)則。游戲規(guī)則模塊流程圖如圖4.8所示游戲規(guī)則模塊流程勝負判斷模塊詳細設計本模塊設計主要是在游戲結束后判斷玩家和電腦的勝負情況。勝負判斷有兩種情況,一種是一方無法走棋,則該方判定為輸,另一種是一方在棋盤中棋子數(shù)目為零。勝負判斷流程圖如下圖4.8所示勝負判斷模塊流程圖雙方輪流落子之后,每次落子都會更新棋盤,根據(jù)流程圖設計,首先由系統(tǒng)判定游戲是否結束,在程序設計中,游戲是否結束設計函數(shù)GameOver()判定,判定標準為一方棋子數(shù)目為零或者無法走子,判定游戲結束之后,判定玩家和電腦的贏家。程序中函數(shù)IsHostWin()判定電腦是否取得勝利,玩家勝負判定由函IsAwayWin()設計,評定流程與計算機是否勝利流程相同,判定條件為客隊棋子是否可以移動,計算機判定勝利過程流程圖如圖4.9所示 計算機勝負判定流程圖運行及調(diào)試開始界面調(diào)試情況程序運行,進入游戲開始界面,如圖5.1所示游戲開始界面運行情況說明:程序運行,進入游戲開始界面,界面畫質(zhì)清楚,點擊開始游戲按鈕,進入游戲良好。棋盤初始化調(diào)試情況游戲開始,進入游戲,此時棋盤為初始化狀態(tài),如圖5.2所示棋盤初始化界面運行情況說明:棋盤初始化狀態(tài)良好,按照詳細設計,棋盤為10*10共100個棋格,棋盤底色為黑白兩色,雙方各15個棋子排布在雙方底界。棋子與棋盤顏色分明。走棋調(diào)試玩家執(zhí)藍旗現(xiàn)行,電腦后手,走子按照規(guī)則沿斜對角線方向現(xiàn)行,每次移動一個棋子,可吃子,運行結果如圖5.3,5.4所示普通棋子走棋圖王棋走子運行圖運行情況說明:普通棋子走棋良好,遇到可吃棋子自動吃子,普通棋子到對方底線變成王棋,王棋走子狀況良好,測試表如表5.1所示表5.1走棋測試表步驟測試描述預期結果測試結果1玩家先手走子,電腦后手輪流走棋輪流按照規(guī)則走子雙方輪流走自,可按規(guī)則走子2遇到可吃子必須吃子雙方均在可吃子時吃子雙方可按規(guī)則吃子3棋子到對方底線加冕成王棋普通棋子變成王棋普通棋子變成王棋4王棋吃子王棋按照規(guī)則吃子王棋按規(guī)則吃子勝負判斷調(diào)試當一方棋子為零或一方無棋可走時,系統(tǒng)判斷勝負并作出評斷。一方棋子數(shù)目為零時系統(tǒng)做出評判如圖所5.5所示一方棋子數(shù)目為零系統(tǒng)做出勝負評判當一方無法走棋時,電腦做出勝負判斷如圖5.6所示一方無法走棋時系統(tǒng)做出勝負評判圖運行結果說明:當一方棋子為零或者無棋可走時,系統(tǒng)做出勝負評判并作出提示,運行狀況穩(wěn)定??偨Y本章主要內(nèi)容是對西洋跳棋智能程序設計的總結。本次設計應用C++編程語言,在Qt開發(fā)平臺設計編寫,完成了游戲開始界面設計、棋盤繪制、棋子走法生成、勝負判斷等項目,設計完成的西洋跳棋智能程序界面精美,走棋合理,操作簡單,符合本次設計要求。項目優(yōu)勢:優(yōu)良的游戲界面。與網(wǎng)絡上流傳的西洋跳棋程序比較,本次設計擁有精美的界面設計,開始界面簡單易用,避免了玩家錯誤點擊導致無法運行的難題,同時棋盤棋子設計風格獨特黑白底色的棋盤設計,玩家可以清楚的思考下一步走棋,紅色與藍色棋子色彩分明,玩家在走棋過程中能夠清楚看清自己的棋子位置,便于掌控全局。棋盤與棋子形成強烈的色彩感,可吸引玩家。合理的走棋算法。本次設計采用經(jīng)典的極大—極小搜算算法設計,在設計過程中,難度適中。設計中,較高的電腦棋藝水平可以提高玩家的棋藝水平,游戲設置水平適中,玩家在娛樂中不會感到枯燥。項目不足:游戲設計中,注重走棋的設計,對娛樂性設計不足,缺少一些音樂文等娛樂項目。無法人人對戰(zhàn),按照設計要求,本次設計是人機對弈,在設計過程中,沒有設計人人對弈模式,整體游戲有所欠缺。本次畢業(yè)設計過程中,出現(xiàn)了很多問題,是對平時學習能力欠缺最直觀的反映,在設計中,通過多方面的學習,完善了之前學習的不足,同時,設計中要求的Qt軟件在此之前沒有使用過,通過本次設計,學會了使用新的工具。在設計中,不僅學到了許多技術,同時不斷克服自身不夠嚴謹?shù)膽B(tài)度,收益良多。參考文獻譚浩強.Java語言程序設計(第三版)[M].北京:清華大學出版社,2008焦尚斌,劉丁.博弈樹置換表啟發(fā)式算法研究[J].計算機工程應用,2010(06)王嬌,徐興和.計算機博弈:人工智能的前沿領域—全國大學生計算機博弈大賽[J].計算機教育.2012(07)張利群.五道棋計算機博弈程序設計[J].計算機工程.2010(10)李天明.并行計算機博弈系統(tǒng)設計與改進[J].電子制作.2014(21)張穎,李祖樞.棋類計算機博弈系統(tǒng)的主要研究方法及在6子棋上的應用[J].重慶工學院學報(自然科學版).2008(09)MustaphaLakrib,TewfikSari.
Timeaveragingforordinarydifferentialequationsandretardedfunctionaldifferentialequations[J].
ElectronicJournalofDifferentialEquations,2010,2010(40,).MerrickJ.DeWitt,BradleyS.Prall,RobertJ.Levis.
Orientationalaveragingintheintensefieldtunnelionizationofmolecules[J].
TheJournalofChe
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 消防設施招投標合同
- 大型場館建設合同樣式
- 食品加工三方施工合同
- 機場VIP室花卉租用協(xié)議
- 劇院清潔工招聘協(xié)議書
- 兒童玩具專賣店裝修施工合同
- 游艇碼頭建造師合同模板
- 豪華郵輪廚師長聘用合同
- 地鐵站雨污治理工程協(xié)議
- 服裝店財務人員勞動合同
- 孕期常見癥狀及處理課件
- 網(wǎng)絡信息安全工程師招聘面試題及回答建議(某大型國企)2025年
- 《2025酒店預算的進與退》
- 肺癌的介入治療護理
- 民辦學校教職工入職背景審查制度
- 軟件驗收合同范本(2篇)
- 立式儲罐課課程設計
- 2024年區(qū)第三期機關、事業(yè)單位公開選調(diào)工作人員考試題及答案
- 珠寶玉石鑒定學習通超星期末考試答案章節(jié)答案2024年
- 管理學(A)(2022-2023-1學期)學習通超星期末考試答案章節(jié)答案2024年
- 11.5 歌曲《賣報歌》課件(14張)
評論
0/150
提交評論