Untitled

 avatar
unknown
csharp
7 days ago
4.1 kB
7
Indexable
namespace program;

class Hangman
{
    static void Main(string[] args)
    {
        string[] hangmanDrawings = CreateHangmanDrawings();
        string[] wordArray = CreateWordList();
        string selectedWord = DrawRandomWord(wordArray);
        (string wordToDisplay, int nonLetterCount) = HideWord(selectedWord);
        GuessWord(selectedWord, wordToDisplay, nonLetterCount, hangmanDrawings);
    }

    static void GuessWord(string selectedWord, string wordToDisplay, int nonLetterCount, string[] hangmanDrawings)
    {
        int mistakeCount = 0;
        int revealedLetterCount = 0;
        string usedLetters = "";

        while (revealedLetterCount < selectedWord.Length - nonLetterCount)
        {
            Console.Clear();
            Console.WriteLine(wordToDisplay);
            Console.WriteLine(hangmanDrawings[mistakeCount]);
            Console.WriteLine($"Used letters: {usedLetters}");
            Console.Write("Enter a letter: ");

            char enteredLetter = Console.ReadLine()[0];

            if (!usedLetters.Contains(enteredLetter))
            {
                usedLetters += enteredLetter;

                if (selectedWord.Contains(enteredLetter) && !wordToDisplay.Contains(enteredLetter))
                {
                    for (int i = 0; i < selectedWord.Length; i++)
                    {
                        if (selectedWord[i] == enteredLetter)
                        {
                            wordToDisplay = wordToDisplay.Remove(i, 1);
                            wordToDisplay = wordToDisplay.Insert(i, enteredLetter.ToString());
                            revealedLetterCount++;
                        }
                    }
                }
                else
                {
                    mistakeCount++;
                    if (mistakeCount == hangmanDrawings.Length - 1)
                    {
                        Console.WriteLine(hangmanDrawings[mistakeCount]);
                        Console.WriteLine($"Unfortunately, you lost! The word was '{selectedWord}'");
                        return;
                    }
                }
            }
            else
            {
                Console.WriteLine("This letter has already been used. Try again.");
            }
        }

        Console.WriteLine($"Congratulations, you won! The word was '{selectedWord}'");
        Console.ReadLine();
    }

    private static (string wordToDisplay, int nonLetterCount) HideWord(string selectedWord)
    {
        int nonLetterCount = 0; // spazi, virgole, ecc.
        string wordToDisplay = "";

        for (int i = 0; i < selectedWord.Length; i++)
        {
            char character = selectedWord[i];
            if (char.IsLetter(character))
            {
                wordToDisplay += '_';
            }
            else
            {
                wordToDisplay += character;
                nonLetterCount++;
            }
        }
        return (wordToDisplay, nonLetterCount);
    }

    private static string DrawRandomWord(string[] wordArray)
    {
        Random randomMachine = new Random();
        int drawnWordIndex = randomMachine.Next(0, wordArray.Length);
        return wordArray[drawnWordIndex];
    }

    private static string[] CreateHangmanDrawings()
    {
        return new string[] {
            "",
            @",
    +---+
    |   |
        |
        |
        |
        |
=========",
            @",
    +---+
    |   |
    O   |
        |
        |
        |
=========",
            @",
    +---+
    |   |
    O   |
    |   |
        |
        |
=========",
            @",
    +---+
    |   |
    O   |
   /|   |
        |
        |
=========",
            @",
    +---+
    |   |
    O   |
   /|\  |
        |
        |
=========",
            @",
    +---+
    |   |
    O   |
   /|\  |
   /    |
        |
=========",
            @",
    +---+
    |   |
    O   |
   /|\  |
   / \  |
        |
========="
        };
    }

    static string[] CreateWordList()
    {
        return new string[] { "programmatore", "algoritmo", "minecraft", "sonic" };
    }
}
Editor is loading...
Leave a Comment