c編寫五子棋游戲代碼_第1頁(yè)
c編寫五子棋游戲代碼_第2頁(yè)
c編寫五子棋游戲代碼_第3頁(yè)
c編寫五子棋游戲代碼_第4頁(yè)
c編寫五子棋游戲代碼_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、#define N 15#define B 7#define STOP -10000#define OK 1#define NO 0#defineUP328#define DOWN 336#define LEFT 331#define RIGHT 333/*定義了兩個(gè)數(shù),n為棋盤的大小。b為背景顏色的數(shù)值*/ intaN+lN+l;int zx,zy;int write=l,biaoji=0;struct znlong sum;int y;int x;wN+lN+l,max,maxi;void cbar(int i,int x,int y,int r);void map(int a);int

2、getkey();int key();void zuobiao(int x,int y,int i);int tu(int a,int write);int wtufint a,int write);int zhinengfint a);int zh5(int y,int x,int a);long zzh5(int b,int i);main()int ij;int gdriver=DETECT;int gmode;initgraphf&gdriveG&gmode,"");zx=(N+l)/2;zy=(N+l)/2;for(i=l;i<=N;i+)f

3、or(j=l;j<=N;j+)ai0=O;map(a);i=l;while(i)int k,n;k=wtu(a,write);if(k=STOP) goto end;map(a);n=zhineng(a);if(n=STOP) goto end;map(a);)end:/)/*實(shí)現(xiàn)對(duì)局的程序,計(jì)算全部N*N個(gè)格中,最應(yīng)該填的格子*/int zhineng(int aN+lN+l)int i,j;int k;max.sum=-l;for(i=0;i<=N;i+)for(j=0;j<+N;j+)wij.sum=O;wij-x=i;wiU.y=j;)for(i=l;i<=N-

4、4;i+)for(j=l;j<=N-4;j+)k=zh5(i,j,a);if(k=STOP) return (STOP);)for(i=l;i<=N;i+)for(j=l;j<=N;j+)if(max.sum<wij.sum)max.sum=wij.sum;max.y=i;max.x=j;)else if(max.sum=wij.sum)if(max.y-zy)*(max.y-zy)+(max.x-zx)*(max.x-zx)>(i-zy)*(i-zy)+(j-zx)*(j-zx)max.sum=wij.sum;max.y=i;max.x=j;)if(amax.y

5、max.x=O)amax.ymax.x=-l;zy=max.y;zx=max.x;)/*轉(zhuǎn)換成5*5的數(shù)組,計(jì)算出在二十五個(gè)格子中,最應(yīng)該填的格*/int zh5(int y,int x,int aN+lN+l)int ij;int b66;longc13;longd66;long temp;for(i=y;i<=y+4;i+) for(j=x;j<=x+4;j+)bi+l-yj+l-x=aij;cl=bll+bl2+bl3+bl4+bl5;c2=b2l+b22+b23+b24+b25;c3=b3l+b32+b33+b34+b35;c4=b4l+b42+b43+b44+b45;c5

6、=b5l+b52+b53+b54+b55;c6=bll+b2l+b3l+b4l+b5l;c7=bl2+b22+b32+b42+b52;c8=bl3+b23+b33+b43+b53;c9=bl4+b24+b34+b44+b54;c10=bl5+b25+b35+b45+b55;cll=bll+b22+b33+b44+b55;c12=bl5+b24+b33+b42+b5l;for(i=l;i<=12;i+)switch(ci)case 5:biaoji=l;return(STOP);case -5:biaoji=-l;return(STOP);case -4:ci=100000;break;c

7、ase 4:ci=100000;break;case -3:ci=150;break;case 3:ci=150;break;case -2:ci=120;break;case 2:ci=100;break;case -l:ci=l;break;case l:ci=l;break;default: ci=O;)for(i=l;i<=12;i+)if(ci=150)ci+=zzh5(b,i);)for(i=l;i<=5;i+)for(j=l;j<=5;j+)diU=O;for(i=l;i<=5;i+)for(j=l;j<=5;j+)if(i=j)diU+=cH;if

8、(i+j)=6) dij+=c12;diU+=ci+cj+5;)for(i=l;i<=5;i+)for(j=l;j<=5;j+)if(biD!=O)diU=-2;)maxl.sum=-l;maxl.y=O;maxl.x=O;for(i=l;i<=5;i+)for(j=l;j<=5;j+)if(maxl.sum<dij)maxl.sum=dij;maxl.y=i;maxl.x=j;wi+y-lj+x-l.sum+=maxl.sum;else if(maxl.sum=dij)(if(i+y-l-zy)*(i+y-l-zy)+(j+x-l-zx)*(j+x-l-zx)&

9、gt;(maxl.y+y-l-zy)*(maxl.y+y-l- zy)+(maxl.x+x-l-zx)*(maxl.x+x-l-zx)(maxl.sum=dij;maxl.y=i;maxl.x=j;long zzh5(int b66,int n)int iJA/lm;switch(n)case l:i=bll;j=bl2;k=bl3;l=bl4;m=bl5;break;case 2:i=b2l;j=b22;k=b23;l=b24;m=b25;break;9/18case 3:i=b3l;j=b32;k=b33;l=b34;m=b35;break;case4:i=b l;j=b42;k =b43

10、;l =b44;m=b 5;break;case5:i=b5l;j=b52;k=b53;l=b54;m=b55;break;case6:i=bll;j=b2l;k=b3l;l=b4l;m=b5l;break;case7:i=bl2;j=b22;k=b32;l=b42;m=b52;break;case8:i=bl3;j=b23;k=b33;l=b43;m=b53;break;case9:i=bl4;j=b24;k=b34;l=b44;m=b54;break;case10:i=bl5;j=b25;k=b35;l=b45;m=b55;break;casell:i=bll;j=b22;k=b33;l=

11、b44;m=b55;break;case12:i=bl5;j=b24;k=b33;l=b42;m=b5l;break;if(i=O&&j=l&&k=l&&l=l&&m=O)return (900);if(i=0&&j=-l&&k=-l&&l=-l&&m=0)return(lOOO);if(i=O&&j=O&&k=l&&l=l&&m=l) | |(i=l&&j=l&&k=l&

12、amp;&l=O&&m=O )return(20);if(i=O&&j=O&&k=-l&&l=-l&&m=-l) 11 (i=-l&&j=-l&&k=- l&&l=O&&m=O)return(20);if(i=-l&&j=l&&k=l&&l=l&&m=l) | |(i=l&&j=-l&&k=l&&l=l&&m=l) 1

13、1 (i=l&&j=l&&k=-l&&l=l&&m=l) 11 (i=l&&j=l&&k=l&&l=-l&&m=l) 11 (i=l&&j=l&&k=l&&l=l&&m=-l)return(-60);if(i=l&&j=-l&&k=-l&&l=-l&&m=-l) 11 (i=-l&&j=l&&k=-l&

14、&l=- l&&m=-l) 11 (i=-l&&j=l&&k=-l&&l=-l&&m=-l) | |(i=-l&&j=-l&&k=- l&&l=l&&m=-l) 11 (i=-l&&j=-l&&k=-l&&l=-l&&m=l)return(-60);/*循環(huán)執(zhí)行坐標(biāo)的選擇,直到按回車,空格或ESC鍵*/int wtufint aN+lN+l,int write)int i=l;ma

15、p(a);zuobiao(zx,zy,l);while(i)int k;k=tu(a,write);if(k=OK) i=0;if(k=STOP) return (STOP);)/*從鍵盤獲得輸入的值*/int getkey()int key,Io,hi;key=bioskey(0);Io=key&0x00ff;hi=(key&0xff00)»8;return(lo=0) ? hi+256:lo);)/*對(duì)獲得的值進(jìn)行判斷*/*對(duì)應(yīng)的碼值分別如下*/*上:328 下:336 左:331 右:/*回車:13 ESC 鍵:27 */int key()int k;k=get

16、key();switch(k)case 27: return (STOP);case 13:case 'return (OK);case 328: return (UP);case 336: return (DOWN);case 331: return (LEFT);333 */case 333: return (RIGHT);default: return (NO);/*用來顯示坐標(biāo)的位置*/void zuobiao(int xjnt y,int i)int r;if(i!=0)setcolor(GREEN);for(r=l;r<=5;r+)circle(75+25*x,25+

17、25*y,r);)elseif(azyzx=l)setcolor(8);for(r=l;r<=5;r+)circle(75+25*x,25+25*y,r);else if(azyzx=-l)setcolor(WHITE);for(r=l;r<=5;r+)circle(75+25*x,25+25*y,r);)elsesetcolor(B);for(r=l;r<=5;r+)circle(75+25*x,25+25*y,r);setcolor(RED); line(75+25*zx-5,25+25*zy,75+25*x+5,25+25*zy);line(75+25*zx,25+25

18、*zy-5,75+25*zx,25+25*zy+5);/*從鍵盤獲得的值進(jìn)行判斷,反映在顯示的圖上*/int tu(int aN+lN+l,int write)int k;re:k=key();14 / 18if(k=OK)if(azyzx=O)azyzx=write;)elsegoto re;)if(k=STOP) return(STOP);if(k=NO) goto re;if(k=UP)int ij;if(zy=l) j=zy;else j=zy-l;zuobiao(zx,zy,0);zuobiao(zx,j,l);zy司;goto re;15 / 18if(k=DOWN)int ij;if(zy=N) j=zy;else j=zy+l;zuobiao(zx,zy,0);zuobiao(z

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論