我不确定如何从已有的内容着手:我无法让我的阵列正常工作,而且每次重新运行程序时我的图表重置也有问题。它不会保存我的 X 和 O,而是重新启动到空白图表中。任何提示都会有所帮助。谢谢
/**
Lab 4 - Due 7/22/2010.
Convert Lab 3 to a class
1. Implement displayBoard to display Tic Tac Toe board.
2. Prompt User for a box on the board to select, i.e. a number between 1 and 9 with 1 being the upper left corner.
use cin.get(box) to get the box number and isdigit to verify it is a
number;
1 | 2 | 3
4 | 5 | 6
7 | 8 | 9
If the box is available put the appropriate X or O in there and switch players, i.e. X becomes O and vice versa.
If the box is NOT available warn the user and get another box until they select a valid open box.
3. After all spots have been select Display "Game Over!";
4. Write a main function to use the TicTacToe class and test all of the above functionality.
**/
#include <iostream>
#include <limits>
using namespace std;
class TicTacToe {
public:
void displayBoard();
void getMove();
void playGame();
private:
char board[9];
char player; // Switch after each move.
};
int main ()
{
TicTacToe ttt;
for (int i = 0; i < 9; i++) {
ttt.playGame();
}
}
void TicTacToe::playGame()
{
displayBoard();
getMove();
// Your implementation here...
}
void TicTacToe::displayBoard()
{
// Your implementation here...
bool firstMove = true;
if (firstMove == true)
{
for (int i = 0; i < 9; i++) {
board[i] = i + 1;
}
}
firstMove == false;
for (int i = 0; i < 9; i++)
{
if ( (i+1) % 3 == 0 )
{
cout << board[i] << endl;
}
else
{
cout << board[i] << " | ";
}
}
}
void TicTacToe::getMove()
{
if (player == 'X') {
player = 'O';
}
else {
player = 'X';
}
cout << player << " ";
cout << "Enter Box: ";
char c;
bool move;
move = true;
do {
cin.get(c);
cin.ignore(numeric_limits<int>::max(), '\n');
if (c > '9' || c < '0')
// error message
cout << "please enter a number 1-9" << endl;
int number = c - '0';
cout << "your number is " << number << endl;
// Your implementation here...
if (c == '1' && board[0] == '1') {
board[0] = player;
move = false;
}
else if(c == '2' && board[1] == '2')
{
board[1] = player;
move = false;
}
else if(c == '3' && board[2] == '3')
{
board[2] = player;
move = false;
}
else if(c == '4' && board[3] == '4')
{
board[3] = player;
move = false;
}
else if(c == '5' && board[4] == '5')
{
board[4] = player;
move = false;
}
else if(c == '6' && board[5] == '6')
{
board[5] = player;
move = false;
}
else if(c == '7' && board[6] == '7')
{
board[6] = player;
move = false;
}
else if(c == '8' && board[7] == '8')
{
board[7] = player;
move = false;
}
else if(c == '9' && board[8] == '9')
{
board[8] = player;
move = false;
}
} while (!move);
}
@Bunnit 根据您的建议,我能够对其进行更改。现在我唯一的问题是用 X 或 O 替换每个框,这似乎不像我的 if 和 else if 工作。