private IChecker[][] CreateStateCopy(IChecker[][] state) { IChecker[][] newState = new IChecker[9][]; CheckerFactory factory = CheckerFactory.GetInstance(); for (int i = 1; i <= 8; i++) { newState[i] = new IChecker[9]; } for (int i = 1; i <= 8; i++) { for (int j = 1; j <= 8; j++) { if (state[i][j] != null) { if (state[i][j] is BlackChecker) { IChecker black = factory.CreateBlackPhantom(new Coord(i, j), gameField); newState[i][j] = black; } else if (state[i][j] is WhiteChecker) { newState[i][j] = factory.CreateWhitePhantom(new Coord(i, j), gameField); } if (newState[i][j].IsKing) { state[i][j].BecomeKing(); } } } } return(newState); }