c語言井字棋(三子棋)簡易版

2021-10-10 04:51:57 字數 4701 閱讀 1360

遊戲的棋盤為3*3 的九宮格模式,( 玩家 vs 電腦 )

只要玩家(電腦)的某個方向的棋子連成一條線,就是玩家(電腦)或獲勝。『1』表示玩家、『2』表示電腦。

此時就算是玩家勝利

玩家進行選擇『0』表示開始遊戲,『1『表示退出遊戲、此處我們需要進行判斷玩家輸入是否有誤,輸入的值必須是0或者1,其他錯誤輸入需要進行提示,重新輸入,

int

menu()

return choice;

}

先建立乙個二位陣列表示棋盤,把陣列元素初始化為』 『空格進行表示

char chessboard[max_row]

[max_col]=;

char winner =

' ';

for(

int row =

0; row < max_row; row++

)}

-

printf

("+---+---+---+\n");

for(

int row =

0; row < max_row; row++

)

讓玩家落子,通過控制台輸輸入行列表的方式來實現;我們這裡用字元x表示玩家輸入;

玩家落子後需要進行校驗,1、輸入的座標不能超過陣列下標,2、下過子的地方不能再下

void

playermove

(char chessboard[max_row]

[max_col])if

(chessboard[row]

[col]

!=' '

) chessboard[row]

[col]

='x'

;break;}

}

電腦落子。隨機數判斷下過棋子的地方不能再生成,電腦生成的位置用 字元『o』來表示

void

computermove

(char chessboard[max_row]

[max_col]

) chessboard[row]

[col]

='o'

;break;}

}

判斷勝負關係:(玩家獲勝、電腦獲勝、和棋,還有預期之外的情況

我們用 『x』表示玩家獲勝 『o』表示電腦獲勝 『z』表示和其

// 『 』表示勝負未分 就是格仔沾滿了 還沒有分出勝負

int

isfull

(char chessboard[max_row]

[max_col])}

}return1;

}char

iswin

(char chessboard[max_row]

[max_col])}

for(

int col =

0; col < max_col; col++)}

if(chessboard[0]

[0]!=

' '&& chessboard[0]

[0]== chessboard[1]

[1]&& chessboard[0]

[0]== chessboard[2]

[2])

if(chessboard[2]

[0]!=

' '&& chessboard[2]

[0]== chessboard[1]

[1]&& chessboard[2]

[0]== chessboard[0]

[2])

// 判定是否和棋

// 看棋盤中是否有剩餘空間if(

isfull

(chessboard)

)return

' ';

}

再次回到創棋盤盼初始化中繼續執行

我們還需要繼續回到創棋盤盼初始化中繼續執行,玩家(機器)落乙個子如果條件內沒有滿足,則玩家(電腦)繼續下子,直到達到約束條件位置

接下來我們來演示完整的**描述

#define	_crt_secure_no_warnings

#include

#include

#include

#define max_row 3

#define max_col 3

//1、建立 棋盤並且初始化

//2、列印棋盤

//3、玩家落子(玩家輸入行列座標的方式落子)

//4、電腦落子

//5、判斷勝負

//再次回到2中繼續執行

//讓玩家落子,通過控制台輸輸入行列表的方式來實現;我們這裡用字元x表示玩家輸入;

//玩家落子後需要進行校驗,1、輸入的座標不能超過陣列下標,2、下過子的地方不能再下

void

playermove

(char chessboard[max_row]

[max_col])if

(chessboard[row]

[col]

!=' '

) chessboard[row]

[col]

='x'

;break;}

}//判斷是否和棋--------------沒有空格了就是何其了

intisfull

(char chessboard[max_row]

[max_col])}

}return1;

}// 判斷勝負關係 我們用 『x』表示玩家獲勝 『o』表示電腦獲勝 『z』表示和其

// 『 』表示勝負未分 就是格仔沾滿了 還沒有分出勝負

char

iswin

(char chessboard[max_row]

[max_col])}

for(

int col =

0; col < max_col; col++)}

if(chessboard[0]

[0]!=

' '&& chessboard[0]

[0]== chessboard[1]

[1]&& chessboard[0]

[0]== chessboard[2]

[2])

if(chessboard[2]

[0]!=

' '&& chessboard[2]

[0]== chessboard[1]

[1]&& chessboard[2]

[0]== chessboard[0]

[2])

// 判定是否和棋

// 看棋盤中是否有剩餘空間if(

isfull

(chessboard)

)return

' ';

}//電腦落子。隨機數-=-=-=-= 判斷下過棋子的地方不能再生成,電腦生成的位置用 字元『o』來表示

void

computermove

(char chessboard[max_row]

[max_col]

) chessboard[row]

[col]

='o'

;break;}

}void

game()

;char winner =

' ';

for(

int row =

0; row < max_row; row++)}

//2、列印棋盤

while(1

)//3、玩家落子;

playermove

(chessboard)

;//4、判斷勝負關係

winner =

iswin

(chessboard);if

(winner !=

' ')

//5、電腦落子 隨機數進行落子;依然是在迴圈內進行

computermove

(chessboard)

;//6、判斷勝負關係

winner =

iswin

(chessboard);if

(winner !=

' ')

}printf

("+---+---+---+\n");

for(

int row =

0; row < max_row; row++)if

(winner ==

'x')

if(winner ==

'o')

if(winner ==

'q')

}int

menu()

return choice;

}int

main()

else

if(choice ==1)

}system

("pause");

return0;

}

c語言程式設計三子棋(井字棋)

標頭檔案 test.h ifndef three chess h 防止標頭檔案被重複,包含 也可以用 pragma once define three chess h include include include pragma warning disable 4996 vs中解決scanf函式不能...

三子棋遊戲(井字棋)

1 首先,我們得先要有乙個棋盤,那我們就得先編寫乙個函式來將棋盤初始化,再編寫乙個函式負責列印我們的棋盤。我們列印的棋盤為 2 有了棋盤後,就可以下棋了。我們可以編寫兩個函式,乙個是玩家下棋子,乙個是電腦隨機下棋子。3 最後就是判斷是誰贏得了比賽,還是平局。這些就是三子棋的大致步驟了。以下就是實現三...

C語言實現簡易版三子棋遊戲

什麼是多檔案?多數大型的工程的標頭檔案和原始檔非常多,我們也不可能把所有的 都寫在同乙個檔案裡,這樣也不方便 的閱讀與維護,通常都會根據不同的功能將 分別書寫到多個原始檔與標頭檔案中。遊戲介紹 三子棋是個簡單的雙人遊戲,雙方在3x3的棋盤上輪流落子,當一條直線上出現三顆連續且相同的棋子時即獲勝。此程...