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++; } } }
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); } }
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()); }
public override int GetHashCode() { return (Blacks.GetHashCode() * 8976553 ^ Whites.GetHashCode() * 33456); }
/// <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()); }
public bool CheckGameOver() { return(!Reds.Any() || !Blacks.Any()); }