Ga naar inhoud

Level 3: Lijsten en Inventory

Bekijk de volledige code
# =============================================================================
# ZOMBIE APOCALYPSE - Level 3
# =============================================================================
# Nieuw in dit level:
# - Lijsten (lists) voor inventory en zombie types
# - f-strings voor tekst met variabelen
# - Kortere schrijfwijze: += en -=
# - random.choice() om iets uit een lijst te kiezen
# - Meerdere voorwaarden met "and"
# =============================================================================

import os
import random
import time

os.system('cls' if os.name == 'nt' else 'clear')

# =============================================================================
# LIJSTEN (LISTS)
# =============================================================================
# Een lijst is een verzameling van dingen, tussen [ en ]
# Je kunt er dingen aan toevoegen en uithalen
# =============================================================================

# Een lege lijst - hier stoppen we later gevonden items in
inventory = []

# Een lijst met teksten - de verschillende soorten zombies
zombie_types = ["normale zombie", "snelle zombie"]

levens = 3
ronde = 0

print("đŸ§Ÿâ€â™‚ī¸đŸ’€ WELKOM BIJ ZOMBIE APOCALYPSE đŸ’€đŸ§Ÿâ€â™‚ī¸")
print("Overleef 5 rondes om te winnen!")
print()

# =============================================================================
# MEERDERE VOORWAARDEN MET "and"
# =============================================================================
# Je kunt voorwaarden combineren:
#   "and" = beide moeten waar zijn
#   "or"  = minstens ÊÊn moet waar zijn
# =============================================================================

while levens > 0 and ronde < 5:
    # += is een kortere manier om te schrijven: ronde = ronde + 1
    ronde += 1

    # =========================================================================
    # F-STRINGS
    # =========================================================================
    # Een f-string begint met f voor de aanhalingstekens
    # Alles tussen { } wordt vervangen door de waarde van die variabele
    # f"Ronde {ronde}" wordt bijvoorbeeld "Ronde 3" als ronde 3 is
    # =========================================================================
    print(f"--- Ronde {ronde}/5 ---")
    print(f"â¤ī¸ Levens: {levens}")

    # "if inventory" checkt of de lijst NIET leeg is
    # Een lege lijst [] is "False", een lijst met items is "True"
    if inventory:
        print(f"🎒 Inventory: {inventory}")
    print()

    # random.choice() kiest een willekeurig item uit een lijst
    zombie = random.choice(zombie_types)

    print("đŸŒĢī¸ Het is donker... je hoort gegrom...")
    time.sleep(1)
    print(f"đŸ§Ÿâ€â™‚ī¸ Een {zombie} komt op je af!")
    print()

    actie = input("⚡ Wat doe je? (rennen / vechten / zoeken) ➜ ")

    if actie == "rennen":
        print("đŸƒâ€â™‚ī¸ Je probeert weg te sprinten...")
        time.sleep(1)

        if zombie == "snelle zombie":
            kans = random.randint(1, 3)  # 1 op 3 kans om te ontsnappen
        else:
            kans = random.randint(1, 2)  # 1 op 2 kans

        if kans == 1:
            print("💨 Je bent ontsnapt!")
        else:
            print("😱 De zombie was sneller!")
            # -= is korter voor: levens = levens - 1
            levens -= 1

    elif actie == "vechten":
        print("âš”ī¸ Je maakt je klaar om te vechten...")
        time.sleep(1)

        kans = random.randint(1, 2)

        if kans == 1:
            print("đŸ’Ĩ Je verslaat de zombie!")
        else:
            print("đŸ§Ÿâ€â™‚ī¸ De zombie bijt je...")
            levens -= 1

    elif actie == "zoeken":
        print("🔍 Je zoekt rond...")
        time.sleep(1)

        # =================================================================
        # CHECKEN OF IETS IN EEN LIJST ZIT
        # =================================================================
        # "item in lijst" geeft True als item in de lijst zit
        # "item not in lijst" geeft True als item NIET in de lijst zit
        # =================================================================

        if "honkbalknuppel" not in inventory:
            if random.randint(1, 2) == 1:
                print("âš”ī¸ Je vindt een honkbalknuppel!")
                # .append() voegt iets toe aan het EINDE van een lijst
                inventory.append("honkbalknuppel")
            else:
                print("Je vindt niks bruikbaars...")
        else:
            if random.randint(1, 2) == 1:
                item = random.choice(["medkit", "zaklamp", "energie bar"])
                print(f"Je vindt een {item}!")
                inventory.append(item)
            else:
                print("Je vindt niks bruikbaars...")

    else:
        print("đŸ¤Ļ Zombies twijfelen niet...")
        levens = 0

    # Medkit gebruiken als je gewond bent
    if levens < 3 and "medkit" in inventory:
        gebruik = input("💊 Je hebt een medkit. Gebruiken? (ja/nee) ➜ ")
        if gebruik == "ja":
            # .remove() haalt het eerste item met die waarde uit de lijst
            inventory.remove("medkit")
            levens += 1
            print("â¤ī¸ +1 leven!")

    print()

print("đŸŽŦ THE END đŸŽŦ")

if ronde >= 5 and levens > 0:
    print("🏆 Je hebt alle 5 rondes overleefd! Je wint!")
else:
    print("💀 Game over...")

Wat leer je?

In dit level leer je over lijsten - een manier om meerdere dingen te bewaren in ÊÊn variabele. Je leert ook random.choice() om iets willekeurigs uit een lijst te kiezen.

De code

Een lijst maken

inventory = []  # lege lijst
zombie_types = ["langzame zombie", "snelle zombie", "sterke zombie"]

Lijsten gebruiken vierkante haken []. Items worden gescheiden door komma's.

Iets uit een lijst kiezen

zombie = random.choice(zombie_types)

random.choice() pakt een willekeurig item uit de lijst.

Iets toevoegen aan een lijst

inventory.append("honkbalknuppel")

Checken of iets in een lijst zit

if "honkbalknuppel" in inventory:
    print("Je hebt een wapen!")

in checkt of iets in de lijst zit.

Iets verwijderen uit een lijst

inventory.remove("medkit")

BEKIJK

  1. Run zombie.py
  2. Probeer te zoeken naar items
  3. Let op hoe je inventory groeit

LEES

  • Welke lijsten zijn er in de code?
  • Wat gebeurt er als je een zombie verslaat?
  • Hoe werkt de medkit?

PROBEER

Voeg een nieuw zombie type toe aan de zombie_types lijst. Misschien een "baby zombie" die makkelijk te verslaan is?