May-03-2021, 03:00 PM
(This post was last modified: May-03-2021, 03:21 PM by javesike1262.)
Hi everyone, A friend of mine and I have been working on a Minesweeper game created in Python in Tkinter. We have almost completed programming the game and all we just need is to create the timer, smiley face and the flags and this is where we have been stuck on.
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():
print("D")
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()
