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()