Untitled
unknown
plain_text
2 years ago
3.4 kB
38
Indexable
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
// 實作你自己的九宮格
char map[3][3];
const char CIRCLE = 'O';
const char FORK = 'X';
const char NONE = '-';
// 初始化九宮格
void Initial(){
for(int i=0 ; i<3 ; i++){
for(int j=0 ; j<3 ; j++){
map[i][j]=NONE;
}
}
}
// 印出九宮格
void PrintMap(){
for(int i=0 ; i<3 ; i++){
for(int j=0 ; j<3 ; j++){
cout<<map[i][j]<<" ";
} cout<<endl;
}cout<<"---------"<<endl;
}
bool CheckIsPosValid(int row, int col){
// Todo : 檢查輸入的行跟列是否正確以及格子內有沒有被填寫
// Todo (1) : 檢查行跟列的數字有沒有在0-2之間
if(row < 0 || row > 2 || col < 0 || col > 2) {
return false;
}
// Todo (2) : 檢查行跟列對應的格子沒有被填入圈圈(CIRCLE)或叉叉(FORK)
if(map[row][col] != NONE) {
return false;
}
return true;
}
// 實作使用者輸入
void UserAction(){
int place_row = 0;
int place_col = 0;
cout<<"Please input two numbers (row, col):";
cin>>place_row>>place_col;
while(CheckIsPosValid(place_row, place_col) ==false){
cout<<"Please input two numbers (row, col):";
cin>>place_row>>place_col;
}
map[place_row][place_col] =CIRCLE;
}
// 實作AI戰略
void AIAction(){
for(int i=0 ; i<3 ; i++){
for(int j=0 ; j<3 ; j++){
if(map[i][j] == NONE){
map[i][j] = FORK;
return;
}
}
}
}
// 檢查遊戲是否結束並印出輸贏結果
bool CheckGameIsOver(){
for(int i=0 ; i<3 ; i++){
if(map[i][0] == map[i][1] && map[i][1] == map[i][2] && map[i][0] !=NONE){
if(map[i][0] == CIRCLE)
cout<<"You win"<<endl;
else{
cout<<"You lose"<<endl;
}
return true;}
}
for(int j=0 ; j<3 ; j++){
if(map[0][j] == map[1][j] && map[1][j] == map[2][j] &&map[0][j] !=NONE){
if(map[0][j] == CIRCLE)
cout<<"You win"<<endl;
else{
cout<<"You lose"<<endl;
}
return true;}
}
if(map[0][0] == map[1][1] && map[1][1] == map[2][2] && map[0][0] !=NONE){
if(map[0][0] == CIRCLE)
cout<<"You win"<<endl;
else{
cout<<"You lose"<<endl;
}
return true;}
if(map[0][2] == map[1][1] && map[1][1] == map[2][0] && map[2][0] !=NONE){
if(map[2][0] == CIRCLE)
cout<<"You win"<<endl;
else{
cout<<"You lose"<<endl;
}
return true;}
return false;
}
int main(){
// 初始化九宮格
cout<<"Weclome come to tic-tac-toe game!"<<endl;
Initial();
// 開始遊戲
int turn = 1;
while(CheckGameIsOver() == false){
if(turn == 1){
// 換玩家1開始動作
cout<<"It's your turn!"<<endl;
UserAction();
}else{
// 換AI開始動作
cout<<"It's AI turn!"<<endl;
AIAction();
}
// 顯示目前九宮格狀態
PrintMap();
turn = -turn;
}
cout<<"Game is over!"<<endl;
return 0;
}Editor is loading...
Leave a Comment