#include
#include
#include
#include
#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;//回合數
//修改過的字串複製函式,會忽略末端的\0
char* copy(char* strdest,const
char* strsrc)
return strdestcopy;
}//初始化乙個對局函式
void initialize()
}cx=cy=maximus/2;//重置游標到**
now=1;//重置當前為黑方
}//獲得棋盤中指定座標交點位置的字元,通過製表符拼成棋盤
char* getstyle(int i,int j)
//獲得指定座標交點位置左上格的樣式,通過製表符來模擬游標的顯示
char* getcurse(int i,int j)else
if(i==cx+1)
return
" ";//如果不在游標附近則為空
}//向緩衝器寫入字串
void write(char* c)
//緩衝器寫入位置提行
void ln()
//將緩衝器內容輸出到螢幕
void display()
copy(buff[maximus]+offset,showtext);//講中間文字資訊複製到緩衝器
//如果中間文字長度為半形奇數,則補上空格,避免混亂
if(l%2==1)
system("cls");//清理螢幕,準備寫入
for(i=0;i2+1;i++)
}//將整個棋盤算出並儲存到緩衝器,然後呼叫display函式顯示出來
void print()else
}//如果是最後一次迴圈,則只需要處理邊側字元,交點要少一排
if(j==maximus)
ln();//提行開始列印交點內容
write(" ");//用空位補齊位置
//按橫座標迴圈正常的次數
for(i=0;i//寫入交點字元
//如果不在最右側則補充乙個橫線承接左右
if(i!=maximus-1)else}}
ln();//寫完一行後提行
}display();//將緩衝器內容輸出到螢幕
}//在當前游標位置走子,如果非空,則返回0表示失敗
int put()else
}//勝負檢查,即判斷當前走子位置有沒有造成五連珠的情況
int check()
//進行整個對局,返回贏家資訊(雖然有用上)
int rungame()else
if(input==0x20)
return now;
}else
if(victor==2)
return now;
//如果回合數達到了棋盤總量,即棋盤充滿,即為平局
}else
if(count==maximus*maximus)
return
0; }
}//如果按下的是方向鍵,會填充兩次輸入,第一次為0xe0表示按下的是控制鍵
}else
if(input==0xe0)
if(cx<0)cx=maximus-1;//如果游標位置越界則移動到對側
if(cy<0)cy=maximus-1;
if(cx>maximus-1)cx=0;
if(cy>maximus-1)cy=0;}}
}//主函式
int main()
}
效果如下:
C語言實現簡單五子棋遊戲
在生活中五子棋是乙個十分普遍的一款遊戲,今天讓我們一起來實現這款遊戲。1.初始化棋盤 char ret 資料儲存在乙個二維陣列中,玩家下去 電腦下去 char board row col 最開始為全是空格 initboard board,row,col 初始化棋盤 我們利用initboard函式來初...
C語言實現五子棋
首先展示結果,這是執行以後出現的效果,在 定義棋盤大小 int p maximus maximus 儲存對局資訊 char buff maximus 2 1 maximus 4 3 輸出緩衝器 int cx,cy 當前游標位置 int now 當前走子的玩家,1代表黑,2代表白 int wl,wp ...
C語言實現五子棋
可以稱得上史上最簡單的五子棋版本了。可以使用curses庫來改進頁面和下棋方式。並且對於輸入的座標沒有進行鑑別,如果輸入的座標超過棋盤大小,就會段錯誤退出。我改進了一點,但是還是沒有完全避免這個問題。gobang.c include include define n 15 int chessboar...