- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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;//回合数归零
您可能关注的文档
最近下载
- 发那科机器人DCS双重安全性检查功能说明书FANUC.pdf VIP
- 2024仁爱版七年级英语下册Unit 12 Lesson 1 Better Together每课时教学设计汇编(含8个教学设计).pdf VIP
- 泪液排出系统疾病的护理.pptx VIP
- 健康顾问:养生保健典藏本.pdf VIP
- 部编版历史八年级上册第一、二单元 测试卷(含答案).pdf VIP
- T_SCJA 9-2021_非道路车辆类型.pdf VIP
- iec61850icd模型文件属性详解.pdf VIP
- 05-03-光纤陀螺方案和技术 光纤传感原理课件.pdf VIP
- 2025江苏中职职教高考(烹饪类)讲义知识考点复习资料.pdf VIP
- 初中班会课件《突围—目标成就未来》.pptx VIP
文档评论(0)