Manusman

python Minesweeper

Sep 18th, 2019
587
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.38 KB | None | 0 0
  1. import tkinter as tk
  2. import random
  3.  
  4.  
  5. def init_grid():
  6.     the_grid = []
  7.     for i in range(15):
  8.         for ii in range(15):
  9.             the_grid.append(create_button(ii / 40 + 0.3, i / 20 + 0.1))
  10.     return the_grid
  11.  
  12.  
  13. def init_mines(grid):
  14.     mines = []
  15.     for i in range(25):
  16.         mine = random.choice(grid)
  17.         mines.append(mine)
  18.         mine_config(mine)
  19.     return mines
  20.  
  21.  
  22. def init_spaces(grid, mine_lst):
  23.     up_side = list(range(15))
  24.     down_side = list(range(210, 225))
  25.     left_side = list(range(0, 211, 15))
  26.     right_side = list(range(14, 225, 15))
  27.     for space in grid:
  28.         if space in mine_lst:
  29.             continue
  30.         else:
  31.             ind = grid.index(space)
  32.             num_adj_mine = 0
  33.             if ind == 0:
  34.                 for near_space in [grid[ind + 1], grid[ind + 15], grid[ind + 16]]:
  35.                     if near_space in mine_lst:
  36.                         num_adj_mine += 1
  37.             elif ind == 14:
  38.                 for near_space in [grid[ind - 1], grid[ind + 15], grid[ind + 14]]:
  39.                     if near_space in mine_lst:
  40.                         num_adj_mine += 1
  41.             elif ind == 210:
  42.                 for near_space in [grid[ind + 1], grid[ind - 15], grid[ind - 14]]:
  43.                     if near_space in mine_lst:
  44.                         num_adj_mine += 1
  45.             elif ind == 224:
  46.                 for near_space in [grid[ind - 1], grid[ind - 15], grid[ind - 16]]:
  47.                     if near_space in mine_lst:
  48.                         num_adj_mine += 1
  49.             elif ind in up_side:
  50.                 for near_space in [grid[ind - 1], grid[ind + 1], grid[ind + 15], grid[ind + 14], grid[ind + 16]]:
  51.                     if near_space in mine_lst:
  52.                         num_adj_mine += 1
  53.             elif ind in down_side:
  54.                 for near_space in [grid[ind - 1], grid[ind + 1], grid[ind - 15], grid[ind - 14], grid[ind - 16]]:
  55.                     if near_space in mine_lst:
  56.                         num_adj_mine += 1
  57.             elif ind in left_side:
  58.                 for near_space in [grid[ind + 15], grid[ind + 1], grid[ind - 15], grid[ind - 14], grid[ind + 16]]:
  59.                     if near_space in mine_lst:
  60.                         num_adj_mine += 1
  61.             elif ind in right_side:
  62.                 for near_space in [grid[ind + 15], grid[ind - 1], grid[ind - 15], grid[ind + 14], grid[ind - 16]]:
  63.                     if near_space in mine_lst:
  64.                         num_adj_mine += 1
  65.             else:
  66.                 for near_space in [grid[ind + 1], grid[ind - 1], grid[ind + 15], grid[ind + 16], grid[ind + 14], grid[ind - 16],
  67.                                    grid[ind - 15], grid[ind - 14]]:
  68.                     if near_space in mine_lst:
  69.                         num_adj_mine += 1
  70.             if num_adj_mine == 0:
  71.                 pass
  72.             else:
  73.                 space['text'] = str(num_adj_mine)
  74.  
  75.  
  76. def init_game():
  77.     grid_lst = init_grid()
  78.     mines_lst = init_mines(grid_lst)
  79.     init_spaces(grid_lst, mines_lst)
  80.  
  81.  
  82. def mine_config(a_mine):
  83.     a_mine['command'] = lambda: mine_c(a_mine)
  84.  
  85.  
  86. def mine_c(but):
  87.     but.configure(text='M', bg='red')
  88.  
  89.  
  90. def create_button(relx, rely):
  91.     butt = tk.Button(game, height=2, width=4)
  92.     butt.place(relx=relx, rely=rely)
  93.     return butt
  94.  
  95.  
  96. game = tk.Tk()
  97. game.geometry('1920x1080')
  98. init_game()
  99. game.mainloop()
Advertisement
Add Comment
Please, Sign In to add comment