day08 1 C語言實現N子棋V2 0 改進版

2021-10-11 02:36:04 字數 3380 閱讀 9431

相比v1.0,v2.0在判斷輸贏的演算法上進行了優化,將適用於n子旗的模式

將三個檔案合併成乙個檔案

加入了更多注釋

使排版更加合理

將row(行數)後面的數字改為你想要的數字

將col(列數)後面的數字改為你想要的數字

由於n字旗的特殊規則:建議將row=col

若不相等則本**將對斜著的情況取斜著的個數為行數時獲勝

#define _crt_secure_no_warnings 1

#define row 3

#define col 3

#include

#include

#include

//宣告

void

test()

;void

menu()

;void

game()

;void

initboard

(char board[row]

[col]

,int row,

int col)

;//初始化棋盤

void

displayboard

(char board[row]

[col]

,int row,

int col)

;//列印棋盤

void

playermove

(char board[row]

[col]

,int row,

int col)

;//玩家下棋

void

computermove

(char board[row]

[col]

,int row,

int col)

;//電腦下棋

char

iswin

(char board[row]

[col]

,int row,

int col)

;//判斷是否贏或和棋

intisfull

(char board[row]

[col]

,int row,

int col)

;//判斷是否和棋

//主函式呼叫test完成遊戲測試

intmain()

//test:描述遊戲進行流程

void

test()

}while

(input);}

//遊戲選單

void

menu()

遊戲的主程式:遊戲的實現

void

game()

;//全部空格

//為了以後想玩m*n子棋,以後在定義中直接修改就可以實現

char ret =0;

//初始化棋盤

initboard

(board, row, col)

;//初始化棋盤

displayboard

(board, row, col)

;//列印棋盤

while(1

)//玩家電腦輪流下

//電腦下棋

computermove

(board, row, col)

;displayboard

(board, row, col)

;//列印棋盤讓玩家看

//判斷電腦是否贏

ret =

iswin

(board, row, col);if

(ret !=

'c')}if

(ret ==

'*')

else

if(ret ==

'#')

else

if(ret ==

'q')

}//初始化棋盤

void

initboard

(char board[row]

[col]

,int row,

int col)}}

//列印棋盤

//期望列印成這個樣子:

// | |

//---|---|---

// | |

//---|---|---

// | |

void

displayboard

(char board[row]

[col]

,int row,

int col)

printf

("\n");

//換行

//2.列印分割行

if(i < row -1)

//防止最後一行列印

printf

("\n");

}}}//玩家下棋

void

playermove

(char board[row]

[col]

,int row,

int col)

else

}else}}

//電腦下棋

void

computermove

(char board[row]

[col]

,int row,

int col)}}

//判斷是否和棋

//返回1表示棋盤滿了

//返回0表示棋盤沒滿

intisfull

(char board[row]

[col]

,int row,

int col)}}

return1;

//滿了

}//判斷是否贏或和棋

char

iswin

(char board[row]

[col]

,int row,

int col)

}//豎n列

for(i =

0; i < col; i++

)//列

}//斜方向

int count3 =0;

for(i =

0; i < row; i++)}

//橫n行

for(i =

0; i < row; i++)}

//豎n列

for(i =

0; i < col; i++

)//列

}//斜方向

int count5 =0;

for(i =

0; i < row; i++)}

//判斷是否和棋if(

1==isfull

(board, row, col)

)else

}//玩家*電腦#平局q繼續c

C語言實現三(n)子棋

關於這個遊戲,我們完全可以用二維陣列來實現,利用二維陣列模擬出乙個棋盤,比如board row col 其中row代表行數,col代表列數。用函式來實現遊戲中的各種行為,並判斷每一次落子後的輸贏,平局,還是未分出勝負繼續進行遊戲。接下來看看實現的 include include include in...

C語言實現井子棋(多子棋)遊戲

標頭檔案 game.h 主函式檔案 主入口 和函式實現檔案 game.c 前言一 主函式檔案 主入口 二 標頭檔案 game.h 三,標頭檔案函式實現檔案 game.c 當然電腦是隨機的沒有相應演算法實現 電腦計算下棋判斷下 贏,所以這裡電腦是隨機下的都是隨機值 include include ga...

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