Drop hier links of afbeeldingen om ze aan de editor toe te voegen.

Catan, tot 2014 De kolonisten van Catan, is een bordspel voor 3 tot 6 spelers, bedacht door Klaus Teuber en uitgebracht in 1995. Elke speler is een kolonist op het eiland Catan. Tijdens het spel ontvangen de spelers grondstoffen waarmee ze straten, dorpen en steden kunnen bouwen. Overwinningspunten houden de voortuitgang van een speler bij en kunnen spelers op verschillende wijzen verdienen. Twee zeszijdige dobbelstenen bepalen de grondstoffenopbrengst. De speler die als eerste het benodigde aantal overwinningspunten heeft verzameld, wint.

Tijdens het spel kan je volgende grondstoffen ontginnen: erts, wol, steen, hout en graan

Met deze grondstoffen kan je bouwwerken kopen zoals straten, huizen, steden en ontwikkelingen waarmee je je gebied uitbreidt en zo weer meer grondstoffen kunt verzamelen.

De grondstoffen die je nodig hebt voor een bepaald bouwwerk worden opgeslagen in een dictionary en liggen vast (wordt door de tests als parameter meegegeven):

bouwkosten_dict = {
"straat": {"hout": 1, "steen": 1}, 
"dorp": {"hout": 1, "steen": 1, "graan": 1, "wol": 1}, 
"stad": {"graan": 2, "erts": 3}, 
"ontwikkeling": {"graan": 1, "wol": 1, "erts": 1 }
}

Opdracht

Schrijf de functie bouwen_mogelijk die 3 parameters heeft nl. de dictionary met bouwkosten (zie boven), een dictionary met de grondstoffen die je bezit (key = grondstof, value = aantal) en als derde parameter het bouwwerk dat je wenst te kopen (string).

De functie geeft een bool terug, “True” als het bouwwerk kan gekocht worden en “False” indien niet. Daarnaast geeft het ook nog een dictionary terug met de ontbrekende goederen, inclusief de aantallen, in de vorm van een dictionary (key = grondstof, value = aantal). Indien het resultaat True is dan wordt ook een lege dictionary teruggegeven.

Voorbeelden

>>> bouwen_mogelijk(bouwkosten_dict, {"hout": 3, "steen": 2, "graan": 1}, "stad")
(False, {'graan': 1, 'erts': 3}) 
>>> bouwen_mogelijk(bouwkosten_dict, {"steen": 1, "graan": 2, "erts": 3}, "stad")
(True, {})