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

正文內(nèi)容

五子棋人機(jī)對(duì)戰(zhàn)設(shè)計(jì)方案(已修改)

2025-05-27 00:21 本頁面
 

【正文】 五子棋人機(jī)對(duì)戰(zhàn)設(shè)計(jì)方案五子棋游戲介紹五子棋起源于中國(guó)古代的傳統(tǒng)黑白棋種之一?,F(xiàn)代五子棋日文稱之為“連珠”,英譯為“Renju”,英文稱之為“Gobang”或“FIR”(Five in a Row的縮寫),亦有“連五子”、“五子連”、“串珠”、“五目”、“五目碰”、“五格”等多種稱謂。五子棋游戲方法簡(jiǎn)單,即在棋盤上走黑白棋子,可選擇人機(jī)對(duì)戰(zhàn)的一人游戲,也可選擇人人對(duì)戰(zhàn)的,兩人游戲,先將五個(gè)棋子連成一串者獲勝。五子棋不僅能增強(qiáng)思維能力,提高智力,而且富含哲理,有助于修身養(yǎng)性。五子棋既有現(xiàn)代休閑的明顯特征“短、平、快”,又有古典哲學(xué)的高深學(xué)問“陰陽易理”;它既有簡(jiǎn)單易學(xué)的特性,為人民群眾所喜聞樂見,又有深?yuàn)W的技巧和高水平的國(guó)際性比賽;它的棋文化源淵流長(zhǎng),具有東方的神秘和西方的直觀;既有“場(chǎng)”的概念,亦有“點(diǎn)”的連接。它是中西文化的交流點(diǎn),是古今哲理的結(jié)晶。第一章 概述11 系統(tǒng)要求簡(jiǎn)述本系統(tǒng)主要為游戲者提供了娛樂,有益于為人們的日常生活帶來快樂,為人們適當(dāng)?shù)臏p壓,另外還可以提高游戲者的反應(yīng)能力,和動(dòng)手能力。12應(yīng)用語言概述自從計(jì)算機(jī)問世以來,程序設(shè)計(jì)有了很大的進(jìn)展。進(jìn)入20世紀(jì)80年代,出現(xiàn)了一種新的程序設(shè)計(jì)方法——面向?qū)ο蟮某绦蛟O(shè)計(jì)(Object Oriented Progamming),簡(jiǎn)稱OOP。面向?qū)ο蟮某绦蛟O(shè)計(jì)的特性,為程序設(shè)計(jì)人員提供了分析和解決問題的一種全新的方法。C++語言是70年代出現(xiàn)的一種非常卓越的程度設(shè)計(jì)語言,是由貝爾實(shí)驗(yàn)室的Dennis Ritchie 設(shè)計(jì)的一個(gè)通用的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言。C++語言具有豐富的數(shù)據(jù)類型和結(jié)構(gòu)化設(shè)計(jì)所需要的語句。C++語言的特點(diǎn)是效率高、功能強(qiáng)、簡(jiǎn)潔靈活。C++語言所具有的地址操作和位操作,是它在一定程度上具有了低級(jí)語言的特性,因而可以在相當(dāng)大的程度上,代替設(shè)計(jì)難度較大的匯編語言。目前國(guó)際上廣泛流行的計(jì)算機(jī)高級(jí)語言,既可用來寫系統(tǒng)軟件,也可用來寫應(yīng)用軟件。13 開發(fā)工具本項(xiàng)目所用的開發(fā)工具如表11所示表 11開發(fā)工具表開發(fā)語言C++開發(fā)環(huán)境Windows xp pro+ Microsoft Visual Studio 2006開發(fā)工具M(jìn)icrosoft Visual Studio 2006 第二章 功能與設(shè)計(jì)思想21人機(jī)對(duì)戰(zhàn)程序功能五子棋是一個(gè)經(jīng)典的小游戲,游戲者打開游戲后將會(huì)看到一張棋盤,這時(shí)游戲者可選擇人對(duì)戰(zhàn)或者人機(jī)對(duì)戰(zhàn),本程序主要功能來實(shí)現(xiàn)人機(jī)對(duì)戰(zhàn),游戲者通過鼠標(biāo)的移動(dòng)來移動(dòng)棋子,通過單擊鼠標(biāo)來確定棋子的最終位置,先將棋子排成五子一線者為最終獲勝者。游戲結(jié)束22人機(jī)對(duì)戰(zhàn)設(shè)計(jì)思想圖21 游戲的實(shí)現(xiàn)先看上圖,玩過五子棋的人一眼就能看出這才是一場(chǎng)真正的戰(zhàn)斗?。ㄖ辽偎辉试S你隨便下棋。)那么,我們?cè)撊绾螌?shí)現(xiàn)?其實(shí),只是在原來的基礎(chǔ)上,把其中一個(gè)人用計(jì)算機(jī)代替而已。也就是說,我們只要在原來的基礎(chǔ)上,加上計(jì)算機(jī)的下棋算法就好了。而計(jì)算機(jī)下棋的算法,正是一個(gè)程序的重點(diǎn)和難點(diǎn)。這里先介紹一下:計(jì)算機(jī)是沒有頭腦的,但是,計(jì)算機(jī)必須下棋。那么,它該怎么辦呢?我們必須自己編程序,“教”計(jì)算機(jī)下棋。然而,我們是否只是讓計(jì)算機(jī)隨便在棋盤上面放一顆棋子呢?事情并不是這么簡(jiǎn)單。計(jì)算機(jī)要下的那個(gè)位置,必定是它認(rèn)為最好的!當(dāng)然,這里的最好是程序員給予計(jì)算機(jī)的,是計(jì)算機(jī)算法的體現(xiàn)。最好的位置,人都難以保證!但是,計(jì)算機(jī)可以。這正是計(jì)算機(jī)能夠在我們這個(gè)社會(huì)迅速發(fā)展的一個(gè)重要原因。當(dāng)然,計(jì)算機(jī)的可以是建立在人的程序的基礎(chǔ)上的。計(jì)算機(jī)的會(huì)是依賴于它的速度,人所不能及的速度。上面說過,為什么要把數(shù)組的值賦值為1和1,而不是0,1或者其它的數(shù)字呢?這里就涉及到數(shù)字的妙用。前面說了,五個(gè)連續(xù)棋子的值相加,如果絕對(duì)值是五,則不是五個(gè)棋子同色,應(yīng)該結(jié)束游戲。那么,如果絕對(duì)值不是五呢?它就沒有意義了嗎?不是!不但不是,而是它有著更重要的意義。它關(guān)系到我們這個(gè)程序的幾乎全部的算法。下面細(xì)說(數(shù)字是表示絕對(duì)值的):4: 表示五個(gè)棋子中有一個(gè)空位置和四個(gè)同色的棋子。3: 表示五個(gè)棋子中有兩個(gè)空位置和三個(gè)同色的棋子;也表示五個(gè)棋子中有四個(gè)同色棋子和一個(gè)異色棋子。注意:此時(shí)沒有空位置,可以不考慮。2: 表示五個(gè)棋子中有三個(gè)空位置和兩個(gè)同色棋子; 也表示五個(gè)棋子中一個(gè)空位置和三個(gè)同色棋子和一個(gè)異色棋子;0: 由于出現(xiàn)1和0的機(jī)會(huì)太少(除了開始的時(shí)候),我們不必多加考慮。但是,因?yàn)閯偛艑?duì)方下棋的對(duì)方必定有一定的危險(xiǎn),我們只需要在剛剛下棋的附近找一個(gè)空位置下棋就可以了。第三章 五子棋人機(jī)對(duì)戰(zhàn)程序設(shè)計(jì)31主菜單設(shè)置對(duì)菜單進(jìn)行設(shè)置,游戲中分別添加開始,打開,退出和保存,其中開始中又包括人對(duì)人和人對(duì)機(jī)兩項(xiàng),并且對(duì)他們分別關(guān)聯(lián)和做相應(yīng)的消息映射。圖31 游戲菜單從上面圖中,我們可以看到,工具欄變了。因此我們也可以想到菜單也應(yīng)該變了。它們的修改如下:修改菜單: 刪除菜單項(xiàng) 開始:ID_START添加菜單項(xiàng) 人對(duì)人游戲:ID_PLAYER人對(duì)機(jī)游戲:ID_CPMPUTER 修改工具欄: 刪除原來的按扭 對(duì)應(yīng)ID:ID_START 添加兩個(gè)新按扭 對(duì)應(yīng)ID:ID_PLAYER ID_CPMPUTER32關(guān)鍵模塊介紹321 變量和函數(shù)在view類中添加變量函數(shù)如下: //保存vsputer時(shí)白棋位置 CPoint vspoint。 //是人與人游戲?是人與機(jī)游戲? int vsputer。 CPoint bpointcan4, //這個(gè)位置空,它旁邊有四個(gè)黑棋 wpointcan4, //這個(gè)位置空,它旁邊有四個(gè)白棋 bpointcan3, //這個(gè)位置空,它的旁邊有三個(gè)黑棋 wpointcan3, //這個(gè)位置空,它的旁邊有三個(gè)白棋 bpointcan2, //這個(gè)位置空,它的旁邊有兩個(gè)黑棋 wpointcan2, //這個(gè)位置空,它的旁邊有兩個(gè)白棋 bpointcan1。 //不是以上情況,這個(gè)位置空 //在得到最大值和方向上尋找落棋點(diǎn)(具體見后面介紹)//其中i、j表示搜索起點(diǎn),n表示方向 void searchcandown1(int i,int j,int n)。 void searchcandown2(int i,int j,int n)。 void searchcandown3(int i,int j,int n)。 void searchcandown4(int i,int j,int n)。 //計(jì)算最大值及方向 CPoint maxnum(int a,int b,int c,int d)。 //最好落棋點(diǎn) void bestputdown(int i,int j)。 //計(jì)算機(jī)下棋 void puterdown()。 //在位置point放下棋子 void putdown(CPoint point)。 //人對(duì)人菜單 afx_msg void OnPlayer()。 //人對(duì)機(jī)菜單 afx_msg void OnCpmputer()。322菜單函數(shù)添加了菜單項(xiàng),我們必須添加一個(gè)變量vsputer,賦值為1,并約定://vsputer:2表示人對(duì)人,1表示人對(duì)機(jī)void CMyView::OnPlayer() { // TODO: Add your mand handler code here vsputer=2。 OnStart()。}void CMyView::OnCpmputer() { // TODO: Add your mand handler code here vsput
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1