本文实例为大家分享了C++实现井字棋游戏的具体代码,供大家参考,具体内容如下
初步实现双玩家输入,操作游戏.
下一步将实现人机博弈.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
|
#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;
}
|
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/weixin_42913193/article/details/107645042