Code: Select all
import random
import tkinter
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
root = Tk()
root.title("Minesweeper")
root.columnconfigure(0, weight=1)
root.rowconfigure(0, weight=1)
mainframe = ttk.Frame(root, padding="12 12 12 12")
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
# def right_click():
# global label_list
# global keep_going
# row = label.widget.grid_info()["row"]
# column = label.widget.grid_info()["column"]
# number = row * columns + column
# label_list[number].configure
def label_in(label):
global label_list
global keep_going
row = label.widget.grid_info()["row"]
column = label.widget.grid_info()["column"]
number = row * columns + column
counter = 0
if str(num_array[number]) == "X" and keep_going:
for i in range(len(label_list)):
if num_array[i] == "X":
label_list[i].configure(text = " X", relief = "sunken")
ttk.Label(mainframe, text= "You lost! Try again").grid(column= 0, row=21, columnspan=20)
keep_going = False
elif str(num_array[number]) != "X" and keep_going:
label.widget.configure(text = " " + str(num_array[number]), relief = "sunken")
label_list[number] = "FIN"
for i in range(len(label_list)):
if label_list[i] != "FIN":
counter +=1
if counter == bomb_amount:
for i in range(len(label_list)):
if num_array[i] == "X":
label_list[i].configure(text = " X", relief = "sunken")
ttk.Label(mainframe, text= "You Won! Play again").grid(column= 0, row=5, columnspan= 20)
keep_going = False
def board_create(num_array):
global label_list
label_list = []
count = 0
column = 0
row = 0
for i in range(len(num_array)):
if column == (columns):
column = 0
row += 1
# label_creation = ttk.Label(mainframe, text = " ", relief = "raised", width= 3)
label_list.append(ttk.Label(mainframe, text = " ", relief = "raised", width= 3))
label_list[i].grid(column = column, row = row)
column += 1
count+=1
label_list[i].bind("<Button-1>", label_in)
# label_list[i].bind("<Button-2>", right_click)
def get_array():
rowxcolumn = rows * columns
number_array = [0]*rowxcolumn
for i in range(bomb_amount):
bomb = random.randint(1,len(number_array) -1)
if number_array[bomb] != "X":
number_array[bomb] = "X"
double_check = 1
count = 0
[print(number_array[rowxcolumn-columns-1])]
print(len(number_array))
for i in range(len(number_array)):
if count == 0 and number_array[count] != "X" and number_array[count] < double_check:
if number_array[count+1] == "X":
number_array[count] += 1
if number_array[count+columns] == "X":
number_array[count] += 1
if number_array[count+columns+1] == "X":
number_array[count] += 1
if count == (columns) and number_array[count] != "X" and number_array[count] < double_check :
if number_array[count-1] == "X":
number_array[count] += 1
if number_array[count+columns] == "X":
number_array[count] += 1
if number_array[count+columns-1] == "X":
number_array[count] += 1
if count == (rowxcolumn-1) and number_array[count] != "X" and number_array[count] < double_check :
if number_array[count-1] == "X":
number_array[count] += 1
if number_array[count-columns] == "X":
number_array[count] += 1
if number_array[count-columns-1] == "X":
number_array[count] += 1
if count == (rowxcolumn-columns)and number_array[count] != "X" and number_array[count] < double_check:
if number_array[count+1] == "X":
number_array[count] += 1
if number_array[count-columns] == "X":
number_array[count] += 1
if number_array[count-columns+1] == "X":
number_array[count] += 1
if count < (columns) and number_array[count] != "X" and not(count == columns-1) and not(count == rowxcolumn-1) and number_array[count] < double_check and (not count == 0):
if number_array[count-1] == "X":
number_array[count] += 1
if number_array[count+1] == "X":
number_array[count] += 1
if number_array[count+columns] == "X":
number_array[count] += 1
if number_array[count+columns+1] == "X":
number_array[count] += 1
if number_array[count+columns-1] == "X":
number_array[count] += 1
if count > (rowxcolumn-columns-1) and number_array[count] != "X" and not(count == rowxcolumn-1) and not(count == rowxcolumn-columns) and number_array[count] < double_check :
if number_array[count-1] == "X":
number_array[count] += 1
if number_array[count+1] == "X":
number_array[count] += 1
if number_array[count-columns] == "X":
number_array[count] += 1
if number_array[count-columns-1] == "X":
number_array[count] += 1
if number_array[count-columns+1] == "X":
number_array[count] += 1
if count % (columns) == (columns -1) and not(count == 0) and not(count == columns-1) and not(count == rowxcolumn-1) and not(count == rowxcolumn-columns) and number_array[count] != "X" and number_array[count] < double_check :
if number_array[count-1] == "X":
number_array[count] += 1
if number_array[count+columns] == "X":
number_array[count] += 1
if number_array[count-columns] == "X":
number_array[count] += 1
if number_array[count-columns-1] == "X":
number_array[count] += 1
if number_array[count+columns-1] == "X":
number_array[count] += 1
if count % (columns) == 0 and not(count == 0) and not(count == columns-1) and not(count == rowxcolumn-1) and not(count == rowxcolumn-columns-1) and number_array[count] != "X" and count < (rowxcolumn-columns-1) and number_array[count]< double_check:
if number_array[count+1] == "X":
number_array[count] += 1
if number_array[count+columns] == "X":
number_array[count] += 1
if number_array[count-columns] == "X":
number_array[count] += 1
if number_array[count-columns+1] == "X":
number_array[count] += 1
if number_array[count+columns+1] == "X":
number_array[count] += 1
if not(count % (columns) == 0) and not(count%columns == (columns-1)) and count > columns and count < (rowxcolumn-columns-1) and number_array[count] != "X" and number_array[count] < double_check:
if number_array[count+1] == "X":
number_array[count] += 1
if number_array[count-1] == "X":
number_array[count] += 1
if number_array[count+columns] == "X":
number_array[count] += 1
if number_array[count-columns] == "X":
number_array[count] += 1
if number_array[count-columns+1] == "X":
number_array[count] += 1
if number_array[count-columns-1] == "X":
number_array[count] += 1
if number_array[count+columns+1] == "X":
number_array[count] += 1
if number_array[count+columns-1] == "X":
number_array[count] += 1
count += 1
double_check += 1
for i in range(len(number_array)):
print(str(number_array[i]), end = " ")
if i % columns == columns - 1:
print("")
count = 0
return number_array
bomb_amount = 30
rows = 20
columns = 20
num_array = get_array()
label_list = []
board_create(num_array)
keep_going = True
root.mainloop()
It work's just like the Minesweeper and we would like any help to get the right click function work to display the flags.