Beispiel #1
0
        public void Reset()
        {
            Reds.Clear();
            Blacks.Clear();
            JumpRequiredRed   = false;
            JumpRequiredBlack = false;
            Player            = "Red";
            Array.Clear(GameBoard, 0, GameBoard.Length);
            int id = 0;

            for (int row = 0; row < 3; row++)
            {
                for (int col = 0; col < 8; col += 2)
                {
                    int index = row % 2 == 0 ? col + 1 + 8 * row : col + 8 * row;

                    Piece black = new Piece(row, index % 8, 'B', 'B', id);
                    Piece red   = new Piece(7 - row, 7 - index % 8, 'R', 'R', id);
                    GameBoard[black.Row, black.ColInt] = black;
                    Blacks.Add(black);
                    GameBoard[red.Row, red.ColInt] = red;
                    Reds.Add(red);
                    id++;
                }
            }
        }
Beispiel #2
0
 public void DeletePiece()
 {
     if (Player == "Red")
     {
         Remove = 0;
         foreach (Piece black in Blacks)
         {
             if (GameBoard[(Row + TargetRow) / 2, (Col + TargetCol) / 2].ID == black.ID)
             {
                 break;
             }
             Remove++;
         }
         Blacks.RemoveAt(Remove);
     }
     else if (Player == "Black")
     {
         Remove = 0;
         foreach (Piece red in Reds)
         {
             if (GameBoard[(Row + TargetRow) / 2, (Col + TargetCol) / 2].ID == red.ID)
             {
                 break;
             }
             Remove++;
         }
         Reds.RemoveAt(Remove);
     }
 }
Beispiel #3
0
        public override string SolvePart1(string[] input)
        {
            HashSet <(int x, int y)> Blacks = new();

            foreach (string line in input)
            {
                (int x, int y)end = IdentifyTile(line);
                if (Blacks.Contains(end))
                {
                    Blacks.Remove(end);
                    continue;
                }
                Blacks.Add(end);
            }

            return("" + Blacks.Count());
        }
Beispiel #4
0
 public override int GetHashCode()
 {
     return
         (Blacks.GetHashCode() * 8976553 ^
          Whites.GetHashCode() * 33456);
 }
Beispiel #5
0
 /// <summary>
 /// Gets the hash code of this <see cref="Response"/>.
 /// </summary>
 /// <returns>Hash code of this <see cref="Response"/>.</returns>
 public override int GetHashCode()
 {
     return(Blacks.GetHashCode() + Whites.GetHashCode());
 }
Beispiel #6
0
 public bool CheckGameOver()
 {
     return(!Reds.Any() || !Blacks.Any());
 }