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.

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
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.