您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > C/C++资料 > c语言-五子棋游戏-代码-源代码-解释
C语言教程:简易五子棋程序收集于网络/*纯用字符和数组编的五子棋,棋盘也是用字符画的。编了1上午了,主要是算法跟按键比较烦,发现有bug--按键速度过快会产生延时显示,可能是算法不好。操作:玩家1:a,s,w,d(方向)空格(落子)玩家2:上、下、左、右回车(落子)ESC:退出编译测试环境:TC3.0*/#includestdio.h#includestdlib.h#includebios.h#includeconio.h#defineCRRU0xbf/*右上角点197*/#defineCRLU0xda/*左上角点218*/#defineCRLD0xc0/*左下角点192*/#defineCRRD0xd9/*右下角点217*/#defineCRL0xc3/*左边195*/#defineCRR0xb4/*右边190*/#defineCRU0xc2/*上边194*/#defineCRD0xc1/*下边193*/#defineCR0xc5/*十字交叉点197*/#definesize19chara[size][size];inti,j;//跟踪光标在数组中对应的位置intx=10;inty=3;//光标所在位的坐标intside=1;//持子方1为玩家1,2为玩家2;intCB=1;intCW=2;//棋子图形voidinita();voidinits();voidpressco(int);voidpressct(int);intjudge(int);intmain(){inita();inits();getch();while(1){intpress=bioskey(0);if(press==283)break;if(side==1){pressco(press);if(side==2)if(judge(1)==1){gotoxy(1,1);printf(theplay1win);break;}}if(side==2){pressct(press);if(side==1)if(judge(2)==1){gotoxy(1,1);printf(theplay2win);break;}}}getch();return0;}voidinita()//数组初始化;{a[0][0]=CRLU;a[0][size-1]=CRRU;a[size-1][0]=CRLD;a[size-1][size-1]=CRRD;for(inti=1;isize-1;i++){a[0][i]=CRU;a[size-1][i]=CRD;a[i][0]=CRL;a[i][size-1]=CRR;for(intj=1;jsize-1;j++)a[i][j]=CR;}return;}voidinits()//界面初始化{for(inti=0;isize;i++){gotoxy(x,y+i);for(intj=0;jsize;j++)putch(a[i][j]);}gotoxy(x,y);i=0;j=0;return;}voidpressco(intm){switch(m){case7777://Aif(i0){i--;x--;gotoxy(x,y);}break;case8051://Sif(jsize-1){j++;y++;gotoxy(x,y);}break;case4471://wif(j0){j--;y--;gotoxy(x,y);}break;case8292://Dif(isize-1){i++;x++;gotoxy(x,y);}break;case14624://空格if(a[i][j]!=CB&&a[i][j]!=CW){a[i][j]=CB;putch(CB);gotoxy(x,y);side=2;}break;default:break;}return;}voidpressct(intm){switch(m){case19200://左if(i0){i--;x--;gotoxy(x,y);}break;case20480://下if(jsize-1){j++;y++;gotoxy(x,y);}break;case18432://上if(j0){j--;y--;gotoxy(x,y);}break;case19712://右if(isize-1){i++;x++;gotoxy(x,y);}break;case7181://回车if(a[i][j]!=CB&&a[i][j]!=CW){a[i][j]=CW;putch(CW);gotoxy(x,y);side=1;}break;default:break;}return;}intjudge(intpa)//判断是否胜利,胜利则返回1,否则返回0;//其中i,j为当前的落子位;{intm;intsum=1;for(m=1;m=i&&m=j;m++){if(a[i-m][j-m]!=pa)break;sum++;}for(m=1;m(size-i)&&m(size-j);m++){if(a[i+m][j+m]!=pa)break;sum++;}if(sum=5)return1;elsesum=1;for(m=1;m=i;m++){if(a[i-m][j]!=pa)break;sum++;}for(m=1;m(size-j);m++){if(a[i+m][j]!=pa)break;sum++;}if(sum=5)return1;elsesum=1;for(m=1;m=j;m++){if(a[i][j-m]!=pa)break;sum++;}for(m=1;m(size-j);m++){if(a[i][j+m]!=pa)break;sum++;}if(sum=5)return1;elsesum=1;for(m=1;m=i&&m(size-j);m++){if(a[i-m][j+m]!=pa)break;sum++;}for(m=1;m(size-i)&&m=j;m++){if(a[i+m][j-m]!=pa)break;sum++;}if(sum=5)return1;elsereturn0;本文章来自语言教程:简易五子棋程序_C语言程序设计教程原文链接:
本文标题:c语言-五子棋游戏-代码-源代码-解释
链接地址:https://www.777doc.com/doc-7186840 .html