hello, i am making a little card game like hearstone more or less.
but i encounter a difficulty when i try to fight the cards.
I do not understand and therefore cannot resolve the error that python reports to us
cordially
but i encounter a difficulty when i try to fight the cards.
I do not understand and therefore cannot resolve the error that python reports to us
#Importation de tous les modules utiles from random import * from math import * #CREATION DES DEFINITIONS #Tirage au sort pour savoir qui pose la première carte def quicommence(): premier=randint (1,2) return premier #Chargement des cartes def loadCards(nomFichier,sep=','): with open(nomFichier,encoding='utf8') as fichier: entete = fichier.readline() entete = entete[:-1].strip(' ').split(sep) jeu = [] for ligne in fichier: carte = {} ligne = ligne.strip('\n').split(sep) for i in range(len(ligne)): if ligne[i] == '': continue if entete[i] in ['mana','attaque','pv','defense']: carte[entete[i]] = int(ligne[i]) else : carte[entete[i]] = ligne[i] jeu.append(carte) return jeu cartesCreatures = loadCards("creatures.csv") #affichage des cartes(worgens) def displayCard(carte): # récupération des différents mots composant le nom listeMot = carte['nom'].split(' ') # longueur du plus long mot m = 0 for mot in listeMot : if len(mot) > m : m = len(mot) # constantes de texte blanc = ' ' * (m-2) rule = '-'*(m+4) empty = '| ' + blanc + ' |' masque = '{:^'+str(m+2)+'}' # pour centrer les noms # Construction du haut haut = '|' + chr(ord('\u26A1')) + str(carte['attaque']) + blanc + str(carte['defense']) + chr(ord('\u2745')) + '|' # Construction du bas bas = '|' + chr(ord('\u2665')) + str(carte['pv']) + blanc + str(carte['mana']) + chr(ord('\u0271')) + '|' # Affichage print(rule) print(haut) print(empty) for mot in listeMot : print('|' + masque.format(mot) + '|') print(empty) print(bas) print(rule) #Définition de la pioche qui est aléatoire. def piochecarte (source, destination, nbcartes): for i in range(nbcartes): index = randint(0, len(source)-1) destination.append(source[index]) #Attribution du nombres de cartes def nbcartes(): for i in [jeu]: i=64 for i in [deck1]: i=32 for i in [deck2]: i=32 #Création de la valeur de la carte (Worgens) def valeurdelacarte(carte): print ('valeurdelcarte',carte) return carte['attaque']*3-carte['defense'] #Gestion des combats def combatcarte(cartejoueur,carteIa): print('combatcarte',cartejoueur,carteIa) scorecartejoueur = valeurdelacarte(cartejoueur) scorecarteIa = valeurdelacarte(carteIa) if scorecartehumain > scorecarteIa : humainscores = humainscores + 1 print ("vous avez gagné cette manche") elif scorecarteIa > scorecartehumain : Iascores = Iascores + 1 print ("vous avez perdu cette manche") else : print ("vous avez fait égalité") return #Définition du tour de jeu de l'humain def cartejoueur(): for carte in main1: displayCard(carte) indexcarte = int(input("votre choix: ")) while indexcarte < 1 or indexcarte > len(main1) : print(indexcarte," choix invalide !") indexcarte = int(input("votre choix: ")) carteajouerhumain = main1[indexcarte - 1 ] main1.pop(indexcarte-1) print() print("vous avez choisi: ") displayCard (carteajouerhumain) #Définition du tour de jeu de l'IA def carteIa(): indexcarte = randint(0, len(main2)-1) carteajouerIa = main2[indexcarte - 1] main2.pop(indexcarte-1) displayCard (carteajouerIa) #CREATION DES VARIABLES tonpere = [] deck1 = [] deck2 = [] main1 = [] main2 = [] humainscores = 0 Iascores = 0 #ORGANISATION DU JEU print("Pour décider qui pose la première carte nous allons faire un tirage aléatoire, le joueur désigner posera la première carte et commencer le combat") if quicommence() == 1 : print("joueur désigner: Humain") else : print("joueur désigner: Orc") print() #Utilisation de la fonction qui permet de prendre 32 cartes aléatoirement pour créer les 2 decks piochecarte(cartesCreatures,deck1,32) piochecarte(cartesCreatures,deck2,32) #Utilisation de a fonction piochecarte permettant de créer les mains avec 3 cartes issues du deck piochecarte(deck1,main1,3) piochecarte(deck2,main2,3) #Affichage des mains et de a carte choisi par l'humain et l'IA if quicommence() == 1 : print("vos carte : ") cartejoueur() print () print("la carte de l'Orc: ") carteIa () print() else : print("la carte de l'Orc: ") carteIa () print() print("vos carte : ") cartejoueur() print () while humainscores < 10 or Iascores < 10 : combatcarte (cartejoueur,carteIa) print('combatcarte',cartejoueur,carteIa) print ("votre score est de : ",humainscores) print() print("le score de l'Orc est de : ",Iascores ) print() if humainscore == 10 : print ("Vous êtes le grand vainqueur!!!!!!") else : print ("Vous avez perdu! ")
Error:Traceback (most recent call last):
File "C:\Users\yohan\OneDrive\Bureau\projet info\Nouveau dossier\fin.py", line 180, in <module>
combatcarte (cartejoueur,carteIa)
File "C:\Users\yohan\OneDrive\Bureau\projet info\Nouveau dossier\fin.py", line 95, in combatcarte
scorecartejoueur = valeurdelacarte(cartejoueur)
File "C:\Users\yohan\OneDrive\Bureau\projet info\Nouveau dossier\fin.py", line 89, in valeurdelacarte
return carte['attaque']*3-carte['defense']
TypeError: 'function' object is not subscriptable
i hope could you help mecordially