4620 frågesport

Gör en ny konsolapplikation.

Steg 1

Gör en frågesport med tre frågor. Det kan se ut så här när man spelar.

Vad heter Norges huvudstad?
Oslo
Rätt
Vad heter Danmarks huvudstad?
köpenhamn
Fel
Vad heter Finlands huvudstad?
Helsingfors
Rätt

Steg 2 - array

Lägg alla frågor i en vektor (eng. array). Kanske behöver du en vektor till med svaren. Det beror lite på hur du har gjort i steg1. Ändra övrig kod så att programmet fungerar igen.

Se till att du använder en for-slinga (eller foreach-slinga) för att gå igenom vektorn (eng. array).

Steg 3 - List

I biblioteket System.Collections.Generic finns klassen List. Du ska använda den istället för vektorn (eng. array).

//exempelkod
List<string> minLista;
minLista = new List<string>();
minLista.Add("bröd");
minLista.Add("smör");
minLista.Add("ost");

Console.WriteLine(minLista[0]); // bröd
Console.WriteLine(minLista[2]); // ost

Steg 4 - klassen QuestionCard

Du har kanske en lista med frågor och en lista med svar. Med hjälp av en klass kan man samla ihop informationen som hör ihop. Nedan följer koden för klassen QuestionCard. Tänk dig ett frågekort per fråga. På kortet står frågan och svaret.

class QuestionCard
{
  public String question;
  public String answer;
}

Koden kan läggas efter klassen Program eller i en egen fil som heter QuestionCard.cs. Överst i filen måste det stå:

using System;
namespace samma_som_i_Program.cs
{
  // här följer koden för klassen
  class QuestionCard 
  // kod utelämnad, se ovan ...

För att skapa en fråga gör man på följande vis.

QuestionCard card;
card = new QuestionCard(); // skapar ett objekt av klassen
card.question = "Vad heter Norges huvudstad?";
card.answer = "Oslo";

Skriv om din kod så att du använder klassen QuestionCard.

Steg 5 - private

Nackdelen med att låta question och answer i QuestionCard vara publika (public) är att deras värden kan ändras överallt i koden. Oftast vill man gömma dessa variabler genom att göra dem privata (private). Det gör att olika klasser blir mindre beroende av varandra.

En sådan version av klassen visas nedan.

public class QuestionCard
{
  private string question;
  private string answer;

  public QuestionCard(string q, string ans)
  {
    question = q;
    answer = ans;
  }

  public string GetQuestion()
  {
    return question;
  }

  public bool IsCorrect(string guess)
  {
    return answer == guess;
  }
}

Använd den klassen och skriv om din kod så att den fungerar. Några tips följer nedan.

För att göra ett frågekort:

QuestionCard card;
card = new QuestionCard("Vad heter Norges huvudstad?", "Oslo");

Console.WriteLine(card.GetQuestion()); // Vad heter Norges huvudstad?

if (card.IsCorrect("gissning"))
{
  // kod utelämnad