最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++實現(xiàn)井字棋游戲

 更新時間:2020年07月31日 08:35:21   作者:L...P  
這篇文章主要為大家詳細介紹了C++實現(xiàn)井字棋游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C++實現(xiàn)井字棋游戲的具體代碼,供大家參考,具體內(nèi)容如下

初步實現(xiàn)雙玩家輸入,操作游戲.
下一步將實現(xiàn)人機博弈.

#include<iostream>
using namespace std;

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

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

bool win1_flag = false; //玩家1獲勝標(biāo)志位
bool win2_flag = false; //玩家2獲勝標(biāo)志位
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;  //玩家切換標(biāo)志位
 cout << "游戲開始"<<endl; 
 while(n<9 & win1_flag == false & win2_flag == false) //未填完,未分出勝負(fù)則繼續(xù)游戲
 {
  if(flag == false){    //切換到玩家1
   cout << "玩家1輸入:"<<endl;
   Player1();     //玩家1輸入棋子位置
   flag = true;    //下一步是玩家2
  }
  else{        //切換到玩家2
   cout << "玩家2輸入:"<<endl;
   Player2();     //玩家2輸入棋子位置
   flag = false;    //下一步是玩家1 
  }
  game_judge();  //判斷勝負(fù)
  draw();   //打印出棋盤
  n++;    //棋盤又添了一枚棋子
 }
}

void game_judge(void)  //判斷勝負(fù)
{
 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<<"請輸入行列數(shù)(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] != ' ') //判斷該位置是否已有棋子,或不存在
 {
  cout<<"該位置輸入錯誤,請重新輸入"<<endl;
  cout<<"請輸入行列數(shù)(1-3),以空格隔開:";
  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;
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++標(biāo)準(zhǔn)模板庫string類的介紹與使用講解

    C++標(biāo)準(zhǔn)模板庫string類的介紹與使用講解

    今天小編就為大家分享一篇關(guān)于C++標(biāo)準(zhǔn)模板庫string類的介紹與使用講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • C語言函數(shù)棧幀的創(chuàng)建與銷毀詳解

    C語言函數(shù)棧幀的創(chuàng)建與銷毀詳解

    這篇文章主要為大家詳細介紹了C語言函數(shù)棧幀的創(chuàng)建與銷毀,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • C++ Opengl旋轉(zhuǎn)功能附源碼下載

    C++ Opengl旋轉(zhuǎn)功能附源碼下載

    這篇文章主要介紹了C++ Opengl旋轉(zhuǎn)功能附源碼下載,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • C++實現(xiàn)會員管理程序

    C++實現(xiàn)會員管理程序

    這篇文章主要為大家詳細介紹了C++實現(xiàn)會員管理程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • 一文帶你掌握C++中的繼承

    一文帶你掌握C++中的繼承

    繼承機制是面向?qū)ο蟪绦蛟O(shè)計使代碼可以復(fù)用的最重要的手段,它允許程序員在保持原有類特性的基礎(chǔ)上進行擴展,增加功能,本文詳解介紹了C++中的繼承,感興趣的同學(xué)可以借鑒一下
    2023-05-05
  • 詳解C++中的成員訪問運算符和指針到成員運算符

    詳解C++中的成員訪問運算符和指針到成員運算符

    這篇文章主要介紹了C++中的成員訪問運算符和指針到成員運算符,即. 和 ->以及.* 和 ->*的使用方法,需要的朋友可以參考下
    2016-01-01
  • C++連連看判定圖形消除算法

    C++連連看判定圖形消除算法

    這篇文章主要為大家詳細介紹了C++連連看判定圖形消除算法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • 基于Matlab實現(xiàn)繪制3D足球的示例代碼

    基于Matlab實現(xiàn)繪制3D足球的示例代碼

    這篇文章主要為大家詳細介紹了如何利用Matlab實現(xiàn)繪制3D足球,文中的示例代碼講解詳細,對我們學(xué)習(xí)Matlab有一定幫助,需要的可以參考一下
    2022-11-11
  • C語言實現(xiàn)文件操作實例(簡單圖示講解)

    C語言實現(xiàn)文件操作實例(簡單圖示講解)

    與普通文件載體不同,文件是以硬盤為載體存儲在計算機上的信息集合,文件可以是文本文檔、圖片、程序等等,下面這篇文章主要給大家介紹了關(guān)于C語言實現(xiàn)文件操作實例的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • C++ OpenCV實戰(zhàn)之制作九宮格圖像

    C++ OpenCV實戰(zhàn)之制作九宮格圖像

    本文將為大家介紹如何使用OpenCV C++ 制作九宮格圖像,即將一張圖像均等分成九份,然后將這九個小塊按一定間隔拷貝到新畫布上就可以啦。感興趣的可以動手試一試
    2022-01-01

最新評論

涪陵区| 安新县| 左权县| 延川县| 崇左市| 五指山市| 桑日县| 崇左市| 苗栗市| 花莲市| 镇巴县| 温州市| 南宁市| 舒城县| 高要市| 基隆市| 龙胜| 南昌市| 南康市| 邹平县| 兴隆县| 台州市| 如东县| 顺义区| 泽普县| 广东省| 成都市| 广元市| 仪征市| 泽州县| 定西市| 且末县| 应城市| 铁力市| 中超| 若羌县| 叶城县| 临湘市| 台前县| 沽源县| 全州县|