Om de woordenschat van een vreemde taal aan te leren, worden soms "flash cards" gebruikt. Op deze kaarten staat het te leren woord, samen met mogelijke vertalingen. In deze oefening bouwen we een reeks klassen om de woordenschat van een taal via flash cards in te oefenen.

Klasse FlashCard

Een object van deze klasse stelt een flash card voor. Elke kaart wordt hierbij gekenmerkt door het woord in een vreemde taal, in combinatie met een aantal vertalingen van dit woord.

Programmeer in deze klasse:

Voorbeeld

a = FlashCard('ami', ['vriend', 'kameraad'])
b = FlashCard('maison', ['huis'])
c = FlashCard('humide', ['vochtig', 'nat'])
str(a) # "[ami,['kameraad', 'vriend']]"
str(b) # "[maison,['huis']]"
str(b) # "[maison,['huis']]"
a == b # False
a == a # True
a == c # False
b == c # False
a == eval(repr(a)) # True
b == eval(repr(b)) # True
c == eval(repr(c)) # True
a.punten('kameraad') # 1
b.punten('kangoeroe') # 0
c.punten('regen') # 0

Klasse FlashCardCollectie

Een object van deze klasse stelt een reeks van flash cards voor.

Programmeer in deze klasse:

Voorbeeld

collectie = FlashCardCollectie('Frans0')
rue = FlashCard('rue', ['straat'])
janvier = FlashCard('janvier', ['januari'])
papier = FlashCard('papier', ['papier'])
rouge = FlashCard('rouge', ['rood'])
police = FlashCard('police', ['politie'])
table = FlashCard('table', ['tafel'])
collectie += rue
collectie += janvier
collectie += papier
collectie += rouge
collectie += police
collectie += table
str(collectie)
#'[Frans0,6]'
collectie += FlashCard('rouge', ['rood', 'straat', 'straat'])
[str(k) for k in collectie.get_cards()]
#["[rue,['straat']]", "[janvier,['januari']]", "[papier,['papier']]", "[rouge,['rood', 'straat']]", "[police,['politie']]", "[table,['tafel']]"]
collectie += FlashCard('pont', ['brug'])
[str(k) for k in collectie.get_cards()]
#["[rue,['straat']]", "[janvier,['januari']]", "[papier,['papier']]", "[rouge,['rood', 'straat']]", "[police,['politie']]", "[table,['tafel']]", "[pont,['brug']]"]
collectie -= FlashCard('janvier', [])
[str(k) for k in collectie.get_cards()]
#["[rue,['straat']]", "[papier,['papier']]", "[rouge,['rood', 'straat']]", "[police,['politie']]", "[table,['tafel']]", "[pont,['brug']]"]
collectie -= FlashCard('papier', [])
[str(k) for k in collectie.get_cards()]
#["[rue,['straat']]", "[rouge,['rood', 'straat']]", "[police,['politie']]", "[table,['tafel']]", "[pont,['brug']]"]

Klasse Speler

Een object van deze klasse stelt een speler voor die via flash cards de woordenschat van een vreemde taal inoefent. Deze speler wordt gekenmerkt door zin/haar en intelligentie (voorgesteld door een geheel getal 0 t.e.m. 10).

Programmeer in deze klasse:

Voorbeeld

random.seed(100)
speler = Speler('An Grootjans', 6)
str(speler) # '[An Grootjans,6]'
kaart = FlashCard('ami', ['vriend', 'kameraad'])
str(speler.get_antwoord(kaart)) #'kameraad'
str(speler.get_antwoord(kaart)) #'?'
str(speler.get_antwoord(kaart)) #'?'
str(speler.get_antwoord(kaart)) #'kameraad'
str(speler.get_antwoord(kaart)) #'?'

Klasse FlashCardRondeDefault

Deze klasse stelt een speler een reeks vragen, en houdt de score van de speler bij. Programmeer in deze klasse:

Voorbeeld

random.seed(100)
collectie = FlashCardCollectie('Frans0')
ami = FlashCard('ami', ['vriend', 'kameraad', 'kompaan')
chaise = FlashCard('chaise', ['stoel'])
collectie += ami
collectie += chaise
speler1 = Speler('Sofie Daelemans',8)
speler2 = Speler('Vincent Keereman',6)
ronde = FlashCardRondeDefault(collectie)
ronde.speel_ronde(4, speler1) #(7, 8)
ronde.speel_ronde(4, speler2) #(6, 8)

Klasse FlashCardRondeMoeilijkheidsgraad

Deze klasse erft over van de klasse FlashCardRondeDeafault en brengt volgende wijzigingen aan:

Voorbeeld

random.seed(100)
collectie = FlashCardCollectie('Frans0')
nouveau = FlashCard('nouveau', ['nieuw', 'origineel', 'ongekend'])
chapelle = FlashCard('chapelle',['kapel'])
bavard = FlashCard('bavard',['praatziek'])
humide = FlashCard('humide', ['vochtig', 'nat'])
collectie += nouveau
collectie += chapelle
collectie += bavard
collectie += humide
speler1 = Speler('David Derudder',7)
speler2 = Speler('Evelien Mottart',10)
ronde1 = FlashCardRondeDefault(collectie)
ronde1.speel_ronde(5, speler1) # (15, 20)
ronde1.speel_ronde(5, speler2) # (20, 20)
ronde2 = FlashCardRondeMoeilijkheidsgraad(collectie, 2)
ronde2.speel_ronde(5, speler1) #(7, 10)
ronde2.speel_ronde(5, speler2) #(8, 8)