Я пытаюсь настроить ход игрока, используя этот источник main () от нашего инструктора:
Наше задание указано на этом сайте: http://itweb.fvtc.edu/ag/?u=3&f=cpp-assignment5
вот источникcode:
#include <iostream>
#include <conio.h>
#include "TicTacToe.h"
using namespace std;
int main()
{
TicTacToe *pGame = nullptr;
while (true)
{
if (pGame) delete pGame;
pGame = new TicTacToe;
// play the game
while (!pGame->IsOver())
{
pGame->DisplayBoard();
int position;
do
{
cout << "Player " << pGame->GetPlayerTurn() << ", select a position (1-9): ";
cin >> position;
}
while (!pGame->IsValidMove(position));
pGame->Move(position);
}
// game over
pGame->DisplayBoard();
pGame->DisplayResult();
// prompt to play again (or quit)
char input = ' ';
while (input != 'Y' && input != 'y')
{
std::cout << "Would you like to play again? (y/n): ";
cin >> input;
if (input == 'N' || input == 'n') return 0; // quit
}
}
}
Я получил этот код файла заголовка для компиляции игры, но функция вызова для использования хода игрока не работает, как я хотел. Что я здесь не так делаю?
#pragma once
#include <sstream>
#include <iomanip>
#include <string>
class TicTacToe
{
private:
char mark;
char m_board[10] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};
int m_numTurns;
char m_playerTurn = 1, i , choice;
char m_winner; // Check winner
public:
virtual char winner(const char win)
{
if (m_board[1] == m_board[2] && m_board[2] == m_board[3])
return 1;
else if (m_board[4] == m_board[5] && m_board[5] == m_board[6])
return 1;
else if (m_board[7] == m_board[8] && m_board[8] == m_board[9])
return 1;
else if (m_board[1] == m_board[4] && m_board[4] == m_board[7])
return 1;
else if (m_board[2] == m_board[5] && m_board[5] == m_board[8])
return 1;
else if (m_board[3] == m_board[6] && m_board[6] == m_board[9])
return 1;
else if (m_board[1] == m_board[5] && m_board[5] == m_board[9])
return 1;
else if (m_board[3] == m_board[5] && m_board[5] == m_board[7])
return 1;
else if (m_board[1] != '1' && m_board[2] != '2' && m_board[3] != '3'
&& m_board[4] != '4' && m_board[5] != '5' && m_board[6] != '6'
&& m_board[7] != '7' && m_board[8] != '8' && m_board[9] != '9')
return 0;
else
return -1;
m_winner = win;
};
//char m_board[10] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
// constructor
TicTacToe() {};
void DisplayBoard()
{
system("cls");
std::cout << "\n\n\tTic Tac Toe\n\n";
std::cout << "Player 1 (X) - Player 2 (O)" << "\n" << "\n";
std::cout << "\n";
std::cout << " " << m_board[1] << " | " << m_board[2] << " | " << m_board[3] << " | " << "\n";
std::cout << " __|___|___|" << "\n";
std::cout << " | | |" << "\n";
std::cout << " " << m_board[4] << " | " << m_board[5] << " | " << m_board[6] << " | " << "\n";
std::cout << "___|___|___|" << "\n";
std::cout << " | | |" << "\n";
std::cout << " " << m_board[7] << " | " << m_board[8] << " | " << m_board[9] << " | " << "\n";
std::cout << "___|___|___|" << "\n" << "\n";
}
bool IsOver()
{
return 0;
}
char GetPlayerTurn()
{
char player = 1;
player = (player % 2) ? 1 : 2;
return m_playerTurn;
}
bool IsValidMove(int Position)
{
return 0;
}
void Move(int Position ) const
{
}
void DisplayResult()
{
if (i == 1)
std::cout << "==>\aPlayer " << m_playerTurn << " win ";
else
std::cout << "==>\aGame draw";
}
};