用C語言實現簡單的控制台三子棋遊戲

2021-10-10 05:02:21 字數 3226 閱讀 8614

首先,確定一局遊戲的基本流程:

建立棋盤並初始化。(將棋盤看作乙個二維陣列)

列印顯示出棋盤。

玩家落子(玩家通過輸入行列座標的方式來落子)。

判定勝負關係。(如果玩家勝出,則退出遊戲。)

電腦落子(隨機位置落子) 。

判定勝負關係(如果電腦勝出,退出遊戲。否則,回到步驟 2 繼續執行。)

第一步,此處通過構造menu()函式搭建乙個簡單的互動選單和玩家互動,用來判斷是否開始進行一局遊戲。

#define _crt_secure_no_warnings

#include

#include

intmenu()

intmain()

else

if(choice ==0)

}system

("pause");

return0;

}

第二步,對第一步中呼叫的game()函式進行構造。game()函式為核心功能函式,其主要任務是完成基本流程。

1.構建初始化init()函式。初始化乙個3*3的二維陣列,將它當做棋盤,並將陣列元素全部初始化為0。

void

init

(char chessboard[max_row]

[max_col])}

}

2.構建棋盤列印printchessboard()函式。運用for迴圈列印出3*3的棋盤。

void

printchessboard

(char chessboard[max_row]

[max_col]

)}

3.構建玩家落子playermove()函式,玩家通過輸入行列座標的方式來落子。此過程中需要判斷:1.玩家輸入的行列座標是否在棋盤的合理位置。2.玩家輸入的行列座標位置是否已經有棋子。

void

playermove

(char chessboard[max_row]

[max_col]

)// 校驗玩家落子位置是否已經有子了。

if(chessboard[row]

[col]

!=' '

)// 真正落子。用「x」表示玩家落子。

chessboard[row]

[col]

='x'

;break;}

}

4.構建乙個computermove()函式來控制電腦落子。通過電腦產生一系列隨機數來控制棋子落在棋盤座標範圍內。

void

computermove

(char chessboard[max_row]

[max_col]

) chessboard[row]

[col]

='o'

;break;}

}

在該函式模組中,電腦落子隨機位置的生成通過rand()函式控制,需要注意的是,我們需要通過設定隨機種子來避免「偽隨機」的出現。

srand((

unsigned

int)

time(0

));//以當前時間戳作為隨機種子。

5.構建iswin()函式判斷是否勝利。此處人為約定該函式的返回結果的含義: 『x』 表示玩家獲勝。『o』 表示電腦獲勝。 』 』 表示勝負未分。 『q』 表示和棋。

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])

// 判定是否和棋。看棋盤中是否有剩餘空間。

//呼叫了isfull函式。if(

isfull

(chessboard)

)return

' ';

}

6.構造isfull()函式用來判斷棋盤中是否有剩餘空間供玩家落子,以便判斷是否是和棋。

int

isfull

(char chessboard[max_row]

[max_col])}

}return1;

}

最後,根據組合呼叫上面的幾個功能函式,我們可以獲得最終的game()函式的整體架構。

void

game()

;init

(chessboard)

;//呼叫初始化函式

char winner =

' ';

while(1

)// 5. 電腦落子(隨機位置落子)

computermove

(chessboard)

;// 6. 判定勝負關係

winner =

iswin

(chessboard);if

(winner !=

' ')

}printchessboard

(chessboard);if

(winner ==

'x')

else

if(winner ==

'o')

else

}

勝利啦!失敗了!

此處有棋子!

用C語言實現簡單的三子棋

首先我們得先有個進入遊戲選單的頁面,用簡單的幾句printf語句組成就好。void menu 再用乙個接收器來接受並進入遊戲中,這裡用到乙個do while迴圈來讓我們反覆進行遊戲直到選擇退出。int main while choice return 0 當使用者選擇1時則進入遊戲,選擇0時則推出遊...

三子棋 用c語言實現

問題描述 三子棋就是雙方落棋子,直到其中一方所落棋子行,列或者對角線連成一條線。或者棋下滿,這一種情況是平局。問題分析 三子棋就是和計算機你一步我一步來實現。首先,得先製作乙個選單提示使用者玩還是退出,這裡用switch語句較為合適一些 我們使用幾個標記,x表示人下的棋子,o表示計算機下的棋子 n表...

用C語言實現三子棋

首先我們需要建立兩個原始檔分別為test.c與game.c前者為遊戲的測試,後者為遊戲相關函式的定義,同時建立相應的名為game.h的原始檔宣告相關函式。接下來可以開始搭建主函式框架了,因為不管如何,都會至少進入一次遊戲,由玩家確定退出或繼續,因此,筆者在該處運用do while迴圈實現基本框架。i...