C語言實現簡易五子棋

2021-09-16 20:00:56 字數 2188 閱讀 4152

用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...