import numpy as np import matplotlib.pyplot as plt import matplotlib.image as mping from os import getcwd,chdir import random as rd import sys#permet de fermer le programme chdir("\\Users\\ridea\\OneDrive\\Documents\IPT PCSI")#entrer votre propre chemin ou son enregistées les photos! image0=plt.imread("chiffre0.png")#faire attention a ce que ce soit les memes noms taille0=image0.shape imagegrille=plt.imread("grille.png") taillegrille=imagegrille.shape imagegrillefan=plt.imread("grille.png") image1=plt.imread("chiffre1bis.png") taille1=image1.shape image2=plt.imread("chiffre2.png") taille2=image2.shape image4=plt.imread("chiffre4.png") taille4=image4.shape imagedrap=plt.imread("drapeau.png") tailldrap=imagedrap.shape imagedrap=plt.imread("drapeau.png") #plt.imshow(imagedrap) #plt.show() imagebombe=plt.imread("bombe.png") #plt.imshow(imagebombe) #plt.show() def générationgrille(a): k=0#pour la grille fantome j=0 w=0#pour dessiner la grille z=0#pour la boucle infinie u=0#concerne la pose du piquet, inutile choix=[] suite='true' jouer=[] if a=="facile": grillefan=np.array([[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]]) while k<=10:#génération de la grille fantome z=rd.randrange(0,9) q=rd.randrange(0,9) o=int(q) a=int(z) # for l in range(a*37,(a+1)*37): # for c in range(o*50,(o+1)*50): # imagegrillefan[l,c,0]=imagebombe[l-(a+1)*37,c-(o+1)*50,0] # imagegrillefan[l,c,1]=imagebombe[l-(a+1)*37,c-(o+1)*50,1] # imagegrillefan[l,c,2]=imagebombe[l-(a+1)*37,c-(o+1)*50,2] # plt.imshow(imagegrillefan) grillefan[a][o]=1 k=k+1 print(grillefan) grillejoueur=np.array(([['X','X','X','X','X','X','X','X','X'],['X','X','X','X','X','X','X','X','X'],['X','X','X','X','X','X','X','X','X'],['X','X','X','X','X','X','X','X','X'],['X','X','X','X','X','X','X','X','X'],['X','X','X','X','X','X','X','X','X'],['X','X','X','X','X','X','X','X','X'],['X','X','X','X','X','X','X','X','X'],['X','X','X','X','X','X','X','X','X']])) #while w<10:#faire la grille sur matlab #plt.plot([w,w],[0,9])#faire la grille sur matlab # plt.plot([0,9],[w,w])#faire la grille sur matlab # w=w+1#faire la grille sur matlab #plt.show()#faire la grille sur matlab # print(grillefan) while suite=='true':#permet de faire une boucle infinie print ('Ok,Quelle est la ligne de la case que vous voulez réveler?')#pour sélectionner une case xu=input() ab=int(xu) print('Ok.Quelle est la colonne de la case que vous voulez réveler?') yu=input() ord=int(yu) if grillefan[ab][ord]==1:#cas ou c'est perdu+affichage de la bombe print('BOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM') # for l in range (ab*37,(ab+1)*37): # Boucle sur le nombre de lignes et de #permet l'affichage graphique # for c in range (ord*50,(ord+1)*50): # colonnes de l’image # imagegrille[l,c,0]=imagebombe[l-(ab+1)*37,c-(ord+1)*50,0]#permet l'affichage graphique # imagegrille[l,c,1]=imagebombe[l-(ab+1)*37,c-(ord+1)*50,1] #permet l'affichage graphique # imagegrille[l,c,2]=imagebombe[l-(ab+1)*37,c-(ord+1)*50,2] # plt.imshow(imagegrille) print(grillefan) print('t es mauvais Jack,tu sais pas jouer,veux-tu recommencer?') rep=input() if rep=='oui': print('Appuie sur ctrl+I puis ctrl+E, tu pourras redéfinir ton niveau') if rep=='non': sys.exit(0)#permet de fermer le programme quand il ne marcheplus # #trouver un moyen pour relancer le programme au début if grillefan[ab][ord]==0 and ab!=0 and ab!=8 and ord!=8 and ord!=0: #il faut faire les cas où on se situe aux extrémités,nombreux mais hyper répétitifs j=j+grillefan[ab-1][ord-1]+grillefan[ab-1][ord]+grillefan[ab-1][ord+1]+grillefan[ab][ord+1]+grillefan[ab][ord-1]+grillefan[ab+1][ord-1]+grillefan[ab+1][ord]+grillefan[ab+1][ord+1] if grillefan[ab][ord]==0 and ab==0 and ord!=0 and ord!=0: j=j+grillefan[ab][ord+1]+grillefan[ab][ord-1]+grillefan[ab+1][ord]+grillefan[ab+1] [ord-1]+grillefan[ab+1][ord+1] if grillefan[ab][ord]==0 and ab!=0 and ord!=8 and ab==8 and ord!=0: j=j+grillefan[ab-1][ord-1]+grillefan[ab-1][ord]+grillefan[ab-1][ord+1]+grillefan[ab][ord+1]+grillefan[ab][ord-1] if grillefan[ab][ord]==0 and ab!=0 and ord==0 and ab!=8 and ord!=8: j=j+grillefan[ab-1][ord]+grillefan[ab-1][ord+1]+grillefan[ab][ord+1]+grillefan[ab+1][ord]+grillefan[ab+1][ord+1] if grillefan[ab][ord]==0 and ab!=0 and ord!=0 and ab!=8 and ord==8: j=j+grillefan[ab-1][ord-1]+grillefan[ab-1][ord]+grillefan[ab][ord-1]+grillefan[ab+1][ord-1]+grillefan[ab+1][ord] if grillefan[ab][ord]==0 and ab==0 and ab!=8 and ord!=8 and ord==0: j=j+grillefan[ab][ord+1]+grillefan[ab+1][ord]+grillefan[ab+1][ord+1] if grillefan[ab][ord]==0 and ab==8 and ab!=0 and ord!=0 and ord==8: j=j+grillefan[ab-1][ord-1]+grillefan[ab-1][ord]+grillefan[ab][ord-1] if grillefan[ab][ord]==0 and ab==0 and ab!=8 and ord!=0 and ord==8: j=j+grillefan[ab][ord-1]+grillefan[ab+1][ord-1]+grillefan[ab+1][ord] if grillefan[ab][ord]==0 and ab!=0 and ab==8 and ord==0 and ord!=8: j=j+grillefan[ab-1][ord]+grillefan[ab-1][ord+1]+grillefan[ab][ord+1] if 'X' not in grillejoueur:#pour terminer le jeu en cas de victoire print("Bravo,c'est gagné, voulez vous recommencer?") choix=input() if choix=='oui': print('Et bah va te faire enculer c est trop galère a programmer') if choix=='non': sys.exit(0) #normalement tout les cas ont été traités on sait donc le nombre de bombes aux alantours du point sans qu'un 'out of range' viennent nous les briser. #pour que le joueur puisse voir le résultat grillejoueur[ab][ord]=j #Phase d'affichage graphique if j==1: for l in range(ab*37,(ab+1)*37): for c in range(ord*50,(ord+1)*50): imagegrille[l,c,0]=image1[l-(ab+1)*37,c-(ord+1)*50,0] imagegrille[l,c,1]=image1[l-(ab+1)*37,c-(ord+1)*50,1] imagegrille[l,c,2]=image1[l-(ab+1)*37,c-(ord+1)*50,2] if j==2:#fonctionne bien sur l'essai for l in range(ab*37,(ab+1)*37): for c in range(ord*50,(ord+1)*50): imagegrille[l,c,0]=image2[l-(ab+1)*37,c-(ord+1)*50,0] imagegrille[l,c,1]=image2[l-(ab+1)*37,c-(ord+1)*50,1] imagegrille[l,c,2]=image2[l-(ab+1)*37,c-(ord+1)*50,2] if j==0:#fonctionne bien sur l'essai for l in range(ab*37,(ab+1)*37): for c in range(ord*50,(ord+1)*50): imagegrille[l,c,0]=image0[l-(ab+1)*37,c-(ord+1)*50,0] imagegrille[l,c,1]=image0[l-(ab+1)*37,c-(ord+1)*50,1] imagegrille[l,c,2]=image0[l-(ab+1)*37,c-(ord+1)*50,2] if j==4:#il faudrait redimensioner l'image de 2 colonnes for l in range(ab*37,(ab+1)*37): for c in range(ord*50,(ord+1)*50): imagegrille[l,c,0]=image4[l-(ab+1)*37,c-(ord+1)*48,0] imagegrille[l,c,1]=image4[l-(ab+1)*37,c-(ord+1)*48,1] imagegrille[l,c,2]=image4[l-(ab+1)*37,c-(ord+1)*48,2] plt.imshow(imagegrille) plt.show() # pose problème et lance un message d'erreur j=j-j #print(grillejoueur) print('voulez vous poser un drapeau')#mettre en place un drapeau drapeau=input()#mettre en place un drapeau if drapeau=='oui':#mettre en place un drapeau print('Quelle ligne')#mettre en place un drapeau lign=input()#mettre en place un drapeau ligne=int(lign)#mettre en place un drapeau print('Quelle colonne')#mettre en place un drapeau colon=input()#mettre en place un drapeau colonne=int(colon)#mettre en place un drapeau grillejoueur[ligne][colonne]='P'#mettre en place un drapeau print(grillejoueur) #affichage graphique du drapeau for l in range (ligne*37,(ligne+1)*37): # Boucle sur le nombre de lignes et de for c in range (colonne*50,(colonne+1)*50): # colonnes de l’image imagegrille[l,c,0]=imagedrap[l-(ligne+1)*37,c-(colonne+1)*50,0] imagegrille[l,c,1]=imagedrap[l-(ligne+1)*37,c-(colonne+1)*50,1] imagegrille[l,c,2]=imagedrap[l-(ligne+1)*37,c-(colonne+1)*50,2] plt.imshow(imagegrille) if drapeau=='non':#mettre en place un drapeau u=u+0#mettre en place un drapeau if 'X' in grillejoueur: suite=suite if 'X' not in grillejoueur: suite=suite+'False' plt.show()