C++实现井字棋游戏
更新时间:2020年07月31日 08:35:21 作者:L...P
这篇文章主要为大家详细介绍了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] != ' ') //判断该位置是否已有棋子,或不存在 { cout<<"该位置输入错误,请重新输入"<<endl; cout<<"请输入行列数(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; }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
您可能感兴趣的文章:
相关文章
C++聚合体初始化aggregate initialization详细介绍
这篇文章主要介绍了C++聚合体初始化aggregate initialization,C++有很多初始化对象的方法。其中之一叫做 聚合体初始化(aggregate initialization) ,这是聚合体专有的一种初始化方法2023-02-02
最新评论