Я кодирую шахматы и создал класс BoardObject для хранения состояний доски, поэтому у меня есть список из них, что делает историю игры. BoardObject имеет поле BoardValues, которое представляет собой двумерный массив, в котором хранятся значения каждого квадрата на доске.
В то время как l oop, где играется, если пользовательский ввод проходит мои проверки достоверности , ход, который они вводят, передается в метод с именем movePieceTrad. Во время movePieceTrad список BoardHistory каким-то образом изменяется для обновления только что сделанным ходом. Вот проблема: нигде в movePieceTrad нет ни BoardBistory, ни любого BoardObject. Я просмотрел с помощью ctrl + f, каждая ссылка на boardHistory находится в основном методе.
В приведенном ниже коде при отладке lastInBoardHistory2 отличается от того, что lastInBoardHistory1 было до movePieceTrad, но lastInBoardHistory1 также меняется, когда я go через movePieceTrad, что лишено смысла еще раз. Что происходит?
lastInBoardHistory1 = boardHistory[boardHistory.Count - 1].getBoardValues();
movePieceTrad(arr[0], arr[1]);
lastInBoardHistory2 = boardHistory[boardHistory.Count - 1].getBoardValues();
Вот код для класса BoardObject
namespace chess_v1
{
class BoardObject
{
private int[,] boardValues;
public int[,] possibleEnPassants;
public int[,] castlePiecesMoved;
public int turn = 0;
public BoardObject(int[,] squareValues, int[,] pep, int[,]castleInfo, int inputTurn)
{
boardValues = squareValues;
possibleEnPassants = pep;
castlePiecesMoved = castleInfo;
turn = inputTurn;
}
public int[,] getBoardValues()
{
return boardValues;
}
}
}