Untitled
unknown
csharp
10 months ago
4.1 kB
11
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