Basis

Basis#

Opdracht: Interactieve fictie

Dit is een van de vele mogelijke manieren om deze opdracht te maken.

import time

# change to 0.0 for testing or speed runs,
# ... or larger for dramatic effect!
delay = 4.0

username = input("Hoe noemt men u, edele avonturier? ")

print()
print("Welkom,", username, "in het Libracomplex, een labyrint")
print("van gewichtige wonderen en grote hoeveelheden ... taart!")
print()
print("Uw queeste: om een taart te vinden, en te eten!")
print()

flavor = input("Welke smaak zoekt u? ")
if flavor == "aardbeien":
    print("Uw wijsheid in taartkeuze is overweldigend!")
elif flavor == "kersen":
    print("Een Limburgse klassieker: een goede keuze, avonturier!")
elif flavor == "appel":
    print("De oude goude die in elke situatie past, kruimelig of volgens grootmoeders recept!")
elif flavor == "slagroom":
    print("Romige met een variatie aan fruit voor hen die niet kunnen kiezen!")
elif flavor == "mokka":
    print("Een goed alternatief voor hen die niet van fruit houden!")
elif flavor == "chocolade":
    print("Bewaart u een stukje voor mij?")
else:
    print("Ieder zijn smaak...")
time.sleep(delay)

Er zijn zoveel meer smaken dan eerder genoemd. Dit is daarom een makkelijke plek om meerdere elif statements toe te voegen en zo te voldoen aan de tweede eis in de opdracht (if, minstens twee elif’s en else).

print()
print("Voorwaarts naar de queeste!\n")
time.sleep(delay)
print("U volgt de gang waar u begint en komt bij een kruispunt.\n")
time.sleep(delay)
# Drie opties is ideaal voor een if, elif, else constructie
# Optie 1: de linker gang
print("De gang naar links verandert snel in een donker gat.")
print("Een van de muren in deze gang lijkt een knop te hebben.\n")
time.sleep(delay)

# Optie 2: de rechter gang
print("De gang naar rechts is dim verlicht, maakt een bocht")
print("naar links en ruikt naar verse broodjes.\n")
time.sleep(delay)

# Optie 3: rechtdoor
print("De goed verlichte gang rechtdoor leidt naar een gesloten deur.\n")

time.sleep(delay)
print()

Notitie

Door slim gebruik te maken van time.sleep(delay) kun je voorkomen dat het scherm overspoeld wordt met tekst. Dit geeft de gebruiker/speler tijd om te lezen.

choice1 = input("Weerstaat u de verleiding om op de knop in de linker gang te drukken? [ja/nee] ")
# Twee opties en alleen een optie heeft een effect is ideaal voor een enkele if constructie
print()
if(choice1 == "nee"):
    print()
    print("Uw nieuwsgierigheid wint en u slaat op de knop.")
    print("Aan het einde van de linker gang springt een licht aan.")
    print("Een deur verschool zich in het donker.\n")
    time.sleep(delay)

Door een gebeurtenis in te bouwen die alleen plaats vindt als de gebruiker/speler iets wel of niet doet, kunnen we nu een enkele if statement toepassen om aan de laatste eis te voldoen (alleen een if).

print()
choice2 = input("Welke kant gaat u op? [links/rechts/rechtdoor] ")
if(choice2 == "links"):
    if(choice1 == "ja"): # Er is niet op de knop gedrukt dus het is nog steeds donker!
        print()
        print("U loopt het donker van de gang tegemoet.")
        print("Na een paar passen in het donker botst u")
        print("tegen een deur die met luid kabaal gelijk open schiet.")
        print("U stapt in het duister de deur door, maar er")
        print("is geen vloer onder uw voeten. U valt en valt.\n")
    else: # Het licht brandt
        print()
        print("U loopt naar de dichte deur.")
        print("Zodra u de klink aanraakt, schiet de deur")
        print("met veel kracht en lawaai open. Het licht laat een")
        print("vloerloze ruimte zien. U draait zich om om terug")
        print("te lopen, maar een onzichtbare muur houdt u tegen.")
        print("De enige weg vooruit is naar beneden, een sprong in het duister.")
        print("U springt en valt en valt. Het licht is niet meer te zien.\n")

    time.sleep(delay)
    time.sleep(delay)
    print("Met een plons valt u in een door maanlicht")
    print("verlichte vijver niet ver van uw huis.")
    print("Helaas geen taart voor u, ", username, ".")
    print("Snel naar huis voor droge kleding!\n")

We hebben hier de gebruiker/speler drie opties gegeven. Met een if-elif-else constructie kunnen we bepalen welke keuze er gemaakt is en voldoen aan de eerste eis (if, precies één elif en else). Hier zien we dat er voor gekozen is om if te gebruiken voor de keuze links. Of de gebruiker/speler wel of niet op de knop heeft gedrukt, heeft effect op het verhaal. Daarom wordt met een nested if-else gekeken welke versie van het verhaal verteld

elif(choice2 == "rechts"):
    print()
    print("U besluit uw neus te volgen en loopt de rechter gang in.")
    print("Als er vers gebakken broodjes zijn dan zal er ook taart zijn toch?\n")
    time.sleep(delay+2.0)
    print("U gaat de bocht om en nog een bocht en nog een bocht.")
    print("Uw gevoel voor richting is compleet verdwenen, maar de geur,")
    print("de geur van heerlijke verse broodjes wordt wel sterker.\n")
    time.sleep(delay+2.0)
    print("Eindelijk komt u bij een ruimte vol met ovens, werkbanken en")
    print("voorraadkasten vol met ingredienten. Behekste rollers, deegmixers")
    print("en andere keukengereedschap zijn druk in de weer met het maken van")
    print("de meest luxe broodjes die u maar kunt verzinnen. Het water loopt")
    print("u in de mond, maar er is geen taart inzicht.\n")
    time.sleep(delay)

    choice3 = input("Gaat u opzoek naar taart of is een vers broodje ook goed? [taart/brood] ")
    if(choice3 == "taart"):
        print()
        print("Verwoed gaat u opzoek naar taart. Zoveel broodjes en geen taart?")
        print("Dat kan toch niet! U trekt kastje na kastje open.")
        print("Kruiden, vers en gedroogd, alle soorten bloem,")
        print("taartvullingen en andere bakbenodigdheden komt u tegen.")
        print("Maar geen taart. Als de laatste deur open trekt, wordt alles zwart.\n")
        time.sleep(delay+3.0)
        print("U knippert een paar keer met uw ogen en beseft")
        print("dat u in uw eigen keuken staat. Alle kastjes")
        print("staan open en het is een puinhoop. Bloem overal,")
        print("ook op u. Een brandlucht komt uit de oven.\n")
        time.sleep(delay+3.0)
        print("Snel doet u de oven open om een zwart geblakerde")
        print("taart te zien. Blijkbaar probeerde u zelf een ")
        print(flavor, "taart te maken. Helaas bent u in een")
        print("dagdroom belandt en is er geen taart voor u.\n")
    elif(choice3 == "brood"):
        print()
        print("Al snel ziet u waar de verse broodjes ingepakt worden.")
        print("Het duurt niet lang voor u een zakje vindt met een assortiment")
        print("waar u blij van wordt. Met een te vrede gevoel loopt u naar")
        print("de deur met uitgang. Zodra u door de deur stapt,")
        print("stapt u uw eigen keuken in. Hier staat al een glas van uw")
        print("favoriete drankje met de juiste temperatuur klaar en een")
        print("bordje. Geen taart voor u, maar wel heerlijk vers brood.\n")

else:
    print()
    print("U loopt naar de deur recht voor u en opent hem.")
    print("Een kamer strekt zich voor u uit; in het gedimde licht ziet u")
    print("aan de ene kant een tafel met onduidelijke vormen en")
    print("materialen, en aan de andere kant een deur op een kier,")
    print("waarachter gelach --is dat gelach?-- van studenten klinkt.")
    time.sleep(delay)

    print()
    choice4 = input("Kiest u de tafel of de deur? [tafel/deur] ")
    print()

    if choice4 == "tafel":
        print("Als u de tafel benadert lijkt de onduidelijke massa")
        print("een steeds grotere vorm aan te nemen, tot ...")

        time.sleep(delay)

        print("... ze herkenbaar wordt als een grote stapel verpakte")
        print("taarten, het karton strak geplooid. Uw uitdaging --en")
        print("honger-- is op smakelijke wijze opgelost.")
        print()
        print("Tot ziens,", username, "!\n")
    else:
        print("U opent de deur en ziet een congregatie van wijze dames")
        print("en heren, die allen genieten van hun taken. Samenwerking")
        print("en vrolijkheid zijn hier in overvloed aanwezig, maar...")

        time.sleep(delay)

        print("...ze hebben ALLE taart opgegeten! Resten van dozen")
        print("liggen overal verspreid. U wordt duizelig en grijpt")
        print("naar een taart. Er is niets. U ademt uit en valt,")
        print("en ligt verslagen tussen de resten van dozen die u")
        print("langzaam bedekken tot verstikking volgt.")
        print()
        print("Vaarwel,", username, ".\n")