Название говорит само за себя. Мне нужно написать программу для курса программного обеспечения, который я беру, который сравнивает два базовых алгоритма c друг с другом в игре в шашки. Для этого у меня есть класс Square, который хранит, занят ли квадрат (bool), каким игроком (enum Pl, NA, P1 или P2) и метку этого квадрата (Index, int). Затем я создал класс Board, который по сути представляет собой двумерный массив квадратов, размеры которого будут указаны пользователем. Однако в файле реализации моего класса Board у меня возникла ошибка при использовании массива board [] [] в одной из моих функций. Я получаю сообщение об ошибке «плата не была объявлена в этой области», что не должно быть слишком сложно понять, за исключением того, что тот же синтаксис (по крайней мере, из того, что я вижу, и я работал над исправлением этого для некоторое время сейчас), вызывающая ошибку, отлично работает в конструкторе класса Board в том же файле. Ниже приведен код моего файла Board.h и соответствующих частей моего Board. cpp файл:
Board.h:
#ifndef BOARD_H
#define BOARD_H
#include "Square.h"
#include <string>
class Board
{
public:
Board(int);
int getBsize();
int getWinner();
std::string getCmove();
Square getSquare(int, int);
void setWinner(int);
void setCmove(std::string);
bool canMoveL(int, int);
bool canMoveR(int, int);
bool canTakeL(int, int);
bool canTakeR(int, int);
void P1Move(int, int);
void P2Move(int, int);
void printCmove(std::string);
void printWin(std::string);
private:
Square board[12][12];
int bSize;
int winner;
std::string cMove;
};
#endif // BOARD_H
Board. cpp конструктор как а также в верхней части файла (в случае, если ошибка связана с библиотеками и файлами, которые я включил в Board. cpp):
#include "Square.h"
#include "Board.h"
#include <string>
Board::Board(int bSize)
{
Board::bSize = bSize;
Board::winner = 0;
Board::cMove = "";
Board::board[12][12];
int x = bSize-1;
int index = 1;
for(int j = 0; j < bSize; j++)
{
for(int i = 0; i < bSize; i++)
{
if(((i%2!=0)&&(j%2==0))||((i%2==0)&&(j%2!=0)))
{
if((j==x/2)||(j==x/2+1))
{
board[i][j] = Square(false, NA, index);
index++;
}
else if(j < x/2)
{
board[i][j] = Square(true, P1, index);
index++;
}
else if(j > x/2+1)
{
board[i][j] = Square(true, P2, index);
index++;
}
}
else
{
board[i][j] = Square(false, NA, 0);
}
}
}
}
Функция в Board. cpp, вызывающая ошибку:
bool canMoveL(int i, int j)
{
bool temp = false;
Square sq = board[i][j];
if((i-1 < 0)||((sq.getPl() == P1)&&(j-1 >= bSize))||((sq.getPl() == P2)&&(j-1 < 0)))
{
return temp;
}
if(sq.getOcc() == 0)
{
return temp;
}
else
{
if(sq.getPl() == P1)
{
temp = true;
}
else if(sq.getPl() == P2)
{
temp = true;
}
}
return temp;
}
Примечание. Поскольку я не смог протестировать функцию canMovL, я понимаю, что и в этом могут быть ошибки, но я специально просто ищу помощь в исправлении ошибки, которую я получаю с Board массив в canMovL (). Спасибо.