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

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

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

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

from tkinter import *           # импортируем всё из графической библиотеки tkinter
from random import *            # импортируем 
import types

cols = rows = 8                 # столбцы и строки (определяют размер игрового поля)
playground = ['yellow', 'salmon'] * (cols // 2)  # значение определяет цвет клетки
playground += ['salmon',  'yellow'] * (cols // 2)
playground *= rows // 2

def start(event):               # новая игра
    print('Запущена новая игра')

def play(n):                    # функция обработчик нажатия на кнопку
    print('Игрок сделал ход кнопкой №', n)

def show(self):
    self.config(bg = playground[self.n], activebackground = 'light'+playground[self.n])
    self.after(100, self.show)

tk = Tk()                       # создаём главное окно программы
tk.geometry('600x600')          # устанавливаем размер окна
tk.title("Шаблон для игры в шахматы?")           # заголовок окна
tk.bind('<space>', start)       # событие на клавиатуре вызовет функцию

# Создаём n кнопок и размещаем их в rows рядов по cols в каждом ряду
for n in range(cols * rows):    # цикл для перебора всех клеток
    if n % cols == 0:           # если n кратно количеству колонок, то
        f = Frame()             # создаём фрейм (контейнер для нового ряда)
        f.pack(expand=YES, fill=BOTH)   # размещение фрейма в окне программы
    btn = Button(f)             # добавляем в список новую кнопку
    btn.pack(expand=YES, fill=BOTH, side=LEFT)  # отображение кнопки на экране
    btn.config(command=lambda n=n:play(n))  # привязываем команду к кнопке
    btn.n = n
    btn.show = types.MethodType(show, btn)
    btn.show()

mainloop()

Лист.

Рис.