#include #include #include #include #include #defineCROSSRU0xbf/*右上角点*/ #defineCROSSLU0xda/*左上角点*/ #defineCROSSLD0xc0/*左下角点*/ #defineCROSSRD0xd9/*右下角点*/ #defineCROSSL0xc3/*左边*/ #defineCROSSR0xb4/*右边*/ #defineCROSSU0xc2/*上边*/ #defineCROSSD0xc1/*下边*/ #defineCROSS0xc5/*十字交叉点*/ /*定义棋盘左上角点在屏幕上的位置*/ #defineMAPXOFT5 #defineMAPYOFT2 /*定义1号玩家的操作键键码*/ #definePLAY1UP0x1157/*上移--'W'*/ #definePLAY1DOWN0x1f53/*下移--'S'*/ #definePLAY1LEFT0x1e41/*左移--'A'*/ #definePLAY1RIGHT0x2044/*右移--'D'*/ #definePLAY1DO0x3920/*落子--空格键*/ /*定义2号玩家的操作键键码*/ #definePLAY2UP0x4800/*上移--方向键up*/ #definePLAY2DOWN0x5000/*下移--方向键down*/ #definePLAY2LEFT0x4b00/*左移--方向键left*/ #definePLAY2RIGHT0x4d00/*右移--方向键right*/ #definePLAY2DO0x1c0d/*落子--回车键Enter*/ /*若想在游戏中途退出,可按Esc键*/ #defineESCAPE0x011b /*定义棋盘上交叉点的状态,即该点有无棋子*/ /*若有棋子,还应能指出是哪个玩家的棋子*/ #defineCHESSNULL0/*没有棋子*/ #defineCHESS1'O'/*一号玩家的棋子*/ #defineCHESS2'X'/*二号玩家的棋子*/ /*定义按键类别*/ #defineKEYEX99v0/*退出键*/ #defineKEYFALLCHESS1/*落子键*/ #defineKEYMOVECURSOR2/*光标移动键*/ #defineKEYINVALID3/*无效键*/ /*定义符号常量:真,假---真为1,假为0*/ #defineTRUE1 #defineFALSE0 /**********************************************************/ /*定义数据结构*/ /*棋盘交叉点坐标的数据结构*/ structpoint { intx,y; }; 或者下面这个: #include #include #include #include #defineN15 #defineB7 #defineSTOP-10000 #defineOK1 #defineNO0 #defineUP328 #defineDOWN336 #defineLEFT331 #defineRIGHT333 inta[N+1][N+1]; intzx,zy; intwrite=1,biaoji=0; structzn{ longsum; inty; intx; }w[N+1][N+1],max,max1; voidcbar(inti,intx,inty,intr); voidmap(inta[][]); intgetkey(); intkey(); voidzuobiao(intx,inty,inti); inttu(inta[][],intwrite); intwtu(inta[][],intwrite); intzhineng(inta[][]); intzh5(inty,intx,inta[][]); longzzh5(intb[][],inti); main() { inti,j; intgdriver=DETECT; intgmode; initgraph(&gdriver,&gmode,); zx=(N+1)/2; zy=(N+1)/2; for(i=1;i((i-zy)*(i-zy)+(j-zx)*(j-zx))) max.sum=w[i][j].sum; max.y=i; max.x=j; } } if(a[max.y][max.x]==0) { a[max.y][max.x]=-1; zy=max.y; zx=max.x; } } intzh5(inty,intx,inta[N+1][N+1]) { inti,j; intb[6][6]; longc[13]; longd[6][6]; longtemp; for(i=y;i((max1.y+y-1-zy)*(max1.y+y-1-zy)+(max1.x+x-1-zx)*(max1.x+x-1-zx))) { max1.sum=d[i][j]; max1.y=i; max1.x=j; } } } } longzzh5(intb[6][6],intn) { inti,j,k,l,m; switch(n) { case1:i=b[1][1];j=b[1][2];k=b[1][3];l=b[1][4];m=b[1][5];break; case2:i=b[2][1];j=b[2][2];k=b[2][3];l=b[2][4];m=b[2][5];break; case3:i=b[3][1];j=b[3][2];k=b[3][3];l=b[3][4];m=b[3][5];break; case4:i=b[4][1];j=b[4][2];k=b[4][3];l=b[4][4];m=b[4][5];break; case5:i=b[5][1];j=b[5][2];k=b[5][3];l=b[5][4];m=b[5][5];break; case6:i=b[1][1];j=b[2][1];k=b[3][1];l=b[4][1];m=b[5][1];break; case7:i=b[1][2];j=b[2][2];k=b[3][2];l=b[4][2];m=b[5][2];break; case8:i=b[1][3];j=b[2][3];k=b[3][3];l=b[4][3];m=b[5][3];break; case9:i=b[1][4];j=b[2][4];k=b[3][4];l=b[4][4];m=b[5][4];break; case10:i=b[1][5];j=b[2][5];k=b[3][5];l=b[4][5];m=b[5][5];break; case11:i=b[1][1];j=b[2][2];k=b[3][3];l=b[4][4];m=b[5][5];break; case12:i=b[1][5];j=b[2][4];k=b[3][3];l=b[4][2];m=b[5][1];break; } if((i==0&&j==1&&k==1&&l==1&&m==0)) return(900); if((i==0&&j==-1&&k==-1&&l==-1&&m==0)) return(1000); if((i==0&&j==0&&k==1&&l==1&&m==1)||(i==1&&j==1&&k==1&&l==0&&m==0)) return(20); if((i==0&&j==0&&k==-1&&l==-1&&m==-1)||(i==-1&&j==-1&&k==-1&&l==0&&m==0)) return(20); if((i==-1&&j==1&&k==1&&l==1&&m==1)||(i==1&&j==-1&&k==1&&l==1&&m==1)||(i==1&&j==1&&k==-1&&l==1&&m==1)||(i==1&&j==1&&k==1&&l==-1&&m==1)||(i==1&&j==1&&k==1&&l==1&&m==-1)) return(-60); if((i==1&&j==-1&&k==-1&&l==-1&&m==-1)||(i==-1&&j==1&&k==-1&&l==-1&&m==-1)||(i==-1&&j==1&&k==-1&&l==-1&&m==-1)||(i==-1&&j==-1&&k==-1&&l==1&&m==-1)||(i==-1&&j==-1&&k==-1&&l==-1&&m==1)) return(-60); } intwtu(inta[N+1][N+1],intwrite) { inti=1; map(a); zuobiao(zx,zy,1); while(i) { intk; k=tu(a,write); if(k==OK)i=0; if(k==STOP)return(STOP); } } intgetkey() { intkey,lo,hi; key=bioskey(0); lo=key&0x00ff; hi=(key&0xff00)>>8; return((lo==0)?hi+256:lo); } intkey() { intk; k=getkey(); switch(k) { case27:return(STOP); case13: case'':return(OK); case328:return(UP); case336:return(DOWN); case331:return(LEFT); case333:return(RIGHT); default:return(NO); } } voidzuobiao(intx,inty,inti) { intr; if(i!=0) { setcolor(GREEN); for(r=1;r<=5;r++) circle(75+25*x,25+25*y,r); } else { if(a[zy][zx]==1) { setcolor(8); for(r=1;r<=5;r++) circle(75+25*x,25+25*y,r); } elseif(a[zy][zx]==-1) { setcolor(WHITE); for(r=1;r<=5;r++) circle(75+25*x,25+25*y,r); } else { setcolor(B); for(r=1;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*zy-5,75+25*zx,25+25*zy+5); } } } inttu(inta[N+1][N+1],intwrite) { intk; re: k=key(); if(k==OK) { if(a[zy][zx]==0) { a[zy][zx]=write; } else gotore; } if(k==STOP)return(STOP); if(k==NO)gotore; if(k==UP) { inti,j; if(zy==1)j=zy; elsej=zy-1; zuobiao(zx,zy,0); zuobiao(zx,j,1); zy=j; gotore; } if(k==DOWN) { inti,j; if(zy==N)j=zy; elsej=zy+1; zuobiao(zx,zy,0); zuobiao(zx,j,1); zy=j; gotore; } if(k==LEFT) { inti,j; if(zx==1)i=zx; elsei=zx-1; zuobiao(zx,zy,0); zuobiao(i,zy,1); zx=i; gotore; } if(k==RIGHT) { inti,j; if(zx==N)i=zx; elsei=zx+1; zuobiao(zx,zy,0); zuobiao(i,zy,1); zx=i; gotore; } } voidcbar(inti,intx,inty,intr) { if(i!=0) { if(i==1) setcolor(8); elseif(i==-1) setcolor(WHITE); for(i=1;i<=r;i++) { circle(x,y,i); } } } voidmap(inta[N+1][N+1]) { inti,j; cleardevice(); setbkcolor(B); setcolor(RED); for(i=0;i<N;i++) { line(100,50+25*i,75+N*25,50+25*i); line(100+25*i,50,100+25*i,25+N*25); } for(i=1;i<=N;i++) for(j=1;j<=N;j++) cbar(a[i][j],75+25*j,25+25*i,10); }
c语言的五子棋代码(博弈算法)
阅读:24
免责声明:本站发布的游戏攻略(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场。
如果本文侵犯了您的权益,请联系站长邮箱进行举报反馈,一经查实,我们将在第一时间处理,感谢您对本站的关注!
上一篇:c++五子棋源代码图形界面
相关攻略
最新攻略
- 1《闪耀暖暖》×北京皮影剧团联动活动开启“旧神梦魇·星渚之望”复刻活动来袭
- 2魔灵召唤:2024公会联赛年度总决赛11月24日盛大开幕
- 3《魔域》血族新技能全面解密!更高输出更快连招,等您来战!
- 4这个新区的小伙伴注意!魔域口袋版新服这么玩!
- 5Steam多人种田游戏露玛岛现已发售,首发价46元
- 6偶像来啦!《龙之谷》“夏萝莉宇宙巡演”今日开启
- 7《星球大战:法外狂徒》将去除“强制潜行”
- 8快手首款自研游戏《无尽梦回》正式公测,横扫14亿梦境!
- 9《自由篮球》援助商店幸运礼包惊喜来袭,黄金骰子赢能力值服饰!
- 10《方块方舟》限时2.5折史低活动开启,仅29元即可启程方块世界
- 11《潜行者2:切尔诺贝利之心》正式发售!
- 12热血竞技,燃爆寒冬!2024TGG冬季杯线上海选赛本周开战