Untitled
unknown
python
19 days ago
4.1 kB
2
Indexable
Never
import tkinter from tkinter import * import random import tkinter.messagebox import sys sys.setrecursionlimit(10**6) window = Tk() window.title("Campo Minato") righe = 3 colonne = 3 bombe = 1 griglia = [] def crea_griglia(righe, colonne): for i in range(righe): griglia.append([]) for j in range(colonne): btn = Button(window, width=4, height=2, bg="gray") btn.grid(row=i, column=j) btn.bind("<Button-1>", scopri_cella_ascoltatore) dict = { "bottone" : btn, "etichetta" : 0, "scoperta" : False } griglia[i].append(dict) def crea_bombe(n_bombe:int, righe:int, colonne:int): global celle_da_scoprire celle_da_scoprire = righe * colonne - n_bombe global griglia posizionate = 0 while n_bombe != posizionate: r = random.randrange(righe) c = random.randrange(colonne) if griglia[r][c]["etichetta"] != -1: griglia[r][c]["etichetta"] = -1 posizionate += 1 def conta_bombe_vicine(griglia): righe = len(griglia) colonne = len(griglia[0]) for i in range(righe): for j in range(colonne): if griglia[i][j]['etichetta'] != -1: ctr = 0 if i > 0 and j > 0 and griglia[i-1][j-1]['etichetta'] == -1: ctr += 1 if i > 0 and griglia[i-1][j]['etichetta'] == -1: ctr += 1 if i > 0 and j < colonne-1 and griglia[i-1][j+1]['etichetta'] == -1: ctr += 1 if j > 0 and griglia[i][j-1]['etichetta'] == -1: ctr += 1 if j < colonne-1 and griglia[i][j+1]['etichetta'] == -1: ctr += 1 if i < righe-1 and j > 0 and griglia[i+1][j-1]['etichetta'] == -1: ctr += 1 if i < righe-1 and griglia[i+1][j]['etichetta'] == -1: ctr += 1 if i < righe-1 and j < colonne-1 and griglia[i+1][j+1]['etichetta'] == -1: ctr += 1 griglia[i][j]['etichetta'] = ctr def scopri_cella(x:int, y: int): global griglia global celle_da_scoprire griglia[x][y]["bottone"].config(text=griglia[x][y]["etichetta"]) griglia[x][y]["scoperta"] = True if griglia[x][y]["etichetta"] == -1: # controllo sconfitta tkinter.messagebox.showerror("Sconfitta","Hai perso davvero, loser! (Cadel deluso😢😢)") else: celle_da_scoprire -= 1 if celle_da_scoprire == 0: tkinter.messagebox.showinfo("Vittoria","Hai vinto! Cadel e' fiero di te😊") if griglia[x][y]["etichetta"] == 0: righe = len(griglia) colonne = len(griglia[0]) # y = colonne # x = righe if x > 0 and y > 0 and griglia[x-1][y-1]["scoperta"] == False: scopri_cella(x-1, y-1) if x > 0 and griglia[x-1][y]["scoperta"] == False: scopri_cella(x-1,y) if x > 0 and y < colonne-1 and griglia[x-1][y+1]["scoperta"] == False: scopri_cella(x-1, y+1) if y > 0 and griglia[x][y-1]["scoperta"] == False: scopri_cella(x,y-1) if y < colonne - 1 and griglia[x][y+1]["scoperta"] == False: scopri_cella(x,y+1) if x < righe-1 and y > 0 and griglia[x+1][y-1]["scoperta"] == False: scopri_cella(x+1,y-1) if x < righe-1 and griglia[x+1][y]["scoperta"] == False: scopri_cella(x+1,y) if x < righe-1 and y < colonne-1 and griglia[x+1][y+1]["scoperta"] == False: scopri_cella(x+1,y+1) def scopri_cella_ascoltatore(event): global griglia x = event.widget.grid_info()['row'] y = event.widget.grid_info()['column'] scopri_cella(x, y) crea_griglia(righe, colonne) crea_bombe(bombe, righe, colonne) conta_bombe_vicine(griglia) window.mainloop()
Leave a Comment