private void InsertIfPossible(KeyValuePair <int, int> state)// jeśli się da to funkcja doda hetmana na wskazane pole { if (state.Key >= 0 && state.Key < 8 && state.Value >= 0 && state.Value < 8) { ChessNode node = chessBoard[state.Key, state.Value]; if (!node.isChecked && !node.Hetman) { node.Hetman = true; // ustaw w danym miejscu hetmana Hetmani.Add(state); // dodaj koordynaty do listy node.CheckAllSides(); // szachowanie pól po diagonalnych i wertykalnie/horyzontalnie } } }
public KeyValuePair <int, int> coords = new KeyValuePair <int, int>(); // koordynaty na szachownicy public ChessNode(int initialState, object parent) : base(initialState, parent) { _initialState = initialState; _parent = null; }
public Hetman() { //1. stworzenie obiektu chessBoard = new ChessNode[8, 8]; //szachownica Hetmani = new List <KeyValuePair <int, int> >(); //lista koordynatów pola z hetmanem //2. wypełnienie tablicy "polami" typu ChessNode for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { //3. Nadanie koordynatów dla każdego pola chessBoard[i, j] = new ChessNode(0, null) { coords = new KeyValuePair <int, int>(i, j) }; } } //4. Ustawienie sąsiadów każdego pola. W przypadku, gdy próbuję sprawdzić element poza tablicą -> exception for (int i = 0; i < 8; i++) { for (int j = 0; j < 8; j++) { try { if (chessBoard[i - 1, j - 1] != null) { chessBoard[i, j].LeftUpper = chessBoard[i - 1, j - 1]; } } catch { Debug.WriteLine("Exception: Bad Array Index" + i + " / " + j + "No. LU"); } try { if (chessBoard[i - 1, j] != null) { chessBoard[i, j].MiddleUpper = chessBoard[i - 1, j]; } } catch { Debug.WriteLine("Exception: Bad Array Index" + i + " / " + j + "No. MU"); } try { if (chessBoard[i - 1, j + 1] != null) { chessBoard[i, j].RightUpper = chessBoard[i - 1, j + 1]; } } catch { Debug.WriteLine("Exception: Bad Array Index" + i + " / " + j + "No. RU"); } try { if (chessBoard[i, j - 1] != null) { chessBoard[i, j].LeftMiddle = chessBoard[i, j - 1]; } } catch { Debug.WriteLine("Exception: Bad Array Index" + i + " / " + j + "No. LM"); } try { if (chessBoard[i, j + 1] != null) { chessBoard[i, j].RightMiddle = chessBoard[i, j + 1]; } } catch { Debug.WriteLine("Exception: Bad Array Index" + i + " / " + j + "No. RM"); } try { if (chessBoard[i + 1, j - 1] != null) { chessBoard[i, j].LeftLower = chessBoard[i + 1, j - 1]; } } catch { Debug.WriteLine("Exception: Bad Array Index" + i + " / " + j + "No. LL"); } try { if (chessBoard[i + 1, j] != null) { chessBoard[i, j].MiddleLower = chessBoard[i + 1, j]; } } catch { Debug.WriteLine("Exception: Bad Array Index" + i + " / " + j + "No. ML"); } try { if (chessBoard[i + 1, j + 1] != null) { chessBoard[i, j].RightLower = chessBoard[i + 1, j + 1]; } } catch { Debug.WriteLine("Exception: Bad Array Index" + i + " / " + j + "No. RL"); } } } }