Напишем на Python с графической библиотекой tkinter программу (заготовку) шаблон для логических игр c прямоугольным полем. В качестве клеток на поле будем использовать кнопки (класс Button).
Перечислим примеры логических игр на поле в клетку:
- Шашки,
- Шахматы,
- Го,
- Уголки,
- Крестики нолики,
- Линии (Lines98),
- Пазлы - головоломки:
- Пятнашки,
- Что ест уж,
- Чайный сервиз,
- Flip-Flop,
- Memory,
- Сапёр,
- Пег,
- Filler
- Игры с цифрами:
- 2048
- Судоку
- Number Match
- Трубопровод...
- "Conway's Game of Life"
- Японские кроссворды 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()
Лист.

Рис.