Eigenes Projekt · Station 7 von 10
Karteikarten
Eine Lernkarten-App: Vorderseite, Rückseite, richtig oder falsch, und Karten, die man nicht kann, kommen öfter dran.

Ziel
Ein Werkzeug zum Lernen bauen, das sich merkt, welche Karten schon sitzen.
Umsetzung
- Karten mit Vorder- und Rückseite, sortiert in Kategorien. Ein Tipp auf die Karte dreht sie um.
- Jede Karte hat Punkte: „Falsch“ erhöht sie, „Richtig“ senkt sie, und die nächste Karte wird nach diesen Punkten gewichtet gezogen.
- Startseite mit Kategorien und die Lernansicht; Bearbeiten und Einstellungen sind noch in Arbeit. Die Daten liegen in SQLite.
- Die Oberfläche habe ich später überarbeitet: ein einheitliches Farbschema für helles und dunkles Windows, Kacheln für die Kategorien und eine große Lernkarte.


Code
Karten nach Punkten gewichtet ziehen
public async Task<Card?> GetRandomCardAsync(int categoryId)
{
var cards = await _db.Table<Card>()
.Where(c => c.CategoryId == categoryId)
.ToListAsync();
if (cards.Count == 0)
return null;
int totalWeight = cards.Sum(c => c.Points);
if (totalWeight == 0)
return cards[new Random().Next(cards.Count)];
int randomValue = new Random().Next(0, totalWeight);
int cumulative = 0;
foreach (var card in cards)
{
cumulative += card.Points;
if (randomValue < cumulative)
return card;
}
return cards.Last();
}Je mehr Punkte eine Karte hat, desto wahrscheinlicher kommt sie als Nächste dran.
Was ich gelernt habe
Ein Datenmodell mit Tabellen und Beziehungen in einer App zu verwenden. Die Lernlogik durfte dabei ruhig einfach anfangen.