Python Forum
Adding the timer, smiley face, and flags in Minesweeper.
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Adding the timer, smiley face, and flags in Minesweeper.
#1
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()
Reply


Messages In This Thread
Adding the timer, smiley face, and flags in Minesweeper. - by javesike1262 - May-03-2021, 03:00 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Adding timer on the Messagebox aniyanetworks 6 11,735 Feb-13-2019, 07:48 PM
Last Post: aniyanetworks
  Python minesweeper game gtk3 get label value after click lukassz 0 3,281 Mar-25-2017, 08:14 PM
Last Post: lukassz

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020