首先,確定一局遊戲的基本流程:第一步,此處通過構造menu()函式搭建乙個簡單的互動選單和玩家互動,用來判斷是否開始進行一局遊戲。建立棋盤並初始化。(將棋盤看作乙個二維陣列)
列印顯示出棋盤。
玩家落子(玩家通過輸入行列座標的方式來落子)。
判定勝負關係。(如果玩家勝出,則退出遊戲。)
電腦落子(隨機位置落子) 。
判定勝負關係(如果電腦勝出,退出遊戲。否則,回到步驟 2 繼續執行。)
#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...