import pygame,sys,random from pygame.locals import * import pygame as pg from pygame import gfxdraw #importe toutes les constantes de PyGame LEcran = 1280 HEcran = 720 Ltable=5 #en nb de cases Htable=11 imgVide=pygame.image.load("vide2.png") #chargement d'une image R=imgVide.get_rect() #je récupère entre autre la valeur de R.width et R.height #ce sont la hauteur et la largeur des cases fen=pygame.display.set_mode((LEcran,HEcran)) #création d'une fenêtre vierge pygame.display.set_caption("Tableau de bord") #on lui donne un titre groupe_affichage = pg.sprite.Group() attributs_mine = dict( dimension=(80,80), position=(1000,650), couleur=pg.Color('red'), ) image_mine = pg.Surface(attributs_mine['dimension']) image_mine.fill((33,33,33,255)) gfxdraw.filled_mine(image_mine, 20, 20 , 15, attributs_mine['couleur']) #defintion mine + sélection de la mine mine = pg.sprite.Sprite(groupe_affichage) mine.image = image_mine mine.rect = image_mine.get_rect() mine.rect.topleft = attributs_mine['position'] attributs_selec = dict(dimension=(88, 88), couleur=pg.Color('red')) image_selec = pg.Surface(attributs_selec['dimension']).convert_alpha() image_selec.fill((0, 0, 0, 0)) selec = pg.sprite.Sprite() selec.image = image_focus selec.rect = image_selec.get_rect() gfxdraw.rectangle(image_selec, selec.rect, attributs_selec['couleur']) def CreeListeDesCases(): #renvoie un tableau de Ltable x Htable cases décrivant le plan du jeu Fd=[] for i in range(Htable): Ligne=[] #je crée une ligne vide for j in range(Ltable): if random.randint(1,10)==1: Ligne.append(1) #un trou 1 fois sur 10 else: Ligne.append(0) #case vide 9 fois sur 10 Fd.append(Ligne) return Fd def afficheLesCases(Fd): #affiche les Ltable x Htable cases for i in range(Htable): for j in range(Ltable): R.x,R.y=121+i*R.width,303+j*R.height #position de la case dans la fenêtre if Fd[i][j]==0: #c'est une case vide fen.blit(imgVide,R) #on place une case vide dans fen elif Fd[i][j]==1: #c'est une case contenant un trou fen.blit(imgTrou,R) Fd=CreeListeDesCases() #création du tableau décrivant le fond initial def selectionner_obstacle(item): global obstacle_en_selec obstacle_en_selec = item focus.add(groupe_affichage) focus.rect.center = image.rect.center def deselectionner_obstacle(): global obstacle_en_selec obstacle_en_selec = None focus.remove(groupe_affichage) obstacle_places = {} obstacle_en_selection = None clock = pg.time.clock main = True while main: clock.tick(FPS) for event in pg.event.get(): if event.type == pg.QUIT: main = False break elif event.type == pg.MOUSEBUTTONDOWN: if obstacle_en_selection: if selec.rect.collidepoint(event.pos): if selec.rect.collidepoint(event.pos): print('déselec de la mine') deselectionner_obstacle() else: if mine.rect.collidepoint(event.pos): print('selec de la mine') selectionner_obstacle(mine) ecran.fill(COULEUR_ECRAN) groupe_affichage.draw(ecran) pg.display.update() pg.quit()