Minesweeper Python Tkinter.

All other Source.Python topics and issues.
javesike1262
Junior Member
Posts: 1
Joined: Wed May 05, 2021 10:27 pm

Minesweeper Python Tkinter.

Postby javesike1262 » Wed May 05, 2021 10:34 pm

Hey guys, A friend of mine and I have started working a Python Tkinter Minesweeper Game to give us an insight on how Minesweeper is coded. We have coded a minesweeper and we have the code here.

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.

Return to “General Discussion”

Who is online

Users browsing this forum: No registered users and 21 guests