['mountains', 'escape rooms', 'anthropology', 'oven mitts', 'fear']
Crea un programa en Python que generi un laberint aleatori i que permeti a l'usuari resoldre'l movent un personatge amb les tecles WASD.
```python
import random

def generar_laberint(amplada, alcada):
    laberint = [['#' for _ in range(amplada)] for _ in range(alcada)]
    
    def es_valida(x, y):
        return 0 <= x < amplada and 0 <= y < alcada and laberint[y][x] == '#'

    def crear_passadissos(x, y):
        laberint[y][x] = ' '
        direccions = [(2, 0), (-2, 0), (0, 2), (0, -2)]
        random.shuffle(direccions)
        for dx, dy in direccions:
            nx, ny = x + dx, y + dy
            if es_valida(nx, ny):
                laberint[ny - dy // 2][nx - dx // 2] = ' '
                crear_passadissos(nx, ny)
    
    crear_passadissos(1, 1)
    laberint[1][0] = 'I'  # Inici
    laberint[alcada - 2][amplada - 1] = 'F'  # Final
    return laberint

def mostrar_laberint(laberint):
    for fila in laberint:
        print(''.join(fila))

def moure_personatge(laberint, x, y, direcció):
    if direcció == 'w' and y > 0 and laberint[y - 1][x] != '#':
        y -= 1
    elif direcció == 's' and y < len(laberint) - 1 and laberint[y + 1][x] != '#':
        y += 1
    elif direcció == 'a' and x > 0 and laberint[y][x - 1] != '#':
        x -= 1
    elif direcció == 'd' and x < len(laberint[0]) - 1 and laberint[y][x + 1] != '#':
        x += 1
    return x, y

amplada = 21
alcada = 11
laberint = generar_laberint(amplada, alcada)
x, y = 0, 1  # Posició inicial

while True:
    mostrar_laberint(laberint)
    if laberint[y][x] == 'F':
        print("Has guanyat!")
        break
    direcció = input("Mou amb WASD (o 'q' per sortir): ").lower()
    if direcció == 'q':
        break
    x, y = moure_personatge(laberint, x, y, direcció)
```