1. 程式人生 > 程式設計 >C++實現井字棋遊戲

C++實現井字棋遊戲

本文例項為大家分享了C++實現井字棋遊戲的具體程式碼,供大家參考,具體內容如下

初步實現雙玩家輸入,操作遊戲.
下一步將實現人機博弈.

#include<iostream>
using namespace std;

void Player1(void);  //玩家1輸入(操作)函式
void Player2(void);  //玩家2輸入(操作)函式
void game_judge(void); //輸贏判斷
void game_start(void); //遊戲開始

int rows = 3,cols = 3; //棋盤大小

bool win1_flag = false; //玩家1獲勝標誌位
bool win2_flag = false; //玩家2獲勝標誌位
char pieces[3][3] = {{' ',' ',' '},{' ',' '}};;  //初始化

void draw(void)  //打印出棋盤
{
 for(int i=0;i<rows;i++){
  for(int j=0;j<cols;j++){
   cout<<pieces[i][j];
   if(j< cols-1)
    cout<<" | ";
  }
  cout<<"\n";
  if (i<rows-1)
   cout <<"-----"<<endl;
 }
 cout <<"\n";
}

void game_start(void) //遊戲開始
{
 int n=0;   //總3*3=9個輸入位,用於判斷是否填完
 bool flag = false;  //玩家切換標誌位
 cout << "遊戲開始"<<endl; 
 while(n<9 & win1_flag == false & win2_flag == false) //未填完,未分出勝負則繼續遊戲
 {
  if(flag == false){    //切換到玩家1
   cout << "玩家1輸入:"<<endl;
   Player1();     //玩家1輸入棋子位置
   flag = true;    //下一步是玩家2
  }
  else{        //切換到玩家2
   cout << "玩家2輸入:"<<endl;
   Player2();     //玩家2輸入棋子位置
   flag = false;    //下一步是玩家1 
  }
  game_judge();  //判斷勝負
  draw();   //打印出棋盤
  n++;    //棋盤又添了一枚棋子
 }
}

void game_judge(void)  //判斷勝負
{
 for(int i=0;i<rows;i++){ 
  if(pieces[i][0] == pieces[i][1]& pieces[i][0] == pieces[i][2] & pieces[i][0] != ' ') //判斷橫方向滿3個相同的棋子
  {
   if(pieces[i][0] == 'O')  //判斷是玩家1的棋子還是玩家2
    win1_flag = true;  //玩家1獲勝
   else
    win2_flag = true;  //玩家2獲勝
  }
  if(pieces[0][i] == pieces[1][i]& pieces[1][i] == pieces[2][i] & pieces[0][i] != ' ') //判斷縱方向滿3個相同的棋子
  {
   if(pieces[0][i] == 'O')  //判斷是玩家1的棋子還是玩家2
    win1_flag = true;  
   else
    win2_flag = true;
  }
  if((pieces[0][0] == pieces[1][1]& pieces[1][1] == pieces[2][2] & pieces[0][0] != ' ') //判斷斜方向滿3個相同的棋子
   |(pieces[0][2] == pieces[1][1]& pieces[1][1] == pieces[2][0] & pieces[2][0] != ' '))
  {
   if(pieces[1][1] == 'O')  //判斷是玩家1的棋子還是玩家2
    win1_flag = true;
   else
    win2_flag = true;
  }
 }
}


void Player1(void)
{
 int row0,col0;
 cin>>row0>>col0; //玩家1輸入位置
 while(pieces[row0-1][col0-1] != ' ') //判斷該位置是否已有棋子,或不存在
 {
  cout<<"該位置輸入錯誤,請重新輸入"<<endl;
  cout<<"請輸入行列數(1-3),以空格隔開:";
  cin >>row0>>col0; //重新輸入位置
 }
 pieces[row0-1][col0-1] = 'O'; //棋盤中放置玩家1棋子
}

void Player2(void)
{
 int row1,col1;
 cin>>row1>>col1; //玩家1輸入位置
 while(pieces[row1-1][col1-1] != ' ') //判斷該位置是否已有棋子,以空格隔開:";
  cin >>row1>>col1; //重新輸入位置
 }
 pieces[row1-1][col1-1] = 'X'; //棋盤中放置玩家2棋子
}


int main(int argc,char** argv)
{ 
 
 cout<<"遊戲載入中"<<endl;
 draw();   //列印初始棋盤
 game_start(); //開始遊戲
 if(win1_flag == true)  //玩家1獲勝
  cout<<"玩家1獲勝!"<<endl;
 if(win2_flag == true)  //玩家2獲勝
  cout<<"玩家2獲勝!"<<endl;
 if(win1_flag == win2_flag) //均未獲勝,平局
  cout<<"平局!"<<endl;

 return 0;
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。