Allena_Gorskaya

Programma 4

Mar 20th, 2019
720
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.95 KB | None | 0 0
  1. from tkinter import *
  2. from random import *
  3.  
  4. def on_click(event):
  5.     global gameOver
  6.     global tmp
  7.     global count
  8.     global maxcount
  9.     t = event.widget
  10.     i = int(t.grid_info()['row'])
  11.     j = int(t.grid_info()['column'])
  12.     if gameOver == False:
  13.         if bombfield[i][j] == 1:
  14.             t.config(text = "*", bg = 'red')
  15.             tmp.config(text = 'Вы взорвались!')
  16.             gameOver = True
  17.         else:
  18.             t.config(text = countfield[i][j], bg = 'orange')
  19.             count += 1
  20.             tmp.config(text = 'Безопасных клеток: '+ str(maxcount - count))
  21.             if count == maxcount:
  22.                 tmp.config(text = 'Вы открыли все безопасные клетки, победа!')
  23.  
  24. def on_button_new(event):
  25.     global count
  26.     global maxcount
  27.     global gameOver
  28.     global bombfield
  29.     global countfield
  30.     global tmp
  31.     global squares
  32.     for i in range(n):
  33.         for j in range(n):
  34.             squares[i][j].grid_remove()
  35.    
  36.     count = 0
  37.     maxcount = 0
  38.     gameOver = False
  39.     bombfield = []
  40.     countfield = []
  41.     squares = []
  42.     tmp.grid_remove()
  43.    
  44.     create_bombfield(bombfield, n)
  45.     create_countfield(countfield, n)
  46.     create_field(squares, n)
  47.  
  48. def on_button_ans(event):
  49.     for i in range(n):
  50.         for j in range(n):
  51.             if bombfield[i][j] == 1:
  52.                 squares[i][j].config(text = '*')
  53.             else:
  54.                 squares[i][j].config(text = ' ')
  55.  
  56.  
  57. def create_bombfield(A, n):
  58.     global maxcount
  59.     for i in range(n):
  60.         row = []
  61.         for j in range(n):
  62.             x = randint(0,10)
  63.             if x < 4:
  64.                 row.append(1)
  65.             else:
  66.                 row.append(0)
  67.                 maxcount += 1
  68.         A.append(row)
  69.  
  70. def create_countfield(A, n):
  71.     for i in range(n):
  72.         row = []
  73.         for j in range(n):
  74.             tmp = 0
  75.             if i > 0:
  76.                 tmp += bombfield[i - 1][j]
  77.             if i < n - 1:
  78.                 tmp += bombfield[i + 1][j]
  79.             if j > 0:
  80.                 tmp += bombfield[i][j - 1]                
  81.             if j < n - 1:
  82.                 tmp += bombfield[i][j + 1]
  83.             if i > 0 and j > 0:
  84.                 tmp += bombfield[i - 1][j - 1]
  85.             if i > 0 and j < n - 1:
  86.                 tmp += bombfield[i - 1][j + 1]
  87.             if i < n - 1 and j > 0:
  88.                 tmp += bombfield[i + 1][j - 1]
  89.             if i < n - 1 and j < n - 1:
  90.                 tmp += bombfield[i + 1][j + 1]
  91.             row.append(tmp)
  92.         A.append(row)
  93.  
  94.  
  95. def create_field(squares, n):
  96.     global tmp
  97.     for i in range(n):
  98.         squares_row = []
  99.         for j in range(n):
  100.             if (i + j) % 2 == 0:
  101.                 square = Label(text = '', bg = 'skyblue', width = 2, font = 'Verdana 20')              
  102.             else:
  103.                 square = Label(text = '', bg = 'blue', width = 2, font = 'Verdana 20')
  104.             squares_row.append(square)
  105.             square.bind('<Button-1>', on_click)
  106.             square.grid(row = i, column = j)
  107.         squares.append(squares_row)
  108.            
  109.  
  110.     tmp = Label(text = 'Безопасных клеток: ' + str(maxcount), bg = 'yellow', fg = 'green', font = 'Verdana 18')
  111.     tmp.grid(row = n, columnspan = n, sticky = W + E)
  112.     button_new = Button(text = 'Начать заново')
  113.     button_new.grid(row = n + 1, columnspan = n, sticky = W + E)
  114.     button_new.bind('<Button-1>', on_button_new)
  115.     button_ans = Button(text = 'Показать ответ')
  116.     button_ans.grid(row = n + 2, columnspan = n, sticky = W + E)
  117.     button_ans.bind('<Button-1>', on_button_ans)
  118.    
  119.  
  120. root = Tk()
  121. n = 10
  122. count = 0
  123. maxcount = 0
  124. gameOver = False
  125. bombfield = []
  126. countfield = []
  127. squares = []
  128.  
  129. create_bombfield(bombfield, n)
  130. create_countfield(countfield, n)
  131. create_field(squares, n)
  132.  
  133. for i in range(n):
  134.     print(bombfield[i])
  135.  
  136.    
  137.  
  138.  
  139. root.mainloop()
Add Comment
Please, Sign In to add comment