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

正文內(nèi)容

五子棋人機(jī)對(duì)戰(zhàn)設(shè)計(jì)方案(留存版)

  

【正文】 棋點(diǎn)325在指定位置下棋 } else if(!=1) { putdown(wpointcan4)。其原理是,如果已經(jīng)有四個(gè)黑棋,計(jì)算機(jī)再下一個(gè)黑棋就贏了;否則,如果人已經(jīng)有四個(gè)白棋,那么計(jì)算機(jī)就必須放下一個(gè)黑棋,阻止白棋下一步贏;如果已經(jīng)有三個(gè)黑棋,再下一個(gè)黑棋,變成四個(gè);否則,如果已經(jīng)有三個(gè)白棋,下一個(gè)黑棋,破壞它;兩個(gè)棋子的同理;否則,在剛才白棋下的地方,順便找一個(gè)位置,下棋。 wzq[px][py]=1。amp。amp。雖然我們的菜單項(xiàng)已經(jīng)刪除了,但它的函數(shù)還在,我們應(yīng)該加以利用。 //計(jì)算最大值及方向 CPoint maxnum(int a,int b,int c,int d)。 刪除原來(lái)的按扭 對(duì)應(yīng)ID:ID_START 添加兩個(gè)新按扭 對(duì)應(yīng)ID:ID_PLAYER ID_CPMPUTER前面說(shuō)了,五個(gè)連續(xù)棋子的值相加,如果絕對(duì)值是五,則不是五個(gè)棋子同色,應(yīng)該結(jié)束游戲。目前國(guó)際上廣泛流行的計(jì)算機(jī)高級(jí)語(yǔ)言,既可用來(lái)寫(xiě)系統(tǒng)軟件,也可用來(lái)寫(xiě)應(yīng)用軟件?,F(xiàn)代五子棋日文稱之為“連珠”,英譯為“Renju”,英文稱之為“Gobang”或“FIR”(Five in a Row的縮寫(xiě)),亦有“連五子”、“五子連”、“串珠”、“五目”、“五目碰”、“五格”等多種稱謂。先看上圖,玩過(guò)五子棋的人一眼就能看出這才是一場(chǎng)真正的戰(zhàn)斗?。ㄖ辽偎辉试S你隨便下棋。下面細(xì)說(shuō)(數(shù)字是表示絕對(duì)值的): //在位置point放下棋子 void putdown(CPoint point)。下面,我們就必須把游戲雙方中的一方改為計(jì)算機(jī)。 if(colorwhiteamp。410) { int px=()/20。 } } } CView::OnLButtonUp(nFlags, point)。 wpointcan4=(1,1)。 return。 CDC Dc。 為什么要用五個(gè)棋子的值相加呢?因?yàn)椋绻麕讉€(gè)棋子是同色的,無(wú)論黑白,它的絕對(duì)值必然大,而對(duì)于幾個(gè)棋子中有黑棋和白棋的,其值必然相加而抵消變小。 /////////////////////////////// num[2] \ a=0。可以說(shuō),這也是一種巧妙的想法,因?yàn)檫@樣你就不用去寫(xiě)//內(nèi)聯(lián)函數(shù)了CPoint numbig。 CPoint maxnum(int a,int b,int c,int d)。 //由于相似,下面代碼只解釋第一個(gè)方向 //有四個(gè)同色棋void CMyView::searchcandown4(int i, int j, int n){ int k。k5。 =j。 } else { =i。k++) if(wzq[i+k][j+k]==0) { if(wzq[i+k+1][j+k+1]==1) { =i+k。 //最多有兩個(gè)同色void CMyView::searchcandown2(int i, int j, int n){int k=0,m=0,a=0,b=0。 =j。 } if(b==2) { =i。k5。 } } else if(wzq[i+a][j+a]==1) { for(b=0。 } } if(m==3) { for(a=0。對(duì)于在課程設(shè)計(jì)中老師的悉心教導(dǎo)以及同學(xué)們對(duì)我的幫助,我衷心的表示感謝。 } }至此,我們已經(jīng)完成了我們的五子棋游戲了。 } } } }} if(b==2) { =ia。b5。 =j+b。a5。a5。如果最大值是二,也有兩種情況:一種是有兩個(gè)同色和三個(gè)空位置;一種是有三個(gè)同色和一個(gè)異色和一個(gè)空位置,并且只算三個(gè)同色不連在一起的情況(因?yàn)槿绻腥齻€(gè)連續(xù)的情況,重全盤(pán)搜索的角度看,必然會(huì)被另外的情況所代替)。 } else if(wzq[i][j+k+1]==1) { =i。void searchcandown3(int i,int j,int n)函數(shù)k5。 break。 } //否則第一個(gè)是黑棋 else { =i+k。 } return point。 //其中i、j表示搜索起點(diǎn),n表示方向 void searchcandown1(int i,int j,int n)。k++) a=a+wzq[ik][j+k]。 if(j15) for(k=0。 } return。全盤(pán)搜索完之后,由于上面的變量中至少有一個(gè)已經(jīng)被賦值,即不是(1,1),我們可以采用多數(shù)優(yōu)先的方法,讓已經(jīng)有多個(gè)同色棋子的位置先下棋。Dc,0,0,SRCCOPY)。410amp。30amp。其中,我們只是添加一個(gè)變量,而仍然利用原來(lái)的開(kāi)始函數(shù)。 void searchcandown4(int i,int j,int n)。 修改工具欄:上面說(shuō)過(guò),為什么要把數(shù)組的值賦值為1和1,而不是0,1或者其它的數(shù)字呢?這里就涉及到數(shù)字的妙用。C++語(yǔ)言所具有的地址操作和位操作,是它在一定程度上具有了低級(jí)語(yǔ)言的特性,因而可以在相當(dāng)大的程度上,代替設(shè)計(jì)難度較大的匯編語(yǔ)言。五子棋游戲方法簡(jiǎn)單,即在棋盤(pán)上走黑白棋子,可選擇人機(jī)對(duì)戰(zhàn)的一人游戲,也可選擇人人對(duì)戰(zhàn)的,兩人游戲,先將五個(gè)棋子連成一串者獲勝。)那么,我們?cè)撊绾螌?shí)現(xiàn)?其實(shí),只是在原來(lái)的基礎(chǔ)上,把其中一個(gè)人用計(jì)算機(jī)代替而已。4: 表示五個(gè)棋子中有一個(gè)空位置和四個(gè)同色的棋子。 //人對(duì)人菜單 afx_msg void OnPlayer()。我們把黑棋改為計(jì)算機(jī),因?yàn)橐话闱闆r計(jì)算機(jī)比人強(qiáng),應(yīng)讓人先下。amp。 int py=()/20。}由上面可知,我們對(duì)人對(duì)機(jī)游戲的方法是采用:人下完了之后,檢查是否勝利,是則結(jié)束游戲,重新開(kāi)始,并改為黑棋(即計(jì)算機(jī))先下;如果人沒(méi)有勝利,也改為計(jì)算機(jī)下。 bpointcan3=(1,1)。 } else if(!=1) { putdown(wpointcan3)。 if((pDC)==FALSE) AfxMessageBox(Can39。所以我們可以利用這種方法來(lái)尋找旁邊有多個(gè)同色棋子的空位置(前面已經(jīng)具體說(shuō)明)。 if(i15amp。// // numbig=maxnum(num[0],num[1],num[2],num[3])。 ///////////////////////////// num[0] if(n==0) for(k=0。k++) { if(wzq[i][j]==0) if(wzq[i][j+1]==1) { =i。 break。 =j。 //最多有三個(gè)同色void CMyView::searchcandown3(int i, int j, int n){ int k=0。 =j+k。 ///////////////////////////// num[0] if(n==0) { //判斷有多少個(gè)空位置 for(k=0。 break。 =j+a。k++) if(wzq[i+k][j+k]==0) m++。b5。a5。 //如果五個(gè)位置的和是一void CMyView::searchcando
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1