眾所周知,三子棋棋盤其實是乙個就九方格,所以我們首先要定義乙個二維陣列來實現存放棋子。每乙個方格我們規定為佔三個小格例如 ' x ',且必須有分隔符來分開棋子。
棋局開始時,棋盤必須是空的,所以我們首先的初始化陣列,將每乙個元素都置為' ',然後再來實現棋盤的功能,棋盤的初始化**如下;
void initboard(char board[row][col], int row, int col)
}}棋盤是乙個二維陣列,且每乙個元素都要用分隔符來分隔它們,橫行用『 | ',豎列用『—'。一行有三個元素所以用兩個『 | ',有三列所以用兩個『—'。而且在『—'所佔的一行也要加『 | '。棋盤的實現**如下:
void showboard(char board[row][col], int row, int c程式設計客棧ol)
} //換行
printf("\n");
//橫線只有2行
if (i < row - 1)
}printf("\n");
} }printf("********************=\n");
}這兩步完成後,棋盤的實現就完成了
棋盤實現後,接下來就是落子,我們得寫兩個函式:乙個是玩家落子,乙個是電腦落子。
玩家落子通過陣列元素的賦值來實現,通過賦值我們可以把『 '換成『x'(我規定玩家落子為『x'),而且對玩家落子有個規定只能填1~3的數,超過規定我們就要提示玩家落子不規範,玩家落子還不能落在陣列不為' 『的地方,玩家落在陣列不為『 '的地方,我們要提示玩家正確落子。以上這些,我們要寫乙個while迴圈來讓玩家正確落子,再在迴圈寫乙個if判斷語句以此來判斷玩家是否正確落子 ,並且玩家沒有正確落子這個迴圈就一直存在,在**如下:
下面展示一些 內聯**片。
void playermove(char board[row][col], int rowww.cppcns.comw, int col)
else
}else}}
電腦落子跟玩家相似,但是電腦落子少了一些提示語句,多用了乙個函式-rand函式,並且為了遊戲的趣味性,我們傳入了乙個srand((unsigned)time(null))(這個我www.cppcns.com放在main函式裡);作為隨機數種子,讓電腦每一次落子的地方都不一樣,若不使用它,電腦落子的地方和順序都一樣。
void computermove(char board[row][col], int row, int col)
}}判斷輸贏我們要分兩步,一步是判斷平局,一步是判斷睡贏;
平局的判斷方法是判斷棋盤是否還有空餘位置。在下棋過程中,我們判斷棋盤中如果沒有了『 ',並且沒有判斷誰贏,這時候,我們就判斷為平局;
static int isfull(char board[row][col], int row, int col)
} }return 1;//說明當前平局
}判斷誰贏我們有三種方法,並且每一種方法要寫兩種不同的情況;1、行相等:每一行都是'x'或者是『o',我們規定『x'為玩家贏;'o'為電腦贏;2、列相等;判斷情況與第一種相似;3、斜相等,判斷斜相等要注意下標的變化。
char iswin(char board[row][col], int row, int col)
} //列
for (int j = 0; j < col; j++) }
if (board[0][0] == board[1][1] && board[1][1] == board[2][2]
&& board[0][0] != ' ')
if (board[0][2] == board[1][1] && board[1][1] == board[2][0]
&& board[0][2] != ' ')
//是否是平局
if (isfull(board, row, col) == 1)
return ' ';//沒有平局 正常的情況下
}程式執行開始,我們要建乙個選單,來讓玩家選擇是否進入遊戲;
下面展示一些 內聯**片。
void menu()
玩家先落子,而且每一次落子之後都要重新列印棋盤,還有每一次落子之後我們都判斷輸贏和是否平局;這樣乙個三子棋遊戲就寫成了!!!
下面展示一些 內聯**片。
void game()
; initboard(board, row, col);
showboard(board, row, col);
char ret;
while (1)
showboard(board, row, col);
computermove(board, row, col);
ret = iswin(board, row, col);
if (ret != ' ')
showboard(board, row, col);
} if (ret == 'x')
else if (ret == 'o')
else if (ret == 'q')
}int main()
} while (input != 0);
return 0;
}
C語言實現簡單的三子棋
一 主要思想 1 建立乙個3 3的棋盤 使用字元陣列 2 初始化棋盤 用空格填充 3 列印棋盤 使其有可見的邊框 4 玩家落子,用x表示 檢驗是否越界,是否已經落子,是否贏 5 電腦落子,用o表示 檢驗是否已經落子,是否贏 注 電腦在有效範圍內隨機落子,使用當前時間戳設定隨機種子即srand tim...
C語言實現三子棋
game.h define crt secure no warnings 1 ifndef game h define game h include include include include define rows 3 define cols 3 void init board char bo...
三子棋C語言實現
要寫這個三子棋的程式我們分為三個部分首先是宣告函式的標頭檔案,我們分別宣告了五個函式,初始化棋盤,列印棋盤,玩家走,電腦走,檢查是否贏了。之後我們寫測試 然後分別來實現這五個函式 define crt secure no warnings 1 ifndef game h define game h ...