コード例 #1
0
        /// <summary>
        /// Reveales a single letter that hasnt been revealed yet
        /// </summary>
        private void RevealLetter()
        {
            var rand   = new Random();
            var index  = rand.Next(currentWord.Text.Length);
            var letter = currentWord.Text[index];

            while (RevealedLetters.Any(rl => rl.LetterIndex == index))
            {
                index  = rand.Next(currentWord.Text.Length);
                letter = currentWord.Text[index];
            }

            RevealedLetters.Add(new RevealedLetter()
            {
                Letter = letter, LetterIndex = index
            });
        }
コード例 #2
0
        /// <summary>
        /// Resets the turn and picks a new painter
        /// </summary>
        private void ResetTurn()
        {
            if (words.IsEmpty)
            {
                IsGameFinished = true;
                currentWord    = null;
                return;
            }

            // Needs to reset round
            if (currentRoundPainters.Count == gameRoom.Users.Count)
            {
                currentRoundNumber++;
                currentRoundPainters.Clear();
            }

            var rand = new Random();
            int newPainterId;

            while (true)
            {
                var index = rand.Next(0, gameRoom.Users.Count);
                newPainterId = gameRoom.Users.ToList().ElementAt(index).Key;

                if (newPainterId != currentPainterId &&
                    !currentRoundPainters.Any(id => id == newPainterId))
                {
                    break;
                }
            }
            currentPainterId = newPainterId;
            currentRoundPainters.Add(currentPainterId);

            words.TryDequeue(out var word);
            currentWord = word;
            RevealedLetters.Clear();
            RemainingTime = GuessTime;
        }