Я получаю сообщение «Место для обнаружения нарушения доступа 0x007CE4F8» (печать ошибки в конце сообщения) сразу после запуска и выбора места для размещения моего маркера.C++ - Чтение нарушения доступа
Я начинающий программист на C++, так что бы любить, если бы вы могли оставить объяснение максимально простым.
main.cpp
#include <iostream>
#include "playGame.h"
using namespace std;
int main()
{
playGame game;
game.play();
system("PAUSE");
return 0;
}
playGame.cpp
#include "playGame.h"
#include <iostream>
using namespace std;
playGame::playGame()
{
}
bool playGame::play()
{
char player1 = 'X';
char player2 = 'O';
bool gameOver = false;
int turn = 0;
char currentPlayer = player1;
clearBoard();
while (gameOver == false)
{
printBoard();
x = getX();
y = getY();
while (placeMarker(x, y, currentPlayer) == false)
{
cout << "***Place already taken!***" << endl;
x = getX();
y = getY();
}
turn++;
}
return gameOver;
}
void playGame::clearBoard()
{
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
board[i][j] = ' ';
}
}
}
void playGame::printBoard()
{
cout << endl;
cout << " |1 2 3|\n";
for (int i = 0; i < 3; i++) {
cout << " -------\n";
cout << i + 1 << "|" << board[i][0] << "|" << board[i][1] << "|" << board[i][2] << "|\n";
}
cout << " -------\n";
}
int playGame::getX()
{
while ((x < 1) || (x > 3)) {
cout << "Choose X coordinate (1 - 3): ";
cin >> x;
if ((x < 1) || (x > 3))
{
cout << "Bad input" << endl;
}
else
{
x--;
return x;
}
}
}
int playGame::getY()
{
while ((y < 1) || (y > 3)) {
cout << "Choose Y coordinate (1 - 3): ";
cin >> y;
if ((y < 1) || (y > 3))
{
cout << "Bad input" << endl;
}
else
{
y--;
return y;
}
}
}
bool playGame::placeMarker(int x, int y, char currentPlayer)
{
if (board[y][x] != ' ')
{
return false;
}
board[y][x] = currentPlayer;
return true;
}
playGame.h
#pragma once
#include <iostream>
using namespace std;
class playGame
{
public:
playGame();
bool play();
private:
void clearBoard();
void printBoard();
int getX();
int getY();
bool placeMarker(int x, int y, char currentPlayer);
char board[3][3];
int x, y;
};
Проводка печати, если делает вашу жизнь лучше: Image of the error
ли вы попробовать использовать отладчик? –
@ AlgirdasPreidžius - это то, что вы ищете? https://gyazo.com/598464751102694f68a9d6b62ca24d99 также он дает мне 0 ошибок 0 предупреждений –
Нет, я не ищу выход вашей компиляции. Я спрашиваю, пытались ли вы использовать отладчик, чтобы найти проблему самостоятельно. Поскольку этот «вопрос» не показывает попыток решить проблему самостоятельно, скорее выглядит как «вот код - отлаживайте его для меня». –