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

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

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

h,k

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

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

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

Лист. 1. 

Рис. 1.

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

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

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

Лист. 2. 

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

Button().pack()

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

Лист. 3.

Рис. 2.

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

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

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

Лист. 4.

 

Рис. 3.

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

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

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

Лист. 5.

 

Рис. 4.

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.

Рис. 5.

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.

 

Рис. 6.

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.

Рис. 7.

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

Frame(bd=2, relief="sunken").pack(expand=YES, fill=BOTH)
Frame(bd=2, relief="sunken").pack(expand=YES, fill=BOTH)
Frame(bd=2, relief="sunken").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()                          # главный цикл программы

Лист. 9.

Рис. 8.

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

f = Frame(bd=2, relief="sunken")
f.pack(expand=YES, fill=BOTH)
f = Frame(bd=2, relief="sunken")
f.pack(expand=YES, fill=BOTH)
f = Frame(bd=2, relief="sunken")
f.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()                          # главный цикл программы

Лист. 10.

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

f = Frame(bd=2, relief="sunken")
f.pack(expand=YES, fill=BOTH)
f = Frame(bd=2, relief="sunken")
f.pack(expand=YES, fill=BOTH)
f = Frame(bd=2, relief="sunken")
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.

Рис. 9.

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()                          # главный цикл программы

Лист. 12.

Рис. 10.

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()                          # главный цикл программы

Лист. 13.

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()

Лист. 14.

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()

Лист. 15.

Рис. 11.

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, font =("mono", 16, "bold"), width = 5, height=3).pack(expand=YES, fill=BOTH, side=LEFT)

mainloop()

Лист. 16.

Рис. 12.

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

column = 5                          # столбцы
row = 5                             # строки
btn = []                            # список кнопок

for i in range(row):
    f = Frame()
    f.pack(expand=YES, fill=BOTH)
    for j in range(column):
        btn += [Button(f, font =("mono", 16, "bold"), width = 5, height=3)]
        btn[-1].pack(expand=YES, fill=BOTH, side=LEFT)

mainloop()

Лист. 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):
        btn += [Button(f, font =("mono", 16, "bold"), width = 5, height=3)]
        btn[-1].pack(expand=YES, fill=BOTH, side=LEFT)
        btn[-1].config(text = " ", command=lambda n=i*column+j:play(n))

mainloop()

Лист. 18.

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

column = 5                          # столбцы
row = 5                             # строки
btn = []                            # список кнопок

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):
        btn += [Button(f, font =("mono", 16, "bold"), width = 5, height=3)]
        btn[-1].pack(expand=YES, fill=BOTH, side=LEFT)
        btn[-1].config(text = " ", command=lambda n=i*column+j:play(n))

mainloop()

Лист. 19.

Рис. 13.

Рис. 2. Изображения шариков в png формате.

Игровое поле с картинками.

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

column = 5                          # столбцы
row = 5                             # строки
btn = []                            # список кнопок

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

tk = Tk()
img = PhotoImage(file="scarlet.png")

for i in range(row):
    f = Frame()
    f.pack(expand=YES, fill=BOTH)
    for j in range(column):
        btn += [Button(f, font =("mono", 16, "bold"), width = 5, height=3)]
        btn[-1].pack(expand=YES, fill=BOTH, side=LEFT)
        btn[-1].config(text = " ", command=lambda n=i*column+j:play(n))

mainloop()

Лист. 20.

Рис. 14.

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

column = 5                          # столбцы
row = 5                             # строки
btn = []                            # список кнопок

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

tk = Tk()
img = PhotoImage(file="scarlet.png")

for i in range(row):
    f = Frame()
    f.pack(expand=YES, fill=BOTH)
    for j in range(column):
        btn += [Button(f)]
        btn[-1].pack(expand=YES, fill=BOTH, side=LEFT)
        btn[-1].config(command=lambda n=i*column+j:play(n))

mainloop()

Лист. 21.

Рис. 15.

Рис. Прозрачное изображение размером 50х50 px.

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

column = 5                          # столбцы
row = 5                             # строки
btn = []                            # список кнопок

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

tk = Tk()
imgBL = PhotoImage(file="blank.png")
img = PhotoImage(file="scarlet.png")

for i in range(row):
    f = Frame()
    f.pack(expand=YES, fill=BOTH)
    for j in range(column):
        btn += [Button(f, image=imgBL)]
        btn[-1].pack(expand=YES, fill=BOTH, side=LEFT)
        btn[-1].config(command=lambda n=i*column+j:play(n))

mainloop()

Лист. 22.

Рис. 16.

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

column = 5                          # столбцы
row = 5                             # строки
btn = []                            # список кнопок
img = []
files = ['red.png', 'yellow.png', 'gold.png',
         'green.png', 'emerald.png', 'cyan.png',
         'blue.png', 'pink.png','azure.png',
         'bronze.png', 'purple.png', 'scarlet.png',
         'steel.png', 'silver.png']

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

tk = Tk()
imgBL = PhotoImage(file="blank.png")
for i in files:
    img += [PhotoImage(file=i)]

for i in range(row):
    f = Frame()
    f.pack(expand=YES, fill=BOTH)
    for j in range(column):
        btn += [Button(f, image=imgBL)]
        btn[-1].pack(expand=YES, fill=BOTH, side=LEFT)
        btn[-1].config(command=lambda n=i*column+j:play(n))

mainloop()

Лист. 23.

Рис. 17.