用c語言寫乙個簡單的五子棋遊戲,可以實現玩家與電腦的對弈,玩家先落子,然後電腦落子,直到有一方五個棋子連成一線則取得勝利。
1、首先我們先寫乙個選單,在玩家一進入遊戲時做乙個提醒,玩家輸入1時進入遊戲,輸入0時退出遊戲,輸入其它則提示輸入有誤。
int menu()
2、根據遊戲的進行步驟來理一下思路,方便後續程式編寫。
將棋盤最大行數與列數定義為巨集,並將棋盤元素定義為全域性變數
#define max_row 10
#define max_col 10
char chess_board[max_row][max_col];
//1、初始化棋盤。
void init()
}}
//2、列印棋盤
這一步只要能列印出預想的棋盤效果即可,沒有固定的**,這裡我做了乙個簡單的格仔棋盤。因為是9*9的棋盤,為了方便輸入落子座標,同時也列印了每行每列的數字標識。
void print()
printf("\n");
printf(" ");
for (int i = 0; i < max_col; ++i)
printf("\n");
for (int row = 0; row < max_row; ++row)
printf("\n");
//for (int row = 0; row < max_row; ++row)
if (row == max_row - 1)
}}
棋盤列印出來的樣式:
//3、玩家落子
玩家在電腦上輸入要落子的位置座標,判斷合法性,如果非法,則通過while迴圈提示玩家重新落子。
void playermove()
if (chess_board[row][col] != ' ')
chess_board[row][col] = 'x';
break;
} printf("玩家落子完畢!\n");
}
//4、檢測勝負
檢測落子位置是否同行、同列或對角線處五子連成一線,判斷輸贏,這裡我們還需要根據棋盤是否已滿來判斷是否平局。用檢測勝負和判斷棋盤是否已滿兩個函式來實現。
//返回值表示勝利者是誰
//x表示玩家勝
//o表示電腦勝
//q表示和棋
//『 』表示未分出勝負
int isfull()
} }return 1;
}char checkwinner()
} }for (int row = 0; row < (max_row - 4); ++row)
} }for (int row = 0; row < (max_row - 4); ++row)
} }for (int row = 0; row < (max_row - 4); ++row)
} }//棋盤滿並且未分出勝負
if (isfull())
return ' ';
}
//5、電腦落子
這一步通過srand函式隨機生成一組座標作為電腦落子座標位置,並檢測其合法性。為了增加可玩性,也可以新增ai演算法增強電腦落子的智慧型性,我這裡沒有實現,大家感興趣可以深入**一下。
void computermove()
chess_board[row][col] = 'o';
break;
} printf("電腦落子完畢!\n");
}
//6、檢測勝負
同上整個五子棋的實現思路就是這樣,最後在game()函式中呼叫所有的模組,並通過main函式完成**功能。
執行效果:
選單欄:
簡易五子棋程式(C語言實現)
這好像是大一時候參加的乙個短期課程的最後部分。理解程式,不建議充當ctrlcv素材。步驟 一 畫棋盤 1.陣列初始化 2.pos設定游標,實現換行 二 畫棋子,實現迴圈下棋 三 判斷五子連珠 四 遊戲結束 include include include include 全域性變數 char boar...
C語言實現五子棋
首先展示結果,這是執行以後出現的效果,在 定義棋盤大小 int p maximus maximus 儲存對局資訊 char buff maximus 2 1 maximus 4 3 輸出緩衝器 int cx,cy 當前游標位置 int now 當前走子的玩家,1代表黑,2代表白 int wl,wp ...
C語言實現五子棋
可以稱得上史上最簡單的五子棋版本了。可以使用curses庫來改進頁面和下棋方式。並且對於輸入的座標沒有進行鑑別,如果輸入的座標超過棋盤大小,就會段錯誤退出。我改進了一點,但是還是沒有完全避免這個問題。gobang.c include include define n 15 int chessboar...