Eigenes Projekt · Station 6 von 10

Jeopardina

Ein Quizspiel im Stil von Jeopardy: Teams wählen Kategorien und Punktestufen, beantworten Fragen gegen die Zeit und sammeln Punkte.

Jeopardina

Ziel

Ein Spiel für mehrere Teams bauen, bei dem man Fragen selbst hinzufügen und löschen kann.

Umsetzung

  • Desktop-Oberfläche mit WPF: Seiten zum Zusammenstellen eines Spiels, zum Hinzufügen und Löschen von Fragen und das Spielfeld selbst.
  • Zwei Fenster pro Spiel: das Spielfeld für die Teams (zum Beispiel auf einem zweiten Bildschirm) und ein Moderatorfenster, das noch leer ist.
  • Das Spielfeld hat 3 bis 5 Kategorien mit je fünf Stufen von 100 bis 500 Punkten, dazu ein Zeitlimit pro Frage und die Punkte der Teams.
  • Fragen, Antworten, Punkte und Kategorien liegen in einer SQLite-Datenbank. Eigene Steuerelemente und Vorlagen, zum Beispiel eine umdrehbare Karte.

Code

Das Spielfeld aus der Datenbank bauen

StartGamePage.xaml.cs
var questionsCommand = connection.CreateCommand();
questionsCommand.CommandText = "SELECT Fragen, Antwort, Punkte FROM fragen WHERE KategorieID = @CategoryId;";
questionsCommand.Parameters.AddWithValue("@CategoryId", categoryId);

var allQuestionsForCategory = new List<QuestionData>();
using (var reader = questionsCommand.ExecuteReader())
{
    while (reader.Read())
    {
        allQuestionsForCategory.Add(new QuestionData
        {
            QuestionText = reader.GetString(0),
            AnswerText = reader.GetString(1),
            Points = reader.GetInt32(2)
        });
    }
}

var categoryData = new CategoryAndQuestions { CategoryName = categoryName };
for (int j = 0; j < 5; j++)
{
    int points = (j + 1) * 100;
    var questionsForPoints = allQuestionsForCategory.Where(q => q.Points == points).ToList();
    if (questionsForPoints.Count > 0)
    {
        int randomIndex = random.Next(questionsForPoints.Count);
        categoryData.Questions[j] = questionsForPoints[randomIndex];
    }
    else
    {
        categoryData.Questions[j] = new QuestionData { QuestionText = "N/A", AnswerText = "N/A", Points = points };
    }
}

Für jede Stufe von 100 bis 500 Punkten wird zufällig eine passende Frage der Kategorie gezogen; fehlt eine, steht „N/A“ im Feld.

Was ich gelernt habe

WPF mit XAML, Vorlagen und Datenbindung, und wie man eine Datenbank in eine Desktop-App einbindet.

Es ist ein unerwarteter Fehler aufgetreten. Neu laden 🗙

Verbindung wird wiederhergestellt …

Verbindung fehlgeschlagen. Nächster Versuch in Sekunden.

Verbindung fehlgeschlagen. Bitte erneut versuchen oder die Seite neu laden.

Die Sitzung wurde vom Server pausiert.

Die Sitzung konnte nicht fortgesetzt werden. Bitte erneut versuchen oder die Seite neu laden.