五子棋简化版 -- 三子棋
相信大家对五子棋很熟悉吧,但是我们如何用C语言来写一个五子棋游戏呢?这对于我们初学者来说可能有点困难,但是我们何尝不能先把问题简化一下呢?先易后难,循序渐进才是学习的王道。让我们一起来看一下简化后的三子棋规则是什么样子的。
三子棋规则:
棋盘为3*3的棋盘,玩家先手,电脑随机落子
若一行、一列或者对角线都为相同的棋子,则相应的玩家获胜
如何把这些规则转化成我们的代码呢?
1、主程序初步设计
我们先不管三七二十一,一上来就写个main函数,然后我们站在整体的角度考虑一下这个游戏的整体流程。最开始,我们是不是要先打印一个空的棋盘,然后循环的玩家落子,电脑落子,每一次玩家和电脑落子后检查是否有赢家或者和棋。那我们的主程序基本是这样子的。
int main(){
while(1){
PrintBoard(); //打印棋盘
UserPlay(); //用户落子
PrintBoard(); //打印棋盘
ComputerPlay(); //电脑落子
}
}
2、棋盘设计
三子棋是一个3*3的棋盘,那么我们可以用一个3*3的数组来充当棋盘,这里我们定义一个全局数组
char g_chess_board[3][3] = { 0 };
现在棋盘有了,我们要对棋盘进行初始化,总不可能让用户看到一堆零,这样不太美观,我们把数组内的元素全部赋值为空格,这样我们就有了一个空的棋盘。
void Init(){
for (int row = 0; row < 3; row++){
for (int col = 0; col < 3; col++){
g_chess_board[row][col] = ' ';
}
}
}
3、对棋盘进行显示
虽然我们已经在代码里定义好了一个棋盘,若想要用户看到我们这个棋盘,就必须对其进行显示,总不可能让用户自己在脑海里YY吧。以下是我们的显示代码:
void PrintBoard(){
printf("┌───┬───┬───┐\n");
for (int count = 0; count < 3; count++){
printf("│ │ │ │\n");
printf("│ %c │ %c │ %c │\n", g_chess_board[count][0],
g_chess_board[count][1], g_chess_board[count][2]);
printf("│ │ │ │\n");
if (count !