Gå til indholdet

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:

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!");
    }
}