Joc de Rol¶
Les característiques d’un personatge de joc de rol es representen com un tuple de 5 components (enters): punts de força, intel·ligència, agilitat, esperit i resistència. Un personatge del joc es representa com un tuple format pel nom del personatge, la seva espècie (un string que pot ser: “huma”, “elf”, “nan” o “gnom”), les seves característiques (el tuple descrit abans) i els seus punts de vida (enter). Per exemple, el personatge p1 = (“Karen”, “elf”, (4, 5, 7, 8, 2), 12) representa un elf anomenat Karen que té 12 punts de vida, 4 de força, 5 d’intel·ligència, 7 d’agilitat, 8 d’esperit i 2 de resistència.
Dissenyeu la funció mesPoderos(p1, p2) que, donats dos personatges, retorna l’enter -1 si el primer és més poderós que el segon, 1 si el segon és més poderós que el primer o 0 si cap dels dos supera l’altre. Es considera que un personatge és més poderós que l’altre si té més punts en totes les seves característiques. Per exemple, si p1 és l’elf Karen descrit abans i p2 = (“Willow”, “nan”, (5, 6, 3, 8, 2), 18), mesPoderos(p1, p2) retornaria 0 ja que cap dels dos és més poderós que l’altre.
Dissenyeu la funció llistaEspecie(llista) que, donada una llista de personatges, retorna en una altra llista formada per tuples: nom de l’espècie i el nombre de personatges d’aquella espècie. La llista ha d’estar ordenada alfabèticament pel nom de l’espècie. Si ja saps treballar amb diccionaris, utilitza’ls per resoldre aquesta pregunta.
Dissenyeu la funció vidaEspecie(llista, especie) que, donada una llista de personatges i donada una espècie, retorna la suma dels punts de vida dels personatges de la llista que són de l’espècie indicada.
Dissenyeu la funció mesQue(llista, idcaract) que donada una llista de personatges i un enter entre 0 i 4 que indica una de les característiques (0=força, 1= intel·ligència, 2 = agilitat, 3=esperit i 4=resistència), retorna el nom i l’espècie del personatge de la llista amb més punts d’aquesta característica. Si hi ha dos o més màxims, cal que la funció retorni el nom i l’espècie del primer dels màxims.
El fitxer «rol.txt» conté les dades dels personatges del joc: una línia per personatge, i, per cada línia, el nom, l’espècie, la vida i els punts de les característiques. Dissenyeu la funció personatgesFitxers() que retorna el nom i els punts de vida del personatge del fitxer «rol.txt» que té més punts de vida.