Как установить эту функцию, чтобы настроить ход игрока? - PullRequest
0 голосов
/ 02 ноября 2019

Я пытаюсь настроить ход игрока, используя этот источник 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";
    }




};

...