Je ne trouve pas ou est l'erreur dans mon programme
Bonjour,
Voila j'utilisele méthode de Siwen pour apprendre python et je me suis mis en tete de creer une bataille (vous savez le jeux de cartes) en utilisant la programmation objet
Mon probleme est que je ne trouve pas me source d'erreur lors de l'execution de mon programme
Je fais donc appel a vous, sachant que mon script risque de ne pas etre parfait puisque je ne suis pas encore très expérimenté:
mon script:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139
| #----------Jeux de cartes: Bataille----------#
from random import randrange
from time import sleep
#defintion des classes
class JeuxDeCarte(object):
"Definition d'un jeu de cartes"
couleur = ("Coeur", "Carreau", "Trefle", "Pique")
valeur = (2, 3, 4, 5, 6, 7, 8, 9, 10, "Valet", "Dame", "Roi", "As")
def __init__(self):
"construction de la liste des 52 cartes"
self.jeu = []
for coul in range(4):
for val in range(13):
self.jeu.append((val, coul))
def nom_carte(self, c):
"renvoi le nom de la carte c en clair"
return "%s de %s" % (self.valeur[c[0]], self.couleur[c[1]])
def battre(self):
"permet de melanger les cartes"
a = 0
b = len(self.jeu)
while a < randrange(100, 200):
i = randrange(b)
n = randrange(b)
self.jeu[i], self.jeu[n] = self.jeu[n], self.jeu[i]
a = a + 1
def tirer(self):
"Tirage de la première carte de la pile"
t = len(self.jeu)
if t >0:
carte = self.jeu[0]
del(self.jeu[0])
return carte
class Jeux2(JeuxDeCarte):
"defintion des deux jeu"
def __init__(self):
self.jeuA = []
self.jeuB = []
JeuxDeCarte.__init__(self)
def tirerA(self):
"Tirage de la première carte de la pile"
t = len(self.jeuA)
if t >0:
carte = self.jeuA[0]
del(self.jeuA[0])
return carte
def tirerB(self):
"Tirage de la première carte de la pile"
t = len(self.jeuB)
if t >0:
carte = self.jeuB[0]
del(self.jeuB[0])
return carte
def creer_2jeux(self):
"creer les deux jeux"
self.battre()
for i in range(52):
if i%2 == 0:
self.jeuA.append(self.tirer())
else:
self.jeuB.append(self.tirer())
def match(self):
"compare les cartes et les remet au gagnant"
carteA = self.jeuA.tirerA()
carteB = self.jeuB.tirerB()
gain = []
gain.append(carteA)
gain.append(carteB)
print carteA.nom_carte(carteA)
print "vs"
print carteB.nom_carte(carteB)
if carteA[0] > self.carteB[0]:
while i < len(gain):
self.jeuA.append(gain[i])
i = i + 1
for i in range(len(gain)):
del gain[0]
print "Vous gagnez!"
elif self.carteB[0] > self.carteA[0]:
while i < len(gain):
self.jeuB.append(gain[i])
i = i + 1
for i in range(len(gain)):
del gain[0]
print "L'ordinateur gagne!"
else:
print "Bataille !"
print "Il vous reste %s carte(s)" % (len(self.jeuA))
print "Il reste %s carte(s) a l'ordinateur" % (len(self.jeuB))
def verif(self):
if len(self.jeuA) == 0 or len(self.jeuB) == 0:
return False
#programme principal
jeux = Jeux2()
print "distribution des cartes..."
sleep(2)
jeux.creer_2jeux()
print "les jeux sont creer!"
raw_input('appuyer sur Entree pour tirer une carte')
a = True
while a == True:
jeux.match()
a = jeux.verif()
raw_input('appuyer sur Entree pour tirer une carte')
if len(jeux.jeuA) == 0:
print "Vous avez perdu..."
else:
print "Vous avez gagner!!" |
Ce que j'obtiens quand je lance le programme:
Code:
1 2 3 4 5 6 7 8 9 10
| distribution des cartes...
les jeux sont creer!
appuyer sur Entree pour tirer une carte
Traceback (most recent call last):
File "C:\Python26\Exercice+prog\Bataille_carte.py", line 135, in <module>
jeux.match()
File "C:\Python26\Exercice+prog\Bataille_carte.py", line 82, in match
carteA = self.jeuA.tirerA()
AttributeError: 'list' object has no attribute 'tirerA' |
Voila, quelqu'un pour m'aider svp ?