/// <summary>
        /// Checks if the guess matches the location of a clue. If yes,
        /// update counters. Updates the grid with the correct symbol
        /// and calls DisplayGrid().
        /// </summary>
        /// <param name="guess"></param>
        /// <returns></returns>
        public GuessResult EvaluateGuess(Clue guess)
        {
            guessCounter++;
            bool hit = clues[currentSample] == guess;

            if (hit)
            {
                currentSample++;
                return(new GuessResult(hit, ClueImage));
            }
            else
            {
                return(new GuessResult(hit, GetClueHint(guess)));
            }
        }
        /// <summary>
        /// Generates random positions for the clues.
        /// </summary>
        private void GenerateCluePositions(int cluesNum)
        {
            clues = new Clue[cluesNum];
            Random random = new Random();

            for (int i = 0; i < clues.Length; i++)
            {
                Clue clue = new Clue(random.Next(0, rows), random.Next(0, columns));

                while (!ValidClue(clue))
                {
                    clue = new Clue(random.Next(0, rows), random.Next(0, columns));
                }

                clues[i] = clue;
            }
        }
        /* **************************** Methods **************************** */

        /// <summary>
        /// Override Equals To supress warnings
        /// </summary>
        /// <param name="obj"></param>
        /// <returns>bool</returns>
        public override bool Equals(object obj)
        {
            Clue a = (Clue)obj;

            return(Row == a.Row && Column == a.Column);
        }
 public Clue(Clue clue)
 {
     Row    = clue.Row;
     Column = clue.Column;
     Found  = clue.Found;
 }