问题切换玩家 - 井字游戏
Issue Switching Players - Tic Tac Toe
我有一个问题,我似乎无法正确切换玩家(从 X 到 O),它只是在两者之间随机切换。到目前为止,这是我的代码:
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
bool gameover = false;
char position[3][3] = {'1', '2', '3', '4', '5', '6', '7', '8', '9'};
char player = 'X';
char player2 = 'O';
void draw(){
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cout << position[i][j] << " ";
}
cout << endl;
}
}
void input(){
if (_kbhit()) {
switch (_getch())
{
case '1':
position[0][0] = player;
break;
case '2':
position[0][1] = player;
break;
case '3':
position[0][2] = player;
break;
case '4':
position[0][3] = player;
break;
case '5':
position[0][4] = player;
break;
case '6':
position[0][5] = player;
break;
case '7':
position[0][6] = player;
break;
case '8':
position[0][7] = player;
break;
case '9':
position[0][8] = player;
break;
}
}
}
void logic() {
if (player == 'X') {
player = 'O';
}
else {
player = 'X';
}
}
int main (){
while (!gameover) {
input();
draw();
logic();
system("cls");
}
return 0;
}
如果这个问题之前被问过很多次,我很抱歉,但我似乎找不到解决办法。我试过更改系统 ('cls') 以暂停,但也不起作用。
检查_kbhit()函数文档:
_kbhit returns a nonzero value if a key has been pressed. Otherwise, it returns 0.
所以,如果用户没有按任何键,_kbhit()
returns 0.
input()
函数退出并且 while
循环不断改变 player
变量,当用户什么都不做时...
当你解决这个问题时,你的代码应该处理已经玩过的位置。
对了,你想一直画那个吗?
似乎在有效移动发生之前您不需要这样做。
我有一个问题,我似乎无法正确切换玩家(从 X 到 O),它只是在两者之间随机切换。到目前为止,这是我的代码:
#include <iostream>
#include <conio.h>
#include <windows.h>
using namespace std;
bool gameover = false;
char position[3][3] = {'1', '2', '3', '4', '5', '6', '7', '8', '9'};
char player = 'X';
char player2 = 'O';
void draw(){
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
cout << position[i][j] << " ";
}
cout << endl;
}
}
void input(){
if (_kbhit()) {
switch (_getch())
{
case '1':
position[0][0] = player;
break;
case '2':
position[0][1] = player;
break;
case '3':
position[0][2] = player;
break;
case '4':
position[0][3] = player;
break;
case '5':
position[0][4] = player;
break;
case '6':
position[0][5] = player;
break;
case '7':
position[0][6] = player;
break;
case '8':
position[0][7] = player;
break;
case '9':
position[0][8] = player;
break;
}
}
}
void logic() {
if (player == 'X') {
player = 'O';
}
else {
player = 'X';
}
}
int main (){
while (!gameover) {
input();
draw();
logic();
system("cls");
}
return 0;
}
如果这个问题之前被问过很多次,我很抱歉,但我似乎找不到解决办法。我试过更改系统 ('cls') 以暂停,但也不起作用。
检查_kbhit()函数文档:
_kbhit returns a nonzero value if a key has been pressed. Otherwise, it returns 0.
所以,如果用户没有按任何键,_kbhit()
returns 0.
input()
函数退出并且 while
循环不断改变 player
变量,当用户什么都不做时...
当你解决这个问题时,你的代码应该处理已经玩过的位置。
对了,你想一直画那个吗?
似乎在有效移动发生之前您不需要这样做。