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

正文內(nèi)容

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

2025-06-11 00:21 本頁面
 

【文章內(nèi)容簡介】 (m_bmblack)。 pDCBitBlt(*20+32,*20+32,160,160,amp。Dc,0,0,SRCCOPY)。 wzq[][]=1。//由于原來我們檢查是否結(jié)束時(shí)用的是鼠標(biāo)點(diǎn)下的坐標(biāo),而現(xiàn)在//putdown(CPoint point)函數(shù)用的是數(shù)組棋盤的坐標(biāo),所以必須轉(zhuǎn)換 CPoint overpoint。 =*20+30。 =*20+30。 over(overpoint)。 colorwhite=true。 }326搜索最佳落棋點(diǎn) 現(xiàn)在就剩下void bestputdown(int i,int j)函數(shù)沒有定義了(雖然前面的變量函數(shù)已經(jīng)說明了,當(dāng)時(shí)我們這里是用程序擴(kuò)展的思路進(jìn)行的,故如此說明)。它的實(shí)現(xiàn)原理是:在四個(gè)方向上,各自計(jì)算那個(gè)方向上棋子的狀態(tài),我們的思路是利用原來定義的白棋為1,黑棋為1,的思想,讓同個(gè)方向上的五個(gè)棋子的值相加,取絕對(duì)值并賦值給為這個(gè)方向定義的局部變量num[i]。 為什么要用五個(gè)棋子的值相加呢?因?yàn)椋绻麕讉€(gè)棋子是同色的,無論黑白,它的絕對(duì)值必然大,而對(duì)于幾個(gè)棋子中有黑棋和白棋的,其值必然相加而抵消變小。所以我們可以利用這種方法來尋找旁邊有多個(gè)同色棋子的空位置(前面已經(jīng)具體說明)。在每一個(gè)棋盤位置,計(jì)算以它為起點(diǎn)的四個(gè)方向(橫、豎、撇、捺),再比較這四個(gè)方向中哪個(gè)值最大,然后在這個(gè)方向上尋找落棋點(diǎn)。我們添加函數(shù)如下://檢查四個(gè)方向,各算出五個(gè)棋子的和并賦值void CMyView::bestputdown(int i,int j){ //四個(gè)方向的值 int num[4]。 int a,k。 /////////////////////////////// num[0] a=0。 if(i15) for(k=0。k5。k++) a=a+wzq[i+k][j]。 num[0]=abs(a)。 ////////////////////////////// num[1] | a=0。 if(j15) for(k=0。k5。k++) a=a+wzq[i][j+k]。 num[1]=abs(a)。 /////////////////////////////// num[2] \ a=0。 if(i15amp。amp。j15) for(k=0。k5。k++) a=a+wzq[i+k][j+k]。 num[2]=abs(a)。 ////////////////////////////// num[3] / a=0。 if((i4)amp。amp。(j15)) for(k=0。k5。k++) a=a+wzq[ik][j+k]。 num[3]=abs(a)。 //比較哪個(gè)方向同色棋最多//由于我們搜索落棋點(diǎn)時(shí)用到最大值和方向,我們可以定義一個(gè)Cpoint類變量,//讓它返回兩個(gè)值??梢哉f,這也是一種巧妙的想法,因?yàn)檫@樣你就不用去寫//內(nèi)聯(lián)函數(shù)了CPoint numbig。// // numbig=maxnum(num[0],num[1],num[2],num[3])。 //在得到最大值和方向上尋找落棋點(diǎn) switch() { case 4: searchcandown4(i,j,)。break。 case 3: searchcandown3(i,j,)。break。 case 2: searchcandown2(i,j,)。break。 default: searchcandown1(i,j,)。 }}同樣的方法,我們必須為上面還沒有定義的函數(shù)添加空函數(shù)。 //其中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)。 CPoint maxnum(int a,int b,int c,int d)。327最大值函數(shù)的實(shí)現(xiàn)現(xiàn)在先介紹CPoint maxnum(int a,int b,int c,int d)函數(shù),它只是四個(gè)整數(shù)的比較: CPoint CMyView::maxnum(int a, int b, int c, int d){ // // CPoint point。 if(a=b) { =0。 =a。 } else { =1。 =b。 } if(c) { =2。 =c。 } if(d) { =3。 =d。 } return point。} 而另外的四個(gè)函數(shù),有其相似性,分別介紹如下:328個(gè)大函數(shù)的實(shí)現(xiàn)與功能void searchcandown4(int i,int j,int n)函數(shù)如果最大值是四,它必然有一個(gè)空位置;我們可以這樣計(jì)算,如果第一個(gè)是空,那我們把它賦值給相應(yīng)變量;否則,先找那個(gè)空位置,然后判斷第一個(gè)棋子的顏色,并賦相應(yīng)的值。 //由于相似,下面代碼只解釋第一個(gè)方向 //有四個(gè)同色棋void CMyView::searchcandown4(int i, int j, int n){ int k。 ///////////////////////////// num[0] if(n==0) for(k=0。k5。k++) //如果第一個(gè)是空 if(wzq[i][j]==0) { //如果下面有白棋 if(wzq[i+1][j]==1) { //下面位置可以下棋,已經(jīng)有四個(gè)白棋 =i。 =j。 break。 } else { //下面位置可以下棋,已經(jīng)有四個(gè)黑棋 =i。 =j。 break。 } } //如果找到下棋位置,一定能找到! else if(wzq[i+k][j]==0) { //如果第一個(gè)是白棋 if(wzq[j][j]==1) { =i+k。 =j。 break。 } //否則第一個(gè)是黑棋 else { =i+k。 =j。 break。 } } //////////////////////////// num[1] | if(n==1) for(k=0。k5。k++) { if(wzq[i][j]==0) if(wzq[i][j+1]==1) { =i。 =j。 break。 } else { =i。 =j。 break。 } else if(wzq[i][j+k]==0) { if(wzq[i][j]==1) { =i。 =j+k。 break。 } else { =i。 =j+k。
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1