Memory Image - Partie 2

Pour afficher des images à la place des chiffres dans le jeu de Memory, nous devons effectuer quelques modifications dans le code existant. Suivez les étapes ci-dessous :

lien replit : https://replit.com/@Qulbutokee/Memory-Images-Partie-2#main.py

Étape 1 : Préparation des images

Préparez vos images en les plaçant dans le même répertoire que votre script Python. Assurez-vous que les images ont les dimensions appropriées pour s’adapter aux cartes du jeu. Renommez les images en conséquence pour qu’elles aient un nom cohérent avec les valeurs des cartes.

Étape 2 : Chargement des images

Dans la section où nous générons les paires de cartes, nous allons remplacer les valeurs numériques par les chemins d’accès aux images correspondantes. Pour cela, nous devons charger les images à l’aide de la fonction pygame.image.load().

# Génération des paires de cartes
image_paths = [« image1.png », « image2.png », « image3.png », « image4.png », « image5.png », « image6.png », « image7.png », « image8.png »]
pairs = [str(i) for i in range((NUM_ROWS * NUM_COLS) // 2)] * 2
random.shuffle(pairs)

# Chargement des images et redimensionnement
images = []
for path in image_paths:
    image = pygame.image.load(path)
    image = pygame.transform.scale(image, (CARD_WIDTH, CARD_HEIGHT))
    images.append(image)

Ici, nous avons ajouté une liste image_paths qui contient les chemins vers les images que vous souhaitez utiliser. Vous devez remplacer « image1.png », « image2.png », etc. par les chemins réels de vos images.

Ensuite, nous avons ajouté une boucle qui charge chaque image à partir du chemin spécifié, puis redimensionne l’image pour qu’elle corresponde aux dimensions de la carte.

 

# Dessiner les cartes
for card in cards:
    if card[« flipped »]:
        window.blit(images[int(card[« value »])], card[« rect »])
    else:
        pygame.draw.rect(window, WHITE, card[« rect »])

Dans cette partie du code, nous avons modifié la boucle de dessin des cartes pour afficher les images à la place des rectangles blancs. Si la carte est retournée (card[« flipped »] == True), nous utilisons window.blit() pour afficher l’image correspondante à la valeur de la carte (int(card[« value »])) à la position de la carte.

Assurez-vous d’avoir les images dans le même répertoire que votre script Python, et de les nommer correctement dans la liste image_paths.

Assurez-vous de placer les images image1.png, image2.png, etc., dans le même répertoire que votre script Python. Assurez-vous également d’adapter le chemin d’accès aux images et les noms d’image dans la liste pairs pour correspondre à vos propres images.

Avec ces modifications, le jeu affichera les images sur les cartes du Memory. Assurez-vous que les images sont correctement dimensionnées pour s’adapter aux cartes du jeu.

voici le code entier avec les images : 

 

import pygame
import random

# Initialisation de Pygame
pygame.init()

# Définition des couleurs
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)

# Définition des dimensions de la fenêtre du jeu
WINDOW_WIDTH = 800
WINDOW_HEIGHT = 600

# Définition des dimensions des cartes
CARD_WIDTH = 100
CARD_HEIGHT = 100
CARD_GAP = 10
NUM_ROWS = 4
NUM_COLS = 4

# Création de la fenêtre du jeu
window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
pygame.display.set_caption(« Memory Game »)

# Création de la police de texte
font = pygame.font.Font(None, 36)

# Génération des paires de cartes
image_paths = [« image1.png », « image2.png », « image3.png », « image4.png », « image5.png », « image6.png », « image7.png », « image8.png »]
pairs = [str(i) for i in range((NUM_ROWS * NUM_COLS) // 2)] * 2
random.shuffle(pairs)

# Chargement des images et redimensionnement
images = []
for path in image_paths:
    image = pygame.image.load(path)
    image = pygame.transform.scale(image, (CARD_WIDTH, CARD_HEIGHT))
    images.append(image)

# Création de la grille de cartes
cards = []
for row in range(NUM_ROWS):
    for col in range(NUM_COLS):
        x = col * (CARD_WIDTH + CARD_GAP) + (WINDOW_WIDTH – (CARD_WIDTH + CARD_GAP) * NUM_COLS) // 2
        y = row * (CARD_HEIGHT + CARD_GAP) + (WINDOW_HEIGHT – (CARD_HEIGHT + CARD_GAP) * NUM_ROWS) // 2
        card = {
            « value »: pairs.pop(),
            « rect »: pygame.Rect(x, y, CARD_WIDTH, CARD_HEIGHT),
            « flipped »: False,
            « matched »: False
        }
        cards.append(card)

# Variables de jeu
flipped_cards = []
matched_pairs = 0

# Boucle principale du jeu
running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

        if event.type == pygame.MOUSEBUTTONDOWN and matched_pairs < NUM_ROWS * NUM_COLS // 2:
            mouse_pos = pygame.mouse.get_pos()
            for card in cards:
                if not card[« matched »] and card[« rect »].collidepoint(mouse_pos):
                    if not card[« flipped »]:
                        card[« flipped »] = True
                        flipped_cards.append(card)
                        if len(flipped_cards) == 2:
                            if flipped_cards[0][« value »] == flipped_cards[1][« value »]:
                                flipped_cards[0][« matched »] = True
                                flipped_cards[1][« matched »] = True
                                matched_pairs += 1
                            else:
                                flipped_cards[0][« flipped »] = False
                                flipped_cards[1][« flipped »] = False
                            flipped_cards = []

    # Effacer l’écran
    window.fill(BLACK)

    # Dessiner les cartes
    for card in cards:
        if card[« flipped »]:
            window.blit(images[int(card[« value »])], card[« rect »])
        else:
            pygame.draw.rect(window, WHITE, card[« rect »])

    # Actualiser la fenêtre
    pygame.display.update()

# Fermeture de Pygame
pygame.quit()

 

Retour en haut