vs五子棋c语言代码,五子棋代码C语言版.doc
#include
#include
#include
#include
#include
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撤銷");
showT
總結
以上是生活随笔為你收集整理的vs五子棋c语言代码,五子棋代码C语言版.doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 编译原理lr(0)c语言,关于编译原理:
- 下一篇: c语言编程矩阵主对角线相同,急求!c语言