摘要:三子棋代碼耗時三天,本人很菜,瘋狂不細(xì)心寫代碼真的很累本代碼使用編譯所以使用了懂得都懂如果使用別的編譯器請注意將起改為宏定義行數(shù)為為行,為列不會列的英文宏定義列數(shù)為也可以改為大棋盤,但要更改游戲機(jī)制初始
**本代碼使用vs2019編譯
所以使用了scanf_s(懂得都懂)
如果使用別的編譯器請注意將起改為scanf
#include #include #include #define ROW 3//宏定義行數(shù)為3 ROW為行,LIE為列(不會列的英文)#define LIE 3//宏定義列數(shù)為3,也可以改為大棋盤,但要更改游戲機(jī)制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的數(shù)字就可以 { //玩家下棋 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("系統(tǒng)提示:請輸入您要下的坐標(biāo)"); printf("坐標(biāo)之間用空格隔開"); 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("坐標(biāo)被占用,請重新輸入/n"); printf("/n"); } } else { printf("超出坐標(biāo)范圍,輸入的橫縱都坐標(biāo)為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; } }}//判斷勝負(fù)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("系統(tǒng)提示:請選擇:>>>"); scanf_s("%d", &input); printf("/n"); switch (input) { case 1: game(); break; case 0: printf("游戲結(jié)束/n"); break; default: printf("非法輸入,請重新輸入/n"); break; } } while (input);}
**以下就是游戲進(jìn)行的過程
本人實力有限,游戲體驗可能不太好
**
各位有什么優(yōu)化游戲的建議可以指出
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/122564.html
摘要:三子棋目錄一問題介紹三子棋,在民間又叫井字棋。因為人們在游玩時常常不畫棋盤的邊框,正如漢字中的井字,多稱為井字棋。 三子棋 目錄 一、問題介紹 ? ? ? ? 三子棋,在民間又叫井字棋。因為人們在游玩時常常不畫棋盤的邊框,正如漢字中的井字,多稱為井字棋。 三子棋的游戲規(guī)則十分的簡單: ...
摘要:文章目錄三子棋的設(shè)置的內(nèi)容設(shè)置的設(shè)置棋盤的內(nèi)容棋盤以及棋盤的初始化打印棋盤下棋步驟玩家下棋電腦下棋判斷是否勝利三子棋三子棋的規(guī)則是在的棋盤里,雙方輪流下子以和表示,先將個子連成一條線橫豎斜都可以的一方獲勝下面是三子棋語 ...
摘要:今天博主將為大家?guī)碚Z言入門級小游戲三子棋井字棋的詳細(xì)介紹,希望這篇文章對大家能有幫助。在這里,我們使用函數(shù)來實現(xiàn)這一功能。 ?? ? ??今天博主將為大家?guī)鞢語言入門級小游戲——三子棋(井字棋)的詳細(xì)介紹,希望這篇文章對大家能有幫助?。?? ? ? 在編程的學(xué)習(xí)過程中,編寫一些中這樣...
摘要:簡單介紹了三子棋原理后接下來為大家講解分步目標(biāo)及代碼如何實現(xiàn)。電腦下棋我們實現(xiàn)了玩家和電腦的下棋后,我們需要編寫一個函數(shù)來判斷雙方的輸贏。我們使用函數(shù)來實現(xiàn)這一目標(biāo)。 目錄 1.三子棋原理 2.分塊代碼實現(xiàn) 3.總結(jié) 1.首先向大家介紹一下三子棋的原理 首先我們需要有一個棋盤,初始時棋...
閱讀 1965·2021-11-22 15:29
閱讀 3263·2021-10-14 09:43
閱讀 1228·2021-10-08 10:22
閱讀 3351·2021-08-30 09:46
閱讀 1437·2019-08-30 15:55
閱讀 1931·2019-08-30 15:44
閱讀 854·2019-08-30 14:19
閱讀 1450·2019-08-30 13:13