Et oui, j'ai encore des probl�mes avec mon jeu de memory(probl�me pr�c�dent sur le m�me sujet). je vous remercie d'avance pour votre patience et je jure que j'ai fait des recherches sur google mon ami avant de poster ici.
Le jeu n'est pas fini: il me manque un menu d'accueil, le remplacement des messages sur console par des messages sonores mais �a c'est de la finition.
Je vous envoie deux codes: le ficher carte.py ( pas de probl�me lorsque je le teste) et le fichier memory.py ( celui o� j'ai un souci)
Le probl�me: je lance mon memory. Je retourne deux cartes. Si ce ne sont pas les m�mes, il ya un pause de 2 secondes puis les deux cartes redisparaissent.
Si je vais lentement, tout marche.
Si je clique vite, j'ai une erreur que je ne comprends pas:

ReactionAuClic \\NETWORKSPACE2\OpenShare\raf\jeux python\memory\memory.py 65
ValueError: list.remove(x): x not in list

concernant la ligne: self.cartes.remove(carte_cliqu�e)
il me dit donc que l'objet carte_cliqu�e n'est pas dans ma liste et qu'il ne peut la retirer de la liste.
Mais pourquoi cette erreur ne survient que si je vais trop vite?
Autre surprise pour moi: j'ai pass� le programme sur un petit portbale tactile �quip� de windows 8: si je clique � la souris lentement, le programme marche.
Si je clique avec le doigt, j'obtiens la m�me erreur que si j'�tais all� trop vite.
J'explique mon but final: faire un jeu de memory sur ecran tactile pour ma fille de bient�t 3 ans.
remarque: le souci est que vous ne pouvez tester le programme que si vous disposez d'un dossier data avec au moins 6 fichiers nomm�s: carte1.png,carte2.png,etc....
Merci d'avance pour votre patience, vos r�ponses:
le fichier carte.pysans probl�me)
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
 
# Créé par rafoim, le 30/12/2013 en Python 3.2
import pygame
import os
from pygame.locals import *
 
pygame.init()
 
def load_image(name, colorkey=None):
    fullname = os.path.join('data', name)
    try:
        image = pygame.image.load(fullname)
    except (pygame.error):
        print ("Impossible de charger l'image :", name)
        raise (SystemExit)
    image = image.convert()
    if colorkey is not None:
        if colorkey is -1:
            colorkey = image.get_at((0,0))
        image.set_colorkey(colorkey, RLEACCEL)
    return image
 
class Carte():
    def __init__(self,chemin_image_cachée,chemin_image_visible,rectangle):
        self.chemin=chemin_image_visible
        self.surface_visible=load_image(chemin_image_visible)
        self.surface_cachée=load_image(chemin_image_cachée)
        self.rectangle=rectangle
        self.visible=True
        self.Retourner()
 
    def Retourner(self):
        screen = pygame.display.get_surface()
        if self.visible==False:
            screen.blit(self.surface_visible,self.rectangle)
            self.visible=True
 
        else:
            screen.blit(self.surface_cachée,self.rectangle)
            self.visible=False
        pygame.display.update(self.rectangle)
 
 
 
if __name__=="__main__":
    screen = pygame.display.set_mode((1300, 700))
    fond=load_image("fond.png")
    screen.blit(fond,(0,0))
    pygame.display.flip()
    rectangle=Rect(100,50,300,200)
    carte1=Carte("carte0.png","carte1.png",rectangle)
    continuer=1
    while continuer:
        for event in pygame.event.get():
            if event.type==QUIT:
                continuer=0
            if event.type==MOUSEBUTTONDOWN:
                if carte1.rectangle.collidepoint(event.pos):
                    carte1.Retourner()
    pygame.quit()
le fichier � probl�me: memory.py
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
 
# Créé par rafoim, le 30/12/2013 en Python 3.2
from random import randint
import pygame
from pygame.locals import *
from carte import *
 
 
def TirageSansRemise(liste,nombre):
    # à partir d'une liste donnée, on renvoie une liste extraite de n éléments où n est le nombre sans répétition
    l1=liste
    l2=[]
    for i in range(nombre):
        pos=randint(0,len(l1)-1)
        l2.append(l1[pos])
        l1.remove(l1[pos])
    return l2
def ListePositions(largeur=280,hauteur=200,largeur_totale=1300,hauteur_totale=700,NbLignes= 3,NbColonnes=4):
            espace_horizontal=(largeur_totale-largeur*NbColonnes)//(NbColonnes+1)
            espace_vertical=(hauteur_totale-hauteur*NbLignes)//(NbLignes+1)
            rectangles=[]
            for i in range(NbLignes): #i est l'indice de ligne
                for j in range(NbColonnes):
                    abscisse_coin= (j+1)*espace_vertical+j*largeur
                    ordonnée_coin= (i+1)*espace_vertical+i*hauteur
                    rectangle=Rect(abscisse_coin,ordonnée_coin,largeur,hauteur)
                    rectangles.append(rectangle)
            return rectangles
 
 
class Memory():
    def __init__(self,liste,NbLignes=3,NbColonnes=4):
        #on dit que pour l'instant, il n'y a pas de carte déjà retournée
        self.premiere_carte_retournée=False
        self.premiere_carte=None
        # On tire 6 cartes dans la liste
        l=TirageSansRemise(liste,6)
        # On double la liste
        l=l*2
        # On mélange les cartes
        l=TirageSansRemise(l,12)
        #On calcule la liste des positions
        liste_rectangles=ListePositions()
        # On initialise les cartes ce qui déclenche aussi l'affichage
        self.cartes=[]
        NbImages=NbColonnes*NbLignes
        for i in range(NbImages):
                chemin1="carte0.png"
                chemin2=l[i]
                rect=liste_rectangles[i]
                carte=Carte(chemin1,chemin2,rect)
                self.cartes.append(carte)
 
    def TestDeVictoire(self):
        if self.cartes==[]:
            print("tu as gagné la partie!!")
            pygame.time.wait(6000)
            continuer=0
 
 
    def ReactionAuClic(self,carte_cliquée):
        if self.premiere_carte_retournée:
            if carte_cliquée.chemin==self.premiere_carte.chemin:
                print("bravo")
                self.cartes.remove(self.premiere_carte)
                self.cartes.remove(carte_cliquée)
                self.TestDeVictoire()
 
            else:
                print("raté!!!")
                pygame.time.wait(2000)
                carte_cliquée.Retourner()
                self.premiere_carte.Retourner()
 
            self.premiere_carte_retournée=False
 
        else:
            self.premiere_carte=carte_cliquée
            self.premiere_carte_retournée=True
            print("il faut trouver l'autre carte")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
if __name__=="__main__":
    screen = pygame.display.set_mode((1300, 700))
    fond=load_image("fond.png")
    screen.blit(fond,(0,0))
    pygame.display.flip()
    liste_images=[]
    for i in range(1,11):
        chemin="carte"+str(i)+".png"
        liste_images.append(chemin)
    memo=Memory(liste_images)
    continuer=1
    while continuer:
        for event in pygame.event.get():
            if event.type==QUIT:
                continuer=0
            if event.type==MOUSEBUTTONDOWN:
                for carte in memo.cartes:
                    if carte.rectangle.collidepoint(event.pos):
                        carte.Retourner()
                        memo.ReactionAuClic(carte)
    pygame.quit()