摘要:三子棋代碼耗時三天,本人很菜,瘋狂不細心寫代碼真的很累本代碼使用編譯所以使用了懂得都懂如果使用別的編譯器請注意將起改為宏定義行數為為行,為列不會列的英文宏定義列數為也可以改為大棋盤,但要更改游戲機制初始
**本代碼使用vs2019編譯
所以使用了scanf_s(懂得都懂)
如果使用別的編譯器請注意將起改為scanf
#include #include #include #define ROW 3//宏定義行數為3 ROW為行,LIE為列(不會列的英文)#define LIE 3//宏定義列數為3,也可以改為大棋盤,但要更改游戲機制void aBoard(char board[ROW][LIE], int row, int lie);//初始化棋子void printBoard(char board[ROW][LIE], int row, int lie);// 打印棋盤void Playergo(char board[ROW][LIE], int row, int lie); //人走void Computergo(char board[ROW][LIE], int row, int lie);//電腦走char ifWin(char board[ROW][LIE], int row, int lie);//判斷輸贏void menu(void);//菜單void test(void);//void game(void);//核心int main(void){ test(); return 0;}void game(void){ char p = 0; char board[ROW][LIE] = { 0 };//我也不知道為什么不能用‘ ’; //初始化棋子為空格 aBoard(board, ROW, LIE); //打印棋盤 printBoard(board, ROW, LIE); while (2)//非0的數字就可以 { //玩家下棋 Playergo(board, ROW, LIE); printBoard(board, ROW, LIE); //判斷玩家是否勝利 p = ifWin(board, ROW, LIE); if (p != "C") { break; } //電腦下棋 Computergo(board, ROW, LIE); printBoard(board, ROW, LIE); //判斷電腦是否勝利 p = ifWin(board, ROW, LIE); if (p != "C") { break; } } if (p == "*") { printf("YOU WIN/n"); printf("/n"); } else if (p == "#") { printf("COMPUTER WIN!/n"); printf("/n"); }}//游戲菜單void menu(void){ printf("-----------------------------------------------/n"); printf("-----------------------------------------------/n"); printf("*****輸入1.開始游戲 輸入0.退出游戲*****/n"); printf("-----------------------------------------------/n"); printf("-----------------------------------------------/n");}//初始化棋盤void aBoard(char board[ROW][LIE], int row, int lie){ for (int i = 0; i < row; i++) { for (int j = 0; j < lie; j++) { board[i][j] = " "; } }}//打印棋盤void printBoard(char board[ROW][LIE], int row, int lie){ for (int i = 0; i < row; i++) { for (int j = 0; j < lie; j++) { if (j < lie - 1) { printf(" %c |", board[i][j]); } else printf(" %c ", board[i][j]); } printf("/n"); if (i < row - 1) { for (int k = 0; k < lie; k++) { if (k < lie - 1) { printf("---|"); } else { printf("---"); } } } printf("/n"); }}//玩家輸入void Playergo(char board[ROW][LIE], int row, int lie){ int x = 0; int y = 0; while (1)//同上 { printf("系統提示:請輸入您要下的坐標"); printf("坐標之間用空格隔開"); scanf_s("%d%d", &x, &y); printf("/n"); //判斷xy是否合法,一個是是否超出,一個是是否被占用 if (x > 0 && x < row + 1 && y>0 && y < lie + 1) { if (board[x - 1][y - 1] == " ") { board[x - 1][y - 1] = "*"; break; } else { printf("坐標被占用,請重新輸入/n"); printf("/n"); } } else { printf("超出坐標范圍,輸入的橫縱都坐標為1到3;/n/n"); } }}void Computergo(char board[ROW][LIE], int row, int lie){ int x = 0; int y = 0; printf("本電腦走的飛快/n/n"); while (1) { x = rand() % row; y = rand() % lie; if (board[x][y] == " ") { board[x][y] = "#"; break; } }}//判斷勝負char ifWin(char board[ROW][LIE], int row, int lie){ int i = 0; //判斷行 for (i = 0; i < row; i++) { if (board[i][0] == board[i][1] && board[i][1] == board[i][2] && board[i][1] != " ") { return board[i][1]; } } //判斷列 for (i = 0; i < lie; i++) { if (board[0][i] == board[1][i] && board[1][i] == board[2][i] && board[1][i] != " ") { return board[1][i]; } } //判斷對角線 if (board[0][0] == board[1][1] && board[1][1] == board[2][2] && board[1][1] != " ") { return board[1][1]; } if (board[2][0] == board[1][1] && board[1][1] == board[0][2] && board[1][1] != " ") { return board[1][1]; } return "C";}void test(void){ srand((unsigned int)time(NULL)); int input = 0; do { menu(); printf("/n"); printf("系統提示:請選擇:>>>"); scanf_s("%d", &input); printf("/n"); switch (input) { case 1: game(); break; case 0: printf("游戲結束/n"); break; default: printf("非法輸入,請重新輸入/n"); break; } } while (input);}
**以下就是游戲進行的過程
本人實力有限,游戲體驗可能不太好
**
各位有什么優化游戲的建議可以指出
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/122564.html
摘要:三子棋目錄一問題介紹三子棋,在民間又叫井字棋。因為人們在游玩時常常不畫棋盤的邊框,正如漢字中的井字,多稱為井字棋。 三子棋 目錄 一、問題介紹 ? ? ? ? 三子棋,在民間又叫井字棋。因為人們在游玩時常常不畫棋盤的邊框,正如漢字中的井字,多稱為井字棋。 三子棋的游戲規則十分的簡單: ...
摘要:今天博主將為大家帶來語言入門級小游戲三子棋井字棋的詳細介紹,希望這篇文章對大家能有幫助。在這里,我們使用函數來實現這一功能。 ?? ? ??今天博主將為大家帶來C語言入門級小游戲——三子棋(井字棋)的詳細介紹,希望這篇文章對大家能有幫助?。?? ? ? 在編程的學習過程中,編寫一些中這樣...
摘要:簡單介紹了三子棋原理后接下來為大家講解分步目標及代碼如何實現。電腦下棋我們實現了玩家和電腦的下棋后,我們需要編寫一個函數來判斷雙方的輸贏。我們使用函數來實現這一目標。 目錄 1.三子棋原理 2.分塊代碼實現 3.總結 1.首先向大家介紹一下三子棋的原理 首先我們需要有一個棋盤,初始時棋...
閱讀 1955·2021-11-22 15:29
閱讀 3252·2021-10-14 09:43
閱讀 1222·2021-10-08 10:22
閱讀 3341·2021-08-30 09:46
閱讀 1430·2019-08-30 15:55
閱讀 1922·2019-08-30 15:44
閱讀 848·2019-08-30 14:19
閱讀 1438·2019-08-30 13:13