五子棋代码C语言版.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
#include stdlib.h #include stdio.h #include conio.h #include string.h #include malloc.h struct rcd;//声明节点结构 typedef struct rcd* Record;//节点指针别名 typedef struct rcd record;//节点别名 #define MAXIMUS 15 //定义棋盘大小 int p[MAXIMUS][MAXIMUS];//存储对局信息 char buff[MAXIMUS*2+1][MAXIMUS*4+3];//输出缓冲器 int Cx,Cy;//当前光标位置 int Now;//当前走子的玩家,1代表黑,2代表白 int wl,wp;//当前写入缓冲器的列数和行数位置 char* showText;//在棋盘中央显示的文字信息 int count;//回合数 int Putable;//指示当前是否可以走棋 int Exiting;//1为当场上无子并按ESC时询问是否退出程序的状态,2为非此状态 int ExiRep;//1为当回放到最后一回合并按向后时询问是否退出回放的状态,2为非此状态 Record RecBeg,RecNow;//记录的开始节点和当前节点 struct rcd//记录节点结构,双链表形式 { int X;//此记录走棋的X坐标 int Y;//此记录走棋的Y坐标 Record Next;//前一个记录 Record Back;//后一个记录 }; Record newRecord()//记录节点构造函数 { Record r=(Record)malloc(sizeof(record));//申请一个节点对象 r-Next=NULL;//给予前后节点初值NULL r-Back=NULL; return r; } void Exit()//检查退出程序 { int input; if(Exiting)//如果是第二次按下ESC { exit(0); } else//如果是第一次按下ESC则询问是否退出程序 { showText=是否退出?再次按下ESC退出,其他键返回; Exiting=1;//指示已经按下过ESC } } void ExitRep()//检查退出回放 { int input; if(ExiRep)//如果是第二次后移 { ExiRep=3; } else//如果是第一次后移则询问是否退出回放 { showText=是否退出?再次后移退出回放,其他键返回; ExiRep=1;//指示已经按下过后移 } } void AddRecord()//添加记录 { RecNow-X=Cx;//记录坐标 RecNow-Y=Cy; RecNow-Next=newRecord();//创建下一个记录节点 RecNow-Next-Back=RecNow;//完成双链表 RecNow=RecNow-Next;//当前记录推至下一个记录节点 } int DelRecord()//删除当前记录节点,1为删除成功,0为删除失败 { Record b;//上一个节点 if(RecNow-Back!=NULL)//越界检查 { b=RecNow-Back;//缓存上一个节点 free(RecNow);//释放当前节点 RecNow=b;//当前记录回至上一个记录节点 return 1; } else { return 0;//没有节点可删除时 } } void CleanRecord()//清理所有记录 { Record n;//下一个节点 while(RecBeg-Next!=NULL)//删除所有记录,直到越界前为止 { n=RecBeg-Next;//记下下一个节点 free(RecBeg);//释放当前节点 RecBeg=n;//当前记录推至下一个记录节点 } } char* Copy(char* strDest,const char* strSrc)//修改过的字符串复制函数,会忽略末端的\0 { char* strDestCopy = strDest; while (*strSrc!=\0) { *strDest++=*strSrc++; } return strDestCopy; } void Initialize()//初始化一个对局函数 { int i,j;//循环变量 system(title 对局中(按方向键控制光标,空格走子),Esc撤销); showText=;//重置显示信息 count=0;//回合数归零

文档评论(0)

anma + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档