- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
纯C语言做的键盘操作的五子棋
为了帮助初学者理解,注释非常详细,希望对初学者有所启发!#include stdlib.h#include stdio.h#include conio.h#include string.h#define MAXIMUS 15 //定义棋盘大小int p[MAXIMUS][MAXIMUS];//存储对局信息char buff[MAXIMUS*2+1][MAXIMUS*4+3];//输出缓冲器intCx,Cy;//当前光标位置int Now;//当前走子的玩家,1代表黑,2代表白intwl,wp;//当前写入缓冲器的列数和行数位置char* showText;//在棋盘中央显示的文字信息int count;//回合数char* Copy(char* strDest,const char* strSrc)//修改过的字符串复制函数,会忽略末端的\0{char* strDestCopy = strDest;while (*strSrc!=\0){*strDest++=*strSrc++;}return strDestCopy;}void Initialize()//初始化一个对局函数{inti,j;//循环变量showText=;//重置显示信息count=0;//回合数归零for(i=0;iMAXIMUS;i++)//重置对局数据{for(j=0;jMAXIMUS;j++){p[i][j]=0;}}Cx=Cy=MAXIMUS/2;//重置光标到中央Now=1;//重置当前为黑方}char* getStyle(inti,int j)//获得棋盘中指定坐标交点位置的字符,通过制表符拼成棋盘{if(p[i][j]==1)//1为黑子return ●;else if(p[i][j]==2)//2为白子return ○;else if(i==0j==0)//以下为边缘棋盘样式return ┏;else if(i==MAXIMUS-1j==0)return ┓;else if(i==MAXIMUS-1j==MAXIMUS-1)return ┛;else if(i==0j==MAXIMUS-1)return ┗;else if(i==0)return ┠;else if(i==MAXIMUS-1)return ┨;else if(j==0)return ┯;else if(j==MAXIMUS-1)return ┷;return ┼;//中间的空位}char* getCurse(inti,int j){//获得指定坐标交点位置左上格的样式,通过制表符来模拟光标的显示if(i==Cx){if(j==Cy)return ┏;else if (j==Cy+1)return ┗;}else if(i==Cx+1){if(j==Cy)return ┓;else if (j==Cy+1)return ┛;}return ;//如果不在光标附近则为空}void write(char* c)//向缓冲器写入字符串{Copy(buff[wl]+wp,c);wp+=strlen(c);}void ln()//缓冲器写入位置提行{wl+=1;wp=0;}void Display()//将缓冲器内容输出到屏幕{inti,l=strlen(showText);//循环变量,中间文字信息的长度int Offset=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;iMAXIMUS*2+1;i++){//循环写入每一行printf(%s,buff[i]);if(iMAXIMUS*2)//写入完每一行需要换行printf(\n);}}void Print()//将整个棋盘算出并储存到缓冲器,然后调用Display函数显示出来{inti,j;//循环变量wl=0;wp=0;for(j=0;j=MAXIMUS;j++)//写入出交点左上角的字符,因为需要打印棋盘右下角,所以很以横纵各多一次循环{for(i=0;i=MAXIMUS;i++){write(getCurse(i,j));//写入左上角字符if(j==0||j==MAXIMUS)//如果是棋上下盘边缘则没有连接的竖线,用空格填充位置{if(i!=MAXIMUS)write( );}else//如果在棋盘中间
您可能关注的文档
- 小型泵站安全施工组织设计.docx
- 山东省临沂市2011年高三教学质量检测考试1.doc
- 全国2014年07月高等教育自学考试劳动法试题及答案.docx
- 广东省揭阳市2013-2014学年高一下学期学业水平考试(地理)[来源:学优高考网750080].doc
- GEK-114708 HMI软件用户手册 Vol. II-操作员站软件V1.0.pdf.pdf
- 建设工程法规及相关知识综合测试题.doc
- 景观设计师模拟(C)卷.docx
- 建设工程合同考试重点.docx
- 工程量清单计价模式下建设单位的风险分析.ppt
- 暖通CAD教学讲义2.doc
- 2-红河州建筑施工安全生产标准化工地复核评分表(2022年修改版).docx
- 6.锡通项目2018年下半年工作会汇报材料(2018.7.9).docx
- 2018道路工程知识点汇总(新版).docx
- 附件3:月度生产例会安全汇报资料-站台门项目部.docx
- 附件2:广东建工集团2018年度科技成果汇总表.DOC
- 马武停车区、三汇停车区停车位管理系统,0#台账缺量.doc
- 攀成钢委办发〔2015〕19号(党风廉政建设责任考核与追究办法).doc
- 1-红河州建筑工程质量管理标准化复核评分表(2022年修改版).docx
- 中交第三公路工程局第四工程分公司项目经济合同结算管理办法(修订).doc
- 厂站安全操作规程汇编.doc
最近下载
- 提高施工现场的安全作业进及保障.pptx VIP
- 2024-2025学年初中道德与法治七年级下册统编版(部编版)(2024)教学设计合集.docx
- 人教版六年级数学下期《圆柱与圆锥》专项应用题.docx
- 基础化学教程(无机与分析化学)(第二版)傅洵习题参考答案.pdf
- 【新教材】湘教版(2019)高中地理必修第一册课本活动题答案.docx
- 2024年贵州省毕节市中考英语试题卷(含答案逐题解析).docx
- 运动治疗Brunnstrom技术.pptx VIP
- 彩链招商方案彩色三维码 彩链代理招商方案.ppt VIP
- 模拟电子技术基础期末试题.doc VIP
- 公路养护作业单位资质管理系统企业用户手册.doc
文档评论(0)