import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
from random import sample
import random
class AppPython(object):
def __init__(self):
self.n = 8
self.window = Gtk.Window()
self.window.set_title("Saper Python")
self.window.set_default_size(50*self.n, 50*self.n)
self.window.connect("delete-event", Gtk.main_quit)
self.znaki_tab = {9: 'M',
0: '0',
1: '1',
2: '2',
3: '3',
4: '4',
5: '5',
6: '6',
7: '7',
8: '8'}
grid = Gtk.Grid()
self.pole = []
self.plansza = []
self.ruchy_gracza = 0
for i in range(self.n):
self.pole.append([])
for j in range(self.n):
p = Gtk.Button.new_with_label(" ")
self.pole[i].append(p)
grid.attach(p, i, j, 1, 1)
p.connect("clicked", self.odkrywanie_pola, i, j)
for i in range(self.n + 1):
self.plansza.append([])
for j in range(self.n + 1):
self.plansza[i].append(0)
self.rozstawianie_min()
self.window.add(grid)
grid.set_column_homogeneous(1)
grid.set_row_homogeneous(1)
self.window.show_all()
def odkrywanie_pola(self, btn, x, y):
self.pole[x][y].get_child().set_markup(self.znaki_tab[self.plansza[x][y]])
self.pole[x][y].set_sensitive(0)
self.ruchy_gracza += 1
if (self.plansza[x][y] == 9) | (self.ruchy_gracza == ((self.n ** 2) - self.n)):
self.koniec_gry()
def koniec_gry(self):
for i in range(self.n):
for j in range(self.n):
self.pole[i][j].get_child().set_markup(self.znaki_tab[self.plansza[i][j]])
self.pole[i][j].set_sensitive(0)
def rozstawianie_min(self):
wsp = ([])
for i in range(self.n):
for j in range(self.n):
wsp.append([i, j])
wsp_min = sample(wsp, self.n)
for i in wsp_min:
self.plansza[i[0]][i[1]] = 9
for i in range(self.n):
for j in range(self.n):
if self.plansza[i][j] == 9:
for k in range(3):
for l in range(3):
if (self.plansza[i - 1 + k][j - 1 + l] != 9):
self.plansza[i - 1 + k][j - 1 + l] += 1
if __name__ == "__main__":
a = AppPython()
Gtk.main()