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