N201 Gæt et tal (simpel objektorienteret version)
Lav en objektorienteret version af “Gæt et tal” spillet, hvor en klasse håndterer hele spillets logik.
- Programmet skal have en klasse
Spil
, der indeholder: - En privat variabel (felt)
TilfaeldigtTal
, der repræsenterer det tilfældigt genererede tal. - En metode
GenererTilfaeldigtTal
, der returnerer et tilfældigt tal mellem 1 og 100. - En metode
HentTalFraBruger
, der beder brugeren om at indtaste et gæt. - En metode
GivFeedback
, der udskriver feedback baseret på brugerens gæt. - En metode
Start
, der kører spillet ved at modtage brugerens gæt og give feedback indtil det korrekte tal er gættet.
Overvejelser
Kan du se hvordan denne løsning er anderledes end den procedurale version? Hvad er fordelene ved at bruge klasser til at organisere koden?
Udvidelse
Du kan måske selv finde på nogle udvidelser til spillet:
- Tæl antal forsøg brugeren har brugt på at gætte tallet.
- Lad brugeren vælge det maksimale tal, som det genererede tal kan være.
- Brug farver (brug
Console.ForegroundColor
) til at gøre spillet mere visuelt interessant.
Tip
Hvis du er i tvivl om hvordan du skaber en konsolapplikation så følg:
- Denne guide hvis du arbejder i Visual Studio Code
- Denne guide hvis du arbejder i Visual Studio
Forslag til løsning
// Starter spillet
Spil spil = new Spil();
spil.Start();
// Klasse der indeholder al funktionaliteten til spillet
class Spil
{
private int TilfaeldigtTal; // Tilfældige tal gemmes her
public Spil()
{
TilfaeldigtTal = GenererTilfaeldigtTal(); // Genererer et tilfældigt tal ved spillets start
}
private int GenererTilfaeldigtTal()
{
Random random = new();
return random.Next(1, 101); // Genererer et tal mellem 1 og 100
}
private int HentTalFraBruger()
{
Console.Write("Gæt et tal mellem 1 og 100: ");
string? input = Console.ReadLine();
return Convert.ToInt32(input); // Henter brugerens gæt
}
private void GivFeedback(int guess)
{
if (guess > TilfaeldigtTal)
{
Console.WriteLine("For højt!"); // Feedback hvis gættet er for højt
}
else if (guess < TilfaeldigtTal)
{
Console.WriteLine("For lavt!"); // Feedback hvis gættet er for lavt
}
}
public void Start()
{
int brugerGaet;
do
{
brugerGaet = HentTalFraBruger(); // Henter brugerens gæt
GivFeedback(brugerGaet); // Giver feedback på gættet
} while (brugerGaet != TilfaeldigtTal); // Fortsætter indtil brugeren gætter rigtigt
Console.WriteLine("Tillykke, du gættede det rigtige tal!");
}
}