Aquells/es que sou de la generació dels 80 (i si ets més jove o més vell, segur que n'has sentit parlar) recordareu els llibres de l'editorial Timun Mas amb el seu característic color vermell de la col·lecció "Elige tu propia aventura". Era un conjunt de llibres on el lector tenia la possibilitat d'agafar infinitat de camins per a construir la seva pròpia història. Vols aprendre a fer una cosa semblant però ara amb Python?
El nivell de les sentències condicionals if / elif / else va en augment, però res que no puguis resoldre amb un petit esquema abans de partir a dissenyar la teva història. Fixa't en el que et proposam:
El personatge arriba al final del camí i pot triar només esquerra o dreta.
Si va a l'esquerra arriba a un llac on ha d'escollir entre passar-lo nedant o enrevoltar-lo caminant.
Les dues opcions són fatídiques per al jugador, acaben amb la mort del personatge.
Si agafa el camí de la dreta arriba a un pont i ha d'escollir entre tornar enrere o travessar el pont.
Si torna enrere, el personatge mor.
Si decideix creuar troba un home que vol xerrar amb ell, té dues noves opcions, xerrar o no xerrar amb ell.
Xerrar amb ell serà la solució positiva al desenvolupament de la història, ja que aquest home li dona or.
Series capaç de replicar aquest projecte? Vols que el teu alumnat repliqui aquesta o una altra història semblant? Vols que deixin volar la seva imaginació construint històries fantàstiques? Fixa't com seria la programació d'aquesta aventura.
Desenvolupament de la programació
nom = input("Escriu el teu nom: ")
print(f"Benvingut/da, {nom}, a aquesta aventura!")
resposta = input("Vas passejant pel bosc i arribes al final del camí. "\
"Clarament veus dues possibilitats, dreta o esquerra, "\
"cap a on vols anar? ").lower()
if resposta == "esquerra":
resposta = input("Comences a caminar i arribes a un llac, pots caminar "\
"fent-li la volta o, més ràpid, atravessar-lo nedant. "\
"Escriu 'caminar' per caminar al voltant o 'nedar' per "\
"passar-lo nedant: ")
if resposta == "nedar":
print("L'has atravessat nedat i has mort devorat per un cocodril!")
elif resposta == "caminar":
print("Has caminat molts de quilòmetres, t'has quedat sense aigua "\
"i has perdut el joc.")
else:
print('No és una opció vàlida. Has perdut.')
elif resposta == "dreta":
resposta = input("Arribes a un pont, sembla inestable, vols creuar-lo "\
"o tornar enrere (creuar/tornar)? ")
if resposta == "tornar":
print("Has tornat enrere i has mort atacat per un rinoceront!")
elif resposta == "creuar":
resposta = input("Travesses el pont i et trobes amb un desconegut. "\
"Xerres amb ell (sí/no)? ")
if resposta in ["sí", "si"]:
print("Xerres amb el desconegut i et dona or. HAS GUANYAT!")
elif resposta == "no":
print("L'ignores, li cau malament et fa un conjur i perds.")
else:
print('No és una opció vàlida. Has perdut.')
else:
print('No és una opció vàlida. Has perdut.')
else:
print('No és una opció vàlida. Has perdut.')
print(f"Gràcies per jugar {nom}. Ens retrobam a una propera aventura!")
Ajuda i reflexions prèvies al desenvolupament
Si vols desenvolupar projectes de programació en qualsevol llenguatge (en el nostre cas, Python, però això és aplicable a qualsevol altre), és fonamental que l'usuari dediqui temps a crear un esquema o un diagrama sobre paper o qualsevol altre suport. Aquest pas és cabdal per organitzar idees, definir els fluxos i establir l'estructura del projecte.
Tot i que al principi pot semblar senzill treballar directament amb el codi, a mesura que el projecte es va complicant, les estructures mentals esdevenen més difuses i desorganitzades. Per això, en projectes complexos, és absolutament imprescindible passar per una fase prèvia d'organització i disseny. Aquesta etapa sobre paper garanteix una millor claredat i coherència a llarg termini.
Draw.io és una eina en línia que permet crear diagrames, fluxos de treball, esquemes i organigrames de manera senzilla i intuïtiva. La seva interfície gràfica facilita la representació visual de processos i estructures, essent molt útil per organitzar idees en projectes de programació.
Per dur a terme aquesta fase prèvia, hem utilitzat l'eina Draw.io, una solució informàtica que permet crear diagrames i esquemes de manera senzilla i eficient. Utilitzar aquesta, altres eines similars o senzillament paper, facilita la comprensió global del projecte i assegura que tot estigui ben planificat abans de començar a escriure el codi.
🔗 Fes clic aquí si vols disposar d'una còpia d'aquest esquema per treballar amb el teu alumnat.
Després de tenir a sobre del paper l'estructura clara del programa, et recomanam seguir les passes següents:
Inicialment, construirem un condicional simple on presentarem les 3 opcions del programa. Això et permetrà construir un esquema bàsic a dintre del qual anirem niant les noves estructures condicionals. Què pot passar en aquestes 3 primeres opcions?
Que l'usuari hagi triat "esquerra" (if resposta == "esquerra":)
Que l'usuari hagi triat "dreta" (elif resposta == "dreta":)
Que l'usuari s'hagi equivocat escrivint qualsevol cosa la qual acabarà amb aquesta estructura condicional (else:)
Com veim a l'esquema, una vegada que tenim a l'usuari encaminat a una branca (esquerra o dreta), tornarem a tenir un condicional, diguem-li així ara "de segon nivell" el qual esgota les possibilitats d'aquella via.
👈️ Començarem amb l'opció més curta, és a dir, el camí de l'esquerra on el participant arriba al llac:
Si decideix "nedar" morirà perquè serà devorat per un cocodril (if resposta == "nedar":)
Si decideix "caminar" també morirà però aquesta vegada de set (elif resposta == "caminar":)
Si s'equivoca i escriu qualsevol cosa que no sigui ni "nedar" ni "caminar", el programa indicarà que no és una opció vàlida (else:)
👉 Continuant amb l'opció més llarga del camí de la dreta on el participant arriba al pont:
Si decideix que vol "tornar" morirà per l'atac d'un rinoceront (if resposta == "tornar":)
Si decideix "creuar" engegarà un nou condicional ara, de "tercer nivell" (elif resposta == "creuar":):
Decideix sí xerrar amb el vell (resposta "Sí") i guanya la partida (if resposta == "Sí":)
Decideix no xerrar amb el vell (resposta "No") i mor (elif resposta == "No":)
Si s'equivoca i escriu qualsevol cosa que no sigui ni "Sí" ni "No", el programa indicarà que no és una opció vàlida (else:)
Si s'equivoca i escriu qualsevol cosa que no sigui ni "tornar" ni "creuar", el programa indicarà que no és una opció vàlida (else:)
Desenvolupament del model en petites parts
❗️ Nota: Les imatges que veuràs a continuació són a tall d'exemple per esquematitzar la història anterior. No s'ha tengut en compte el format ni la redacció proposada al codi anterior d'aquesta pàgina.