Напишем на Python с графической библиотекой tkinter программу (заготовку) шаблон для логических  игр c прямоугольным полем. В качестве клеток на поле будем использовать кнопки (класс Button).

Перечислим примеры логических игр на поле в клетку:

  1. Шашки, 
  2. Шахматы,
  3. Го, 
  4. Уголки, 
  5. Крестики нолики,
  6. Линии (Lines98), 
  7. Пазлы - головоломки:
    1. Пятнашки, 
    2. Что ест уж, 
    3. Чайный сервиз,
  8. Flip-Flop, 
  9. Memory
  10. Сапёр,
  11. Пег,
  12. Игры с цифрами:
    1. 2048
    2. Судоку
    3. Number Match
  13. Трубопровод...

Для создания компьютерных игр в клетку, где в качестве клеток будут использоваться кнопки напишем программу на языке программирования Python с использованием графической библиотеки tkinter. 

Импорт библиотек

from tkinter import *               # графическая библиотека
from random import shuffle          # перемешать список suffle(A)

Tk()                                # главное окно программы

mainloop()                          # главный цикл программы

Лист. 1. 

Конструктор Tk

Рис. 1.

Фкнкция mainloop

В конце программы с графической библиотекой tkinter

Конструктор Button

from tkinter import *               # графическая библиотека
from random import shuffle          # перемешать список suffle(A)

Button()                            # конструктор кнопки

mainloop()                          # главный цикл программы

Лист. 2. 

Рис. 2.

Метод pack

from tkinter import *               # графическая библиотека
from random import shuffle          # перемешать список suffle(A)

Button().pack()

mainloop()                          # главный цикл программы

Лист. 3.

Рис. 3.

from tkinter import *               # графическая библиотека
from random import shuffle          # перемешать список suffle(A)

Button().pack()
Button().pack()
Button().pack()

mainloop()                          # главный цикл программы

Лист. 4.

 

Рис. 4.

Параметры метода pack

from tkinter import *               # графическая библиотека
from random import shuffle          # перемешать список suffle(A)

Button().pack(expand=YES)
Button().pack(expand=YES)
Button().pack(expand=YES)

mainloop()                          # главный цикл программы

Лист. 5.

 

Рис. 5.

from tkinter import *               # графическая библиотека
from random import shuffle          # перемешать список suffle(A)

Button().pack(expand=YES, fill=BOTH)
Button().pack(expand=YES, fill=BOTH)
Button().pack(expand=YES, fill=BOTH)

mainloop()                          # главный цикл программы

Лист. 6.

Рис. 6.

from tkinter import *               # графическая библиотека
from random import shuffle          # перемешать список suffle(A)

Button().pack(expand=YES, fill=BOTH, side=LEFT)
Button().pack(expand=YES, fill=BOTH, side=LEFT)
Button().pack(expand=YES, fill=BOTH, side=LEFT)

mainloop()                          # главный цикл программы

Лист. 7.

 

Рис. 7.

Фреймы

from tkinter import *               # графическая библиотека
from random import shuffle          # перемешать список suffle(A)

Frame().pack(expand=YES, fill=BOTH) # Фрейм
Button().pack(expand=YES, fill=BOTH, side=LEFT)
Button().pack(expand=YES, fill=BOTH, side=LEFT)
Button().pack(expand=YES, fill=BOTH, side=LEFT)

mainloop()                          # главный цикл программы

Лист. 8.

Рис. 8.

 Именованные объекты

from tkinter import *               # графическая библиотека
from random import shuffle          # перемешать список suffle(A)

f = Frame()                         # Фрейм
f.pack(expand=YES, fill=BOTH)       # Вывод фрейма на экран
Button(f).pack(expand=YES, fill=BOTH, side=LEFT)
Button(f).pack(expand=YES, fill=BOTH, side=LEFT)
Button(f).pack(expand=YES, fill=BOTH, side=LEFT)

mainloop()                          # главный цикл программы

Лист. 9. 

Рис. 9.

Параметры конструктора Button

from tkinter import *               # графическая библиотека
from random import shuffle          # перемешать список suffle(A)

f = Frame()                         # Фрейм
f.pack(expand=YES, fill=BOTH)       # Вывод фрейма на экран
Button(f).pack(expand=YES, fill=BOTH, side=LEFT)
Button(f).pack(expand=YES, fill=BOTH, side=LEFT)
Button(f).pack(expand=YES, fill=BOTH, side=LEFT)

f = Frame()                         # Фрейм
f.pack(expand=YES, fill=BOTH)       # Вывод фрейма на экран
Button(f).pack(expand=YES, fill=BOTH, side=LEFT)
Button(f).pack(expand=YES, fill=BOTH, side=LEFT)
Button(f).pack(expand=YES, fill=BOTH, side=LEFT)

f = Frame()                         # Фрейм
f.pack(expand=YES, fill=BOTH)       # Вывод фрейма на экран
Button(f).pack(expand=YES, fill=BOTH, side=LEFT)
Button(f).pack(expand=YES, fill=BOTH, side=LEFT)
Button(f).pack(expand=YES, fill=BOTH, side=LEFT)

mainloop()                          # главный цикл программы

Лист. 10.

Рис. 10.

Цикл for

from tkinter import *               # графическая библиотека
from random import shuffle          # перемешать список suffle(A)

for i in range(3):
    f = Frame()                         # Фрейм
    f.pack(expand=YES, fill=BOTH)       # Вывод фрейма на экран
    Button(f).pack(expand=YES, fill=BOTH, side=LEFT)
    Button(f).pack(expand=YES, fill=BOTH, side=LEFT)
    Button(f).pack(expand=YES, fill=BOTH, side=LEFT)


mainloop()                          # главный цикл программы

Лист. 11. Устранение избыточности кода с помощью цикла for.

Рис. 11.

Вложенный цикл for

from tkinter import *               # графическая библиотека
from random import shuffle          # перемешать список suffle(A)

for i in range(3):
    f = Frame()                         # Фрейм
    f.pack(expand=YES, fill=BOTH)       # Вывод фрейма на экран
    for j in range(3):
        Button(f).pack(expand=YES, fill=BOTH, side=LEFT)

mainloop()

Лист. 12.

Рис. 12.

Глобальные переменные

from tkinter import *               # графическая библиотека
from random import shuffle          # перемешать список suffle(A)
column = 5                          # столбцы
row = 5                             # строки

for i in range(row):
    f = Frame()                         # Фрейм
    f.pack(expand=YES, fill=BOTH)       # Вывод фрейма на экран
    for j in range(column):
        Button(f).pack(expand=YES, fill=BOTH, side=LEFT)

mainloop()                          # главный цикл программы

Лист. 13.

Рис. 13.

Функция, определённая пользователем

from tkinter import *               # графическая библиотека
from random import shuffle          # перемешать список suffle(A)
column = 5                          # столбцы
row = 5                             # строки

def play():                        # функция обработчик нажатия на кнопку
    print("Нажал на кнопку")

for i in range(row):
    f = Frame()                         # Фрейм
    f.pack(expand=YES, fill=BOTH)       # Вывод фрейма на экран
    for j in range(column):
        Button(f, command = play).pack(expand=YES, fill=BOTH, side=LEFT)

mainloop()                          # главный цикл программы

Лист. 14.

=============== RESTART: /home/dior/Документы/Python/button/14.py ==============
Нажал на кнопку
Нажал на кнопку

Рис. 14.

Список объектов

from tkinter import *               # графическая библиотека
from random import shuffle          # перемешать список suffle(A)
column = 5                          # столбцы
row = 5                             # строки
btn = []

def play():                        # функция обработчик нажатия на кнопку
    print("Нажал на одну из ", len(btn), " кнопок")

for i in range(row):
    f = Frame()                         # Фрейм
    f.pack(expand=YES, fill=BOTH)       # Вывод фрейма на экран
    for j in range(column):
        btn += [Button(f, command = play)]
        btn[-1].pack(expand=YES, fill=BOTH, side=LEFT)

mainloop()                          # главный цикл программы

Лист. 15.

=============== RESTART: /home/dior/Документы/Python/button/15.py ==============
Нажал на одну из  25  кнопок
Нажал на одну из  25  кнопок
Нажал на одну из  25  кнопок

Рис. 15.

Свойство text у графических объектов

from tkinter import *               # графическая библиотека
from random import shuffle          # перемешать список suffle(A)
column = 5                          # столбцы
row = 5                             # строки
btn = []

def play():                         # функция обработчик нажатия на кнопку
    print("Нажал на одну из ", len(btn), " кнопок")

for i in range(row):
    f = Frame()                         # Фрейм
    f.pack(expand=YES, fill=BOTH)       # Вывод фрейма на экран
    for j in range(column):
        n = i * column + j
        btn += [Button(f, command=play, text=n)]
        btn[-1].pack(expand=YES, fill=BOTH, side=LEFT)

mainloop()                          # главный цикл программы

Лист. 16.

Рис. 16.

Метод config для графических объектов 

from tkinter import *               # графическая библиотека
from random import shuffle          # перемешать список suffle(A)
column = 5                          # столбцы
row = 5                             # строки
btn = []

def play():                         # функция обработчик нажатия на кнопку
    print("Нажал на одну из ", len(btn), " кнопок")

for i in range(row):
    f = Frame()                         # Фрейм
    f.pack(expand=YES, fill=BOTH)       # Вывод фрейма на экран
    for j in range(column):
        n = i * column + j
        btn += [Button(f)]
        btn[n].pack(expand=YES, fill=BOTH, side=LEFT)
        btn[n].config(text=n)
        btn[n].config(command=play)

mainloop()                          # главный цикл программы

Лист. 17.

=============== RESTART: /home/dior/Документы/Python/button/17.py ==============
Нажал на одну из  25  кнопок
Нажал на одну из  25  кнопок
Нажал на одну из  25  кнопок

Рис. 17.

from tkinter import *               # графическая библиотека
from random import shuffle          # перемешать список suffle(A)
column = 5                          # столбцы
row = 5                             # строки
btn = []

def play(n):                         # функция обработчик нажатия на кнопку
    print("Нажал на кнопку ", n)

for i in range(row):
    f = Frame()                         # Фрейм
    f.pack(expand=YES, fill=BOTH)       # Вывод фрейма на экран
    for j in range(column):
        n = i * column + j
        btn += [Button(f)]
        btn[n].pack(expand=YES, fill=BOTH, side=LEFT)
        btn[n].config(text=n)
        btn[n].config(command=lambda n=n: play(n))

mainloop()                          # главный цикл программы

Лист. 18.

=============== RESTART: /home/dior/Документы/Python/button/18.py ==============
Нажал на кнопку  0
Нажал на кнопку  24
Нажал на кнопку  12
Нажал на кнопку  20
Нажал на кнопку  4
Нажал на кнопку  7

Рис. 18.

from tkinter import *               # графическая библиотека
from random import shuffle          # перемешать список suffle(A)
column = 3                          # столбцы
row = 3                             # строки
btn = []
playground = list('ЧТОЕСТЖУ ')      # виртуальное игровое поле

def play(n):                        # функция обработчик нажатия на кнопку
    btn[n].config(text=n)

for i in range(row):
    f = Frame()                     # Фрейм
    f.pack(expand=YES, fill=BOTH)   # Вывод фрейма на экран
    for j in range(column):
        n = i * column + j
        btn += [Button(f)]
        btn[n].pack(expand=YES, fill=BOTH, side=LEFT)
        btn[n].config(width=3, height=2)
        btn[n].config(text=playground[n])
        btn[n].config(command=lambda n=n: play(n))

mainloop()                          # главный цикл программы

Лист. 19.

Рис. 19.