欢迎来到天天文库
浏览记录
ID:57687353
大小:26.50 KB
页数:7页
时间:2020-09-01
《C语言编写的五子棋源代码.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、#include#include#include#include#defineMAXIMUS15//定义棋盘大小/*定义全局变量*/intp[MAXIMUS][MAXIMUS];//存储对局信息charbuff[MAXIMUS*2+1][MAXIMUS*4+3];//输出缓冲器intCx,Cy;//当前光标位置intNow;//当前走子的玩家,1代表黑,2代表白intwl,wp;//当前写入缓冲器的列数和行数位置char*showText;//在棋盘中央显示的文字信息
2、intcount;//回合数char*Copy(char*strDest,constchar*strSrc)//修改过的字符串复制函数,会忽略末端的 {char*strDestCopy=strDest;while(*strSrc!=' '){*strDest++=*strSrc++;}returnstrDestCopy;}voidInitialize()//初始化一个对局函数{inti,j;//循环变量showText="";//重置显示信息count=0;//回合数归零for(i=0;i3、(j=0;j4、=MAXIMUS-1&&j==MAXIMUS-1)return"┛";elseif(i==0&&j==MAXIMUS-1)return"┗";elseif(i==0)return"┠";elseif(i==MAXIMUS-1)return"┨";elseif(j==0)return"┯";elseif(j==MAXIMUS-1)return"┷";return"┼";//中间的空位}char*getCurse(inti,intj){//获得指定坐标交点位置左上格的样式,通过制表符来模拟光标的显示if(i==Cx){if(j==Cy)retur5、n"┏";elseif(j==Cy+1)return"┗";}elseif(i==Cx+1){if(j==Cy)return"┓";elseif(j==Cy+1)return"┛";}return" ";//如果不在光标附近则为空}voidwrite(char*c){//向缓冲器写入字符串Copy(buff[wl]+wp,c);wp+=strlen(c);}voidln()//缓冲器写入位置提行{wl+=1;wp=0;}voidDisplay()//将缓冲器内容输出到屏幕{inti,l=strlen(showText);//循环变量,中间文字6、信息的长度intOffset=MAXIMUS*2+2-l/2;//算出中间文字信息居中显示所在的横坐标位置if(Offset%2==1)//如果位置为奇数,则移动到偶数,避免混乱{Offset--;}Copy(buff[MAXIMUS]+Offset,showText);//讲中间文字信息复制到缓冲器if(l%2==1)//如果中间文字长度为半角奇数,则补上空格,避免混乱{*(buff[MAXIMUS]+Offset+l)=0x20;}system("cls");//清理屏幕,准备写入for(i=0;i7、循环写入每一行printf("%s",buff[i]);if(i8、9、j==MAXIMUS10、)//如果是棋上下盘边缘则没有连接的竖线,用空格填充位置{if(i!=MAXIMUS)write(" ");}else//如果在棋盘中间则用竖线承接上下{if(i=
3、(j=0;j4、=MAXIMUS-1&&j==MAXIMUS-1)return"┛";elseif(i==0&&j==MAXIMUS-1)return"┗";elseif(i==0)return"┠";elseif(i==MAXIMUS-1)return"┨";elseif(j==0)return"┯";elseif(j==MAXIMUS-1)return"┷";return"┼";//中间的空位}char*getCurse(inti,intj){//获得指定坐标交点位置左上格的样式,通过制表符来模拟光标的显示if(i==Cx){if(j==Cy)retur5、n"┏";elseif(j==Cy+1)return"┗";}elseif(i==Cx+1){if(j==Cy)return"┓";elseif(j==Cy+1)return"┛";}return" ";//如果不在光标附近则为空}voidwrite(char*c){//向缓冲器写入字符串Copy(buff[wl]+wp,c);wp+=strlen(c);}voidln()//缓冲器写入位置提行{wl+=1;wp=0;}voidDisplay()//将缓冲器内容输出到屏幕{inti,l=strlen(showText);//循环变量,中间文字6、信息的长度intOffset=MAXIMUS*2+2-l/2;//算出中间文字信息居中显示所在的横坐标位置if(Offset%2==1)//如果位置为奇数,则移动到偶数,避免混乱{Offset--;}Copy(buff[MAXIMUS]+Offset,showText);//讲中间文字信息复制到缓冲器if(l%2==1)//如果中间文字长度为半角奇数,则补上空格,避免混乱{*(buff[MAXIMUS]+Offset+l)=0x20;}system("cls");//清理屏幕,准备写入for(i=0;i7、循环写入每一行printf("%s",buff[i]);if(i8、9、j==MAXIMUS10、)//如果是棋上下盘边缘则没有连接的竖线,用空格填充位置{if(i!=MAXIMUS)write(" ");}else//如果在棋盘中间则用竖线承接上下{if(i=
4、=MAXIMUS-1&&j==MAXIMUS-1)return"┛";elseif(i==0&&j==MAXIMUS-1)return"┗";elseif(i==0)return"┠";elseif(i==MAXIMUS-1)return"┨";elseif(j==0)return"┯";elseif(j==MAXIMUS-1)return"┷";return"┼";//中间的空位}char*getCurse(inti,intj){//获得指定坐标交点位置左上格的样式,通过制表符来模拟光标的显示if(i==Cx){if(j==Cy)retur
5、n"┏";elseif(j==Cy+1)return"┗";}elseif(i==Cx+1){if(j==Cy)return"┓";elseif(j==Cy+1)return"┛";}return" ";//如果不在光标附近则为空}voidwrite(char*c){//向缓冲器写入字符串Copy(buff[wl]+wp,c);wp+=strlen(c);}voidln()//缓冲器写入位置提行{wl+=1;wp=0;}voidDisplay()//将缓冲器内容输出到屏幕{inti,l=strlen(showText);//循环变量,中间文字
6、信息的长度intOffset=MAXIMUS*2+2-l/2;//算出中间文字信息居中显示所在的横坐标位置if(Offset%2==1)//如果位置为奇数,则移动到偶数,避免混乱{Offset--;}Copy(buff[MAXIMUS]+Offset,showText);//讲中间文字信息复制到缓冲器if(l%2==1)//如果中间文字长度为半角奇数,则补上空格,避免混乱{*(buff[MAXIMUS]+Offset+l)=0x20;}system("cls");//清理屏幕,准备写入for(i=0;i7、循环写入每一行printf("%s",buff[i]);if(i8、9、j==MAXIMUS10、)//如果是棋上下盘边缘则没有连接的竖线,用空格填充位置{if(i!=MAXIMUS)write(" ");}else//如果在棋盘中间则用竖线承接上下{if(i=
7、循环写入每一行printf("%s",buff[i]);if(i8、9、j==MAXIMUS10、)//如果是棋上下盘边缘则没有连接的竖线,用空格填充位置{if(i!=MAXIMUS)write(" ");}else//如果在棋盘中间则用竖线承接上下{if(i=
8、
9、j==MAXIMUS
10、)//如果是棋上下盘边缘则没有连接的竖线,用空格填充位置{if(i!=MAXIMUS)write(" ");}else//如果在棋盘中间则用竖线承接上下{if(i=
此文档下载收益归作者所有