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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ?