遊戲的棋盤為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的棋盤上輪流落子,當一條直線上出現三顆連續且相同的棋子時即獲勝。此程...