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 subscriptablei hope could you help mecordially
