1、#include #include #include #include #define MAXIMUS 15 /定义棋盘大小/*定义全局变量*/int pMAXIMUSMAXIMUS;/存储对局信息char buffMAXIMUS*2+1MAXIMUS*4+3;/输出缓冲器int Cx,Cy;/当前光标位置int Now;/当前走子的玩家,1 代表黑,2 代表白int wl,wp;/当前写入缓冲器的列数和行数位置char* showText;/在棋盘中央显示的文字信息int count;/回合数char* Copy(char* strDest,const char* strSrc)/修改过的字
2、符串复制函数,会忽略末端的0char* strDestCopy = strDest;while (*strSrc!=0)*strDest+=*strSrc+;return strDestCopy;void Initialize()/初始化一个对局函数int i,j;/循环变量showText=“;/重置显示信息count=0;/回合数归零for(i=0;i0else break;/向上检查if(w=5)return Now;/若果达到 5 个则判断当前走子玩家为赢家for(i=1;i0else break;/向左检查if(x=5)return Now;/若果达到 5 个则判断当前走子玩家为赢家
3、for(i=1;i0else break;/向左上检查if(y=5)return Now;/若果达到 5 个则判断当前走子玩家为赢家for(i=1;i0else break;/向右上检查for(i=1;i0/若果达到 5 个则判断当前走子玩家为赢家return 0;/若没有检查到五连珠,则返回 0 表示还没有玩家达成胜利int RunGame()/进行整个对局,返回赢家信息 (虽然有用上 )int input;/输入变量int victor;/赢家信息Initialize();/初始化对局while(1)/开始无限回合的死循环,直到出现胜利跳出Print();/打印棋盘input=getch(
4、);/等待键盘按下一个字符if(input=27)/如果是 ESC 则退出程序exit(0);else if(input=0x20)/如果是空格则开始走子if(Put()/如果走子成功则判断胜负victor=Check();Now=3-Now;/轮换当前走子玩家count+;if(victor=1)/如果黑方达到胜利,显示提示文字并等待一次按键,返回胜利信息showText=“黑方获得了胜利!“;Print();if(getch()=0xE0)getch();return Now;else if(victor=2)/如果白方达到胜利,显示提示文字并等待一次按键,返回胜利信息showText=“
5、白方获得了胜利!“;Display();if(getch()=0xE0)getch();return Now;else if(count=MAXIMUS*MAXIMUS)/如果回合数达到了棋盘总量,即棋盘充满,即为平局showText=“平局!“;Display();if(getch()=0xE0)getch();return 0;else if(input=0xE0)/如果按下的是方向键,会填充两次输入,第一次为 0xE0 表示按下的是控制键input=getch();/获得第二次输入信息switch(input)/判断方向键方向并移动光标位置case 0x4B:/Cx-;break;case 0x48:Cy-;break;case 0x4D:Cx+;break;case 0x50:Cy+;break;if(CxMAXIMUS-1)Cx=0;if(CyMAXIMUS-1)Cy=0;int main()/主函数system(“title 简易五子棋 WY 制作“);/设置标题system(“mode con cols=63 lines=32“);/设置窗口大小system(“color F0“);/设置颜色while(1)/循环执行游戏RunGame();