freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

中國象棋游戲的的設(shè)計(jì)和實(shí)現(xiàn)-免費(fèi)閱讀

2025-07-23 20:09 上一頁面

下一頁面
  

【正文】 *兵(卒):兵(卒)在未過河前,只能向前一步步走,過河以后,除不能后退外,允許左右移動(dòng),但也只能一次一步。它的走法是每次循對(duì)角線走兩格,俗稱’象走田‘。雙方各走一著,稱為一個(gè)回合。在悔棋中主要完成了以下任務(wù):;,以供還原所用;,恢復(fù)到當(dāng)前局面,然后將其從隊(duì)列中剔除掉;列,以供還原所用。然而,在編寫自己的程序時(shí)一來考慮到程序的可讀性和不易出錯(cuò)性,二來考慮到對(duì)當(dāng)今的計(jì)算機(jī)的配置來說這點(diǎn)開銷基本上不會(huì)對(duì)程序的效率產(chǎn)生什么影響。在控件屬性里選擇Vertical Scroll,使得列表框可垂直滾動(dòng)以顯示最新的著法名稱。為了獲得該著法名稱,寫了一個(gè)六百余行的函數(shù)。線程函數(shù)的內(nèi)容即為新線程所要執(zhí)行的內(nèi)容,線程函數(shù)執(zhí)行完畢,新線程結(jié)束(自動(dòng)銷毀)。以上三部分并非界面程序的全部,而僅僅是與程序密切相關(guān)的部分。三、走棋部分(用戶動(dòng)作響應(yīng)部分)為WM_LBUTTONDOWN消息添加消息響應(yīng)事件,可得到如下函數(shù): void CCChessUIDlg::OnLButtonDown(UINT nFlags, CPoint point){……}當(dāng)用戶在窗口客戶區(qū)按下鼠標(biāo)左鍵時(shí),程序就會(huì)調(diào)用OnLButtonDown(UINT nFlags, CPoint point)函數(shù)來進(jìn)行響應(yīng)。包括對(duì)棋盤上的棋子位置進(jìn)行初始化(棋盤數(shù)組的初始化),對(duì)搜索深度、當(dāng)前走棋方標(biāo)志、棋局是否結(jié)束標(biāo)志等的初始化;對(duì)棋盤、棋子的貼圖位置(即棋盤、棋子在程序中實(shí)際顯示位置)的初始化;對(duì)程序輔助部分所用到的一些變量的初始化。當(dāng)實(shí)現(xiàn)了引擎部分的各要素時(shí),可先建了一個(gè)Win32控制臺(tái)項(xiàng)目,、調(diào)用搜索函數(shù)、顯示搜索結(jié)果,便可簡單的測(cè)試引擎了(采用輸入著法的起點(diǎn)坐標(biāo)和終點(diǎn)坐標(biāo)的方式來傳送用戶走棋的信息。——搜索部分。當(dāng)然,上述四條只是覆蓋了最常見的幾種情況,覆蓋并不全面。當(dāng)遍歷一遍棋盤之后,子力打分、控制區(qū)域打分和機(jī)動(dòng)性打分都可以完成,而關(guān)系表也可以填完。對(duì)于機(jī)動(dòng)性打分,需要求出各個(gè)子總共有多少種走法,然后根據(jù)各個(gè)子所不同的機(jī)動(dòng)性價(jià)值每多一種走法就加一次相應(yīng)的分?jǐn)?shù)。例如,沉底炮、過河卒、以及車占士角等都是較好的棋子位置狀態(tài),而窩心馬、將離開底線等則屬較差的棋子位置狀態(tài)。首先,先介紹一下在局面評(píng)估中需要考慮的因素?!皻v史啟發(fā)”(History Heuristic)就是建立在這樣一種觀點(diǎn)之上的。 //遞歸調(diào)用 UnmakeMove()。所以,你當(dāng)然不會(huì)選擇相應(yīng)的著法使得局面發(fā)展成為結(jié)點(diǎn)C。結(jié)點(diǎn)B的第一個(gè)子結(jié)點(diǎn)(從左到右算起)返回10,第二個(gè)子結(jié)點(diǎn)返回了5,第三個(gè)子結(jié)點(diǎn)返回了2。下面用圖來進(jìn)一步說明“樹的裁剪”。這是“最小最大”(Minimax)的基本思想?,F(xiàn)在讓計(jì)算機(jī)來下中國象棋,它應(yīng)當(dāng)選擇一步對(duì)它最有利的著法(最終導(dǎo)致它取勝的著法)。搜索算法的好壞直接影響著程序執(zhí)行的效率(從某種角度上,它影響著計(jì)算機(jī)的下棋水平。關(guān)于搜索層數(shù),設(shè)定為8,實(shí)際使用的是1到7(在界面中將其限定為1—7)。這里談到的“合法著法”包括以下幾點(diǎn): 各棋子按其行子規(guī)則行子。//起始位置 CHESSMANPOS To。 x=B_END)//判斷某個(gè)棋子是不是黑色define IsRed(x) (x=R_BEGIN amp。所謂讀懂,即計(jì)算機(jī)應(yīng)該能夠清楚地了解到棋盤上的局面(棋盤上棋子的分布情況)以及下棋方所走的每一種著法。二、界面及程序輔助設(shè)計(jì)光有下棋引擎尚不能滿足人機(jī)交互的基本要求,因此還需要一個(gè)框架(界面)來作為引擎的載體,同時(shí)提供一些諸如悔棋,還原之類的附屬功能(程序輔助)。事實(shí)上,個(gè)人計(jì)算機(jī)軟件市場(chǎng)的大約80%銷售份額是來自游戲軟件。 AlphaBeta searching 目 錄論文總頁數(shù):22頁1 引言 1 象棋設(shè)計(jì)背景和研究意義 1 象棋設(shè)計(jì)研究方法 12 人工智能算法設(shè)計(jì) 2 棋局表示 3 著法生成 4 搜索算法 5 歷史啟發(fā)及著法排序 9 局面評(píng)估 9 程序組裝 113 界面及程序輔助設(shè)計(jì) 12 界面基本框架 12 多線程 13 著法名稱顯示 14 悔棋和還原 154 系統(tǒng)實(shí)現(xiàn) 16結(jié) 論 19參考文獻(xiàn) 20致 謝 21聲 明 22 1 引言 象棋設(shè)計(jì)背景和研究意義電腦游戲行業(yè)經(jīng)過二十年的發(fā)展,已經(jīng)成為與影視、音樂等并駕齊驅(qū)的全球最重要的娛樂產(chǎn)業(yè)之一,其年銷售額超過好萊塢的全年收入。中國象棋游戲的設(shè)計(jì)與實(shí)現(xiàn)摘 要象棋程序的實(shí)現(xiàn)可以被分為人工智能和界面程序輔助兩大部分。游戲,作為一種娛樂活動(dòng)。棋牌游戲?qū)儆谛蓍e類游戲,相對(duì)于角色扮演類游戲和即時(shí)戰(zhàn)略類游戲等其它游戲,具有上手快、游戲時(shí)間短的特點(diǎn),更利于用戶進(jìn)行放松休閑,為人們所喜愛,特別是棋類游戲,方便、快捷、操作簡單,在休閑娛樂中占主要位置。下面分別介紹各部分實(shí)現(xiàn)。因而首先需要設(shè)計(jì)一套數(shù)據(jù)結(jié)構(gòu)來表示棋盤上的局面以及著法。amp。 //走到什么位置 int Score。諸如馬跳“日”字、象走“田”字、士在九宮內(nèi)斜行等等(這里需要特別注意的是卒(兵)的行子規(guī)則會(huì)隨其所在位置的不同而發(fā)生變化——過河后可以左右平移)。搜索層數(shù)的增加會(huì)顯著提高電腦的下棋水平(當(dāng)然計(jì)算機(jī)的棋力在很大程度上也依賴于局面評(píng)估)。因?yàn)?,?jì)算機(jī)必須在有限的時(shí)間內(nèi)完成思考,搜索速度快意味著在相同的時(shí)間內(nèi)程序可以“看”得更遠(yuǎn),“想”的更多)。獲得最佳著法的方法就是“試走”每一種可能的著法,比較它們所產(chǎn)生的不同后果,然后從中選出能夠產(chǎn)生對(duì)自己最有利的局面的著法。這樣搜索函數(shù)在估值函數(shù)的協(xié)助下可以通過在奇數(shù)層選擇分值最大(最?。┑慕Y(jié)點(diǎn),在偶數(shù)層選擇分值最小(最大)的結(jié)點(diǎn)的方式來搜索以當(dāng)前局面為根結(jié)點(diǎn)、限定搜索層數(shù)以內(nèi)的整棵樹來獲得一個(gè)最佳的著法。為了簡便起見,將博弈樹進(jìn)行了簡化——每個(gè)結(jié)點(diǎn)只有三個(gè)分支,實(shí)際情況中,剛才講過在盤中應(yīng)有大約40個(gè)分支。由于結(jié)點(diǎn)B這層是你的對(duì)手來做選擇,假設(shè)他一定會(huì)做出明智的選擇(你不能寄希望于你的對(duì)手會(huì)走出一步“昏招”),那么他會(huì)選擇返回值為5的那個(gè)結(jié)點(diǎn)。因?yàn)槟菢拥脑挘乱徊侥愕膶?duì)手就會(huì)帶給你一個(gè)分值不高于8的局面。 //撤銷著法 if (val = beta) //裁剪 return beta。在搜索的過程中,每當(dāng)發(fā)現(xiàn)一個(gè)好的走法,就給該走法累加一個(gè)增量以記錄其“歷史得分”,一個(gè)多次被搜索并認(rèn)為是好的走法的“歷史得分”就會(huì)較高。就不同的棋類可能要考慮的因素略有差異。棋子的機(jī)動(dòng)性棋子的機(jī)動(dòng)性指棋子的靈活度(可移動(dòng)性)。 對(duì)棋子間相互關(guān)系的打分,要用到以下幾個(gè)數(shù)據(jù):int m_BaseValue[15]。之后,再根據(jù)關(guān)系表來具體考察棋子的相互關(guān)系,進(jìn)行關(guān)系打分。而且,在程序中并沒有直接地重新考慮雙方兌子之后的控制區(qū)域及機(jī)動(dòng)性變化情況(之所以說沒有“直接地重新考慮”,是因?yàn)樗阉骼^續(xù)展開結(jié)點(diǎn)后仍會(huì)考慮這些因素,只是目前不知這樣效果是否受影響——考察這兩種方法在效果上的差異需要一定數(shù)量的試驗(yàn)數(shù)據(jù)的支持)。使用搜索求出最佳著法。同樣,程序顯示計(jì)算機(jī)走棋的起點(diǎn)坐標(biāo)和終點(diǎn)坐標(biāo)來做出回應(yīng))。包括對(duì)悔棋、還原隊(duì)列的清空,棋盤、棋子樣式的默認(rèn)形式,下棋模式的默認(rèn)選擇,以及著法名稱列表的初始化等。其中第二個(gè)參數(shù)CPoint point是在本程序中所要用到的,它給出了當(dāng)鼠標(biāo)左鍵被按下時(shí),鼠標(biāo)指針的位置坐標(biāo)。此外還有其它部分對(duì)程序同樣必不可少,但這些部分主要由MFC自動(dòng)生成,無需人為改動(dòng),故在此不多做介紹。線程函數(shù)必須被定義為全局函數(shù),其返回值類型必須是UINT,必須有
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1