首先展示結果,這是執行以後出現的效果,在
//定義棋盤大小
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;
//回合數
char
*copy
(char
* strdest,
const
char
* strsrc)
//修改過的字串複製函式,會忽略末端的\0
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)
//向緩衝器寫入字串
voidln(
)//緩衝器寫入位置提行
void
display()
//將緩衝器內容輸出到螢幕
copy
(buff[maximus]
+ offset, showtext)
;//講中間文字資訊複製到緩衝器
if(l %2==
1)//如果中間文字長度為半形奇數,則補上空格,避免混亂
system
("cls");
//清理螢幕,準備寫入
for(i =
0; i
1; i++)}
void
print()
//將整個棋盤算出並儲存到緩衝器,然後呼叫display函式顯示出來
else
//如果在棋盤中間則用豎線承接上下}if
(j == maximus)
//如果是最後一次迴圈,則只需要處理邊側字元,交點要少一排ln(
);//提行開始列印交點內容
write
(" ");
//用空位補齊位置
for(i =
0; i
)//按橫座標迴圈正常的次數
else}}
ln();
//寫完一行後提行
}display()
;//將緩衝器內容輸出到螢幕
}int
put(
)else
}int
check()
//勝負檢查,即判斷當前走子位置有沒有造成五連珠的情況
intrungame()
//進行整個對局,返回贏家資訊(雖然有用上)
else
if(input ==
0x20
)//如果是空格則開始走子
return now;
}else
if(victor ==2)
//如果白方達到勝利,顯示提示文字並等待一次按鍵,返回勝利資訊
return now;
}else
if(count == maximus*maximus)
//如果回合數達到了棋盤總量,即棋盤充滿,即為平局
return0;
}}}else
if(input ==
0xe0
)//如果按下的是方向鍵,會填充兩次輸入,第一次為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語言實現五子棋
可以稱得上史上最簡單的五子棋版本了。可以使用curses庫來改進頁面和下棋方式。並且對於輸入的座標沒有進行鑑別,如果輸入的座標超過棋盤大小,就會段錯誤退出。我改進了一點,但是還是沒有完全避免這個問題。gobang.c include include define n 15 int chessboar...
C語言實現簡易五子棋
用c語言寫乙個簡單的五子棋遊戲,可以實現玩家與電腦的對弈,玩家先落子,然後電腦落子,直到有一方五個棋子連成一線則取得勝利。1 首先我們先寫乙個選單,在玩家一進入遊戲時做乙個提醒,玩家輸入1時進入遊戲,輸入0時退出遊戲,輸入其它則提示輸入有誤。int menu 2 根據遊戲的進行步驟來理一下思路,方便...
C語言實現 五子棋遊戲
之前我們實現了關於電腦版的三子棋的遊戲玩法和思路,今天我們來實現五子棋的玩法和思路 和三子棋的很多思路很相似 define crt secure no warnings include include include define row 10 define col 10 char border r...