bfsvsf

Изучаем

# Библиотеки
# Типы данных: логический, числовой, строковый, список, множество
# Арифметические операции
# Циклы
# Оператор условного выполнения
# Логические операции
# Функции

from tkinter import *           # импортируем всё из графической библиотеки tkinter
from random import shuffle      # импортируем функцию shuffle (перемешивает список)

tk = Tk()                       # создаём главное окно программы
tk.geometry('750x750')          # устанавливаем размер окна
tk.title("Flip-flop")           # заголовок окна

mainloop()

Лист.

from tkinter import *           # импортируем всё из графической библиотеки tkinter
from random import shuffle      # импортируем функцию shuffle (перемешивает список)

cols = rows = 8                 # столбцы и строки (определяют размер игрового поля)
btn = []                        # список для всех кнопок (клеток)

tk = Tk()                       # создаём главное окно программы
tk.geometry('750x750')          # устанавливаем размер окна
tk.title("Flip-flop")           # заголовок окна

# Создаём 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[-1].pack(expand=YES, fill=BOTH, side=LEFT)  # отображение кнопки на экране

mainloop()

Лист.

from tkinter import *           # импортируем всё из графической библиотеки tkinter
from random import shuffle      # импортируем функцию shuffle (перемешивает список)

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

def play(n):                    # функция обработчик нажатия на кнопку
    for i in range(cols * rows):    # цикл для перебора всех клеток
        btn[i].config(bg = playground[i], activebackground = playground[i])
    print(n)

tk = Tk()                       # создаём главное окно программы
tk.geometry('750x750')          # устанавливаем размер окна
tk.title("Flip-flop")           # заголовок окна

# Создаём 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[-1].pack(expand=YES, fill=BOTH, side=LEFT)  # отображение кнопки на экране
    btn[-1].config(command=lambda n=n:play(n))  # привязываем команду к кнопке
play(0)                         # вызываем play, чтобы перерисовать поле

mainloop()

Лист.

from tkinter import *           # импортируем всё из графической библиотеки tkinter
from random import shuffle      # импортируем функцию shuffle (перемешивает список)

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

def play(n=-1):                 # функция обработчик нажатия на кнопку
    global playground
    for i in range(cols * rows):    # цикл для перебора всех клеток
        if n != -1 and i % cols == n % cols:
            playground[i] = 'green' if playground[i] == 'red' else 'red'
        btn[i].config(bg = playground[i], activebackground = playground[i])

tk = Tk()                       # создаём главное окно программы
tk.geometry('750x750')          # устанавливаем размер окна
tk.title("Flip-flop")           # заголовок окна

# Создаём 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[-1].pack(expand=YES, fill=BOTH, side=LEFT)  # отображение кнопки на экране
    btn[-1].config(command=lambda n=n:play(n))  # привязываем команду к кнопке
play()                          # вызываем play без аргумента, чтобы перерисовать поле

mainloop()

Лист.

from tkinter import *           # импортируем всё из графической библиотеки tkinter
from random import shuffle      # импортируем функцию shuffle (перемешивает список)

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

def play(n=-1):                 # функция обработчик нажатия на кнопку
    global playground
    r, c = divmod(n, cols)      # строка и столбец нажатой кнопки
    for i in range(cols * rows):    # цикл для перебора всех клеток
        if n != -1 and i // cols == r or i % cols == c:
            playground[i] = 'green' if playground[i] == 'red' else 'red'
        btn[i].config(bg = playground[i], activebackground = playground[i])

tk = Tk()                       # создаём главное окно программы
tk.geometry('750x750')          # устанавливаем размер окна
tk.title("Flip-flop")           # заголовок окна

# Создаём 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[-1].pack(expand=YES, fill=BOTH, side=LEFT)  # отображение кнопки на экране
    btn[-1].config(command=lambda n=n:play(n))  # привязываем команду к кнопке
play()                          # вызываем play без аргумента, чтобы перерисовать поле

mainloop()

Лист.

from tkinter import *           # импортируем всё из графической библиотеки tkinter
from random import shuffle      # импортируем функцию shuffle (перемешивает список)

cols = rows = 8                 # столбцы и строки (определяют размер игрового поля)
btn = []                        # список для всех кнопок (клеток)

def start(event=None):
    """
    Инициализация новой игры (заполнение случайными значениями и отрисовка)
    """
    global playground           # глобальная переменная - виртуальное игровое поле
    playground = ['green', 'red'] * (cols*rows//2)  # значение определяет цвет клетки
    shuffle(playground)         # перемешиваем цвета
    play()                      # вызываем play без аргумента, чтобы перерисовать поле

def play(n=-1):                 # функция обработчик нажатия на кнопку
    global playground
    r, c = divmod(n, cols)      # строка и столбец нажатой кнопки
    for i in range(cols * rows):    # цикл для перебора всех клеток
        if n != -1 and i // cols == r or i % cols == c:
            playground[i] = 'green' if playground[i] == 'red' else 'red'
        btn[i].config(bg = playground[i], activebackground = playground[i])

tk = Tk()                       # создаём главное окно программы
tk.geometry('750x750')          # устанавливаем размер окна
tk.title("Flip-flop")           # заголовок окна

# Создаём 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[-1].pack(expand=YES, fill=BOTH, side=LEFT)  # отображение кнопки на экране
    btn[-1].config(command=lambda n=n:play(n))  # привязываем команду к кнопке
tk.bind('<space>', start)       # событие на клавиатуре вызовет функцию
start()                         # инициализация новой игры

mainloop()

Лист.

from tkinter import *           # импортируем всё из графической библиотеки tkinter
from random import shuffle      # импортируем функцию shuffle (перемешивает список)

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

def start(event=None):          # Инициализация новой игры
    global playground           # глобальная переменная - виртуальное игровое поле
    playground = ['green', 'red'] * (cols*rows//2)  # значение определяет цвет клетки
    shuffle(playground)         # перемешиваем цвета

def play(n):                 # функция обработчик нажатия на кнопку
    global playground
    r, c = divmod(n, cols)      # строка и столбец нажатой кнопки
    for i in range(cols * rows):    # цикл для перебора всех клеток
        if i // cols == r or i % cols == c:
            playground[i] = 'green' if playground[i] == 'red' else 'red'

def show():
    for i in range(cols * rows):    # цикл для перебора всех клеток
        btn[i].config(bg = playground[i], activebackground = playground[i])
    tk.after(50, show)

tk = Tk()                       # создаём главное окно программы
tk.geometry('750x750')          # устанавливаем размер окна
tk.title("Flip-flop")           # заголовок окна
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[-1].pack(expand=YES, fill=BOTH, side=LEFT)  # отображение кнопки на экране
    btn[-1].config(command=lambda n=n:play(n))  # привязываем команду к кнопке

show()                          # вызываем цикл отображения игрового поля

mainloop()

Лист.

from tkinter import *           # импортируем всё из графической библиотеки tkinter
from random import shuffle      # импортируем функцию shuffle (перемешивает список)
import types

cols = rows = 8                 # столбцы и строки (определяют размер игрового поля)

def start(event=None):          # Инициализация новой игры
    global playground           # глобальная переменная - виртуальное игровое поле
    playground = ['green', 'red'] * (cols*rows//2)  # значение определяет цвет клетки
    shuffle(playground)         # перемешиваем цвета

start()

def play(n):                 # функция обработчик нажатия на кнопку
    global playground
    r, c = divmod(n, cols)      # строка и столбец нажатой кнопки
    for i in range(cols * rows):    # цикл для перебора всех клеток
        if i // cols == r or i % cols == c:
            playground[i] = 'green' if playground[i] == 'red' else 'red'

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

tk = Tk()                       # создаём главное окно программы
tk.geometry('750x750')          # устанавливаем размер окна
tk.title("Flip-flop")           # заголовок окна
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()

Лист.

from tkinter import *           # импортируем всё из графической библиотеки tkinter
from random import shuffle      # импортируем функцию shuffle (перемешивает список)

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


class Btn(Button):              # класс Btn наследник класса Button
    def __init__(self, f, n):   # (контейнер, номер кнопки)
        super().__init__(f)     # создаём кнопку в контейнере
        self.pack(expand=YES, fill=BOTH, side=LEFT)
        self.num = n            # создаём атрибут num с номером кнопки
        self.show()             # запускаем цикл вывода информации на экран

    def show(self):             # цикл с рекурсией и задержкой
        self.config(bg = playground[self.num], activebackground = playground[self.num])
        self.after(100, self.show)


def play(event):                                # функция игры
    r, c = divmod(event.widget.num, cols)       # строка и столбец нажатой кнопки
    for i in range(cols * rows):                # цикл для перебора всех клеток
        if i // cols == r or i % cols == c:
            playground[i] = 'green' if playground[i] == 'red' else 'red'


tk = Tk()                       # создаём главное окно программы
tk.geometry('600x600')          # устанавливаем размер окна
tk.title("Flip-flop")           # заголовок окна

# Создаём n кнопок и размещаем их в rows рядов по cols в каждом ряду
for n in range(cols * rows):    # цикл для перебора всех клеток
    if n % cols == 0:           # если n кратно количеству колонок, то
        f = Frame()             # создаём фрейм (контейнер для нового ряда)
        f.pack(expand=YES, fill=BOTH)   # размещение фрейма в окне программы
    Btn(f, n).bind("<Button-1>", play)

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

Лист.