Le cavalier d’Euler

Nous avons crée un jeu d’échec où seul le cavalier est présent. À chaque déplacement, le cavalier dépose une image mais ne peut plus se déplacer dans les cases déjà visité. L’objectif est de remplir toute les cases du plateau.

Voici le programme :

import pygame
import random
n,p=8,8
coup=0
blanc=(255,255,255)
noir=(0,0,0)
cases=80
echiquier=[[0]*n for i in range(p)]
X1=random.randint(0,n-1)
Y1=random.randint(0,p-1)
echiquier[X1][Y1]=1
coup=coup+1
pos = [[2,1],[1,2],[-1,2],[-2,1],[-2,-1],[-1,-2],[1,-2],[2,-1]]
def damier():
    i=0
    j=0  
    for i in range (8):
        for j in range(8):
            labelx=int(cases*(i+0.5))
            labely=int(cases*(j+0.5))
            if (i+j)%2==1:
                pygame.draw.rect(ecran,blanc, (cases*i,cases*j,cases,cases))
            else:
                pygame.draw.rect(ecran,noir, (cases*i,cases*j,cases,cases))
            
def possible(X,Y) :
    j=0
    if ((X>=0) and (X<8) and (Y>=0) and (Y<8) and (echiquier[X][Y]==0)) :       
        for k in range(8):
            if (X ==X1 + pos[k][0] and Y==Y1 + pos[k][1]):
                j=j+1
    if j!=0:
        return True
    else:
        return False
 
    
pygame.init()
pygame.font.init()
font = pygame.font.Font(None, 48)
ecran = pygame.display.set_mode((640, 640))
image = pygame.image.load("cavalier echec.jpg")
image1=pygame.transform.scale(image,(cases,cases)) 
damier()
ecran.blit(image1, (cases*X1, cases*Y1))
continuer = True
pos_mouse=[]
while continuer:
    for event in pygame.event.get():
        if event.type == pygame.MOUSEBUTTONDOWN:
            pos_mouse = event.pos            
            X=pos_mouse[0]//80
            Y=pos_mouse[1]//80
            
            if possible(X,Y)==True:
                coup=coup+1
                X1=X
                Y1=Y
                echiquier[X][Y]=coup
                ecran.blit(image1, (cases*X1, cases*Y1))
                pygame.display.flip()
    if event.type == pygame.KEYDOWN:
        continuer = False
    pygame.display.flip()
    
pygame.quit()     

Cliquez dans « l’image » puis collez le dans le programme pour pouvoir l’inclure dans ce dernier.

Aucune réponse

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *