def decode(message): # дешифратор m = [] # в данном цикле формируем числовое представление сообщения для дальнейшей дешифровки for mess in message: # перебираем объекты из сообщения m.append(mess.row) # добавляем в список m номер строки объекта из сообщения m.append(mess.col) # добавляем в список m номер столбца объекта из сообщения # делим список пополам mc = m[0:(len(m)//2)] # первая часть списка это номера строк зашифрованного сообщения mc2 = m[(len(m)//2):(len(m))] # вторая часть списка это номера столбцов зашифрованного сообщения simbx = 150 # переменная задающая х-координату формируемым объектам, дабы они отображались друг за дружкой, а не друг на друге for i in range(len(mc)): # так как длины mc и mc2 одинаковы, то в цикле проходим от 0 до длины mc for simb in Alfavit: # перебираем символы из алфавита if simb.col == mc2[i]: # если номер столбца символа равен i-му числу из списка номеров столбцов if simb.row == mc[i]: # если номер строки символа равен i-му числу из списка номеров строк pl = Button(simbx, 290, PL_W, PL_H, simb.text) # то создаем новую кнопку с текстом символа из алфавита pl.row = simb.row # задаем свойство row новому сиволу и присваиваем ему номер строки символа из алфавита pl.col = simb.col # задаем свойство col новому сиволу и присваиваем ему номер столбца символа из алфавита pl.font = simb.font decode_message.add(pl) # добавляем новую кнопку в группу дешифрованного сообщения simbx += PL_W # прибавляем к simbx значение ширины кнопки алфавита, чтобы сдвинуть следующую кнопку в право
def encode(): # процедура шифрования mc = [] # список для номеров строк mc2 = [] # спискок для номеров столбцов for mess in message_list: # перебираем символы из сообщения mc.append(mess.row) # добавляем в список для номеров строк номер строки символа mc2.append(mess.col) # добавляем в список для номеров столбцов номер столбца символ mc += mc2 # склеиваем списки - сначала номера строк, потом номера столбцов rez_message = [] # список для результирующего сообщения simbx = 150 # начальная позиция по Х для вывода сообщения for i in range(1, len(mc), 2): # в данном цикле перебираем попарно символы из mc начиная с первого. for simb in Alfavit: # перебираем символы алфавита if simb.col == mc[i]: # если номер столбца совпадает со вторым числом из пары (перебираем попарно списком mc) if simb.row == mc[i-1]: # если номер строки совпадает с первым числом из пары pl = Button(simbx, 260, PL_W, PL_H, simb.text) # то создаем кнопку с текстом нажатой кнопки из алфавита pl.col = simb.col # новой кнопке назначаем свойства col и row и передаем pl.row = simb.row # соответствующие значения от нажатой кнопки из алфавита pl.font = simb.font encode_message_group.add(pl) # добавляем новую кнопку в группу зашифрованного сообщения rez_message.append(pl) # так же помещаем кнопку в список зашифрованного сообщения simbx += PL_W # прибавляем к simbx значение ширины кнопки алфавита, чтобы сдвинуть следующую кнопку в право return rez_message # передаем результат в виде списка
def encode(): # процедура шифрования mc = [] # список для номеров строк mc2 = [] # спискок для номеров столбцов for mess in message_list: # перебираем символы из сообщения mc.append( mess.row ) # добавляем в список для номеров строк номер строки символа mc2.append( mess.col ) # добавляем в список для номеров столбцов номер столбца символ mc += mc2 # склеиваем списки - сначала номера строк, потом номера столбцов rez_message = [] # список для результирующего сообщения simbx = 150 # начальная позиция по Х для вывода сообщения for i in range( 1, len(mc), 2 ): # в данном цикле перебираем попарно символы из mc начиная с первого. for simb in Alfavit: # перебираем символы алфавита if simb.col == mc[ i]: # если номер столбца совпадает со вторым числом из пары (перебираем попарно списком mc) if simb.row == mc[ i - 1]: # если номер строки совпадает с первым числом из пары pl = Button( simbx, 260, PL_W, PL_H, simb.text ) # то создаем кнопку с текстом нажатой кнопки из алфавита pl.col = simb.col # новой кнопке назначаем свойства col и row и передаем pl.row = simb.row # соответствующие значения от нажатой кнопки из алфавита pl.font = simb.font encode_message_group.add( pl ) # добавляем новую кнопку в группу зашифрованного сообщения rez_message.append( pl ) # так же помещаем кнопку в список зашифрованного сообщения simbx += PL_W # прибавляем к simbx значение ширины кнопки алфавита, чтобы сдвинуть следующую кнопку в право return rez_message # передаем результат в виде списка
def decode(message): # дешифратор m = [] # в данном цикле формируем числовое представление сообщения для дальнейшей дешифровки for mess in message: # перебираем объекты из сообщения m.append( mess.row) # добавляем в список m номер строки объекта из сообщения m.append(mess.col ) # добавляем в список m номер столбца объекта из сообщения # делим список пополам mc = m[0:( len(m) // 2)] # первая часть списка это номера строк зашифрованного сообщения mc2 = m[(len(m) // 2):( len(m) )] # вторая часть списка это номера столбцов зашифрованного сообщения simbx = 150 # переменная задающая х-координату формируемым объектам, дабы они отображались друг за дружкой, а не друг на друге for i in range( len(mc) ): # так как длины mc и mc2 одинаковы, то в цикле проходим от 0 до длины mc for simb in Alfavit: # перебираем символы из алфавита if simb.col == mc2[ i]: # если номер столбца символа равен i-му числу из списка номеров столбцов if simb.row == mc[ i]: # если номер строки символа равен i-му числу из списка номеров строк pl = Button( simbx, 290, PL_W, PL_H, simb.text ) # то создаем новую кнопку с текстом символа из алфавита pl.row = simb.row # задаем свойство row новому сиволу и присваиваем ему номер строки символа из алфавита pl.col = simb.col # задаем свойство col новому сиволу и присваиваем ему номер столбца символа из алфавита pl.font = simb.font decode_message.add( pl ) # добавляем новую кнопку в группу дешифрованного сообщения simbx += PL_W # прибавляем к simbx значение ширины кнопки алфавита, чтобы сдвинуть следующую кнопку в право
Color("#bf3030"), alt_text='Показать текст') button_group.add(pl) x, y = 35, 30 col, row = 1, 1 # в цикле ниже создаем алфавитную таблицу for i in ALFAVIT: # перебираем символы алфавита pl = Button(x=x, y=y, width=PL_W, height=PL_H, text=i, color=(Color('#300571'))) # создаем новую кнопку pl.col = col # задаем кнопке новое свойство col - это номер столбца в котором будет расположена кнопка pl.row = row # задаем кнопке новое свойство row - это номер строки в которой будет расположена кнопка pl.font = font.Font( 'fonts/DS Crystal Regular.ttf', 21) # задаем шрифт которым будет отображаться надпись на кнопке Alfavit.add(pl) # добавляем новую кнопку в группу Alfavit x += PL_W # увеличиваем координату X на ширину кнопки, чтобы следующая кнопка отобразилась правее предыдущей col += 1 # увеличиваем номер столбца, так как следующая кнопка будет расположена в следующем столбце if x > 35 + PL_W * 5: # если х координата больше расчетного значения для 6 столбца x = 35 # то отодгаем икс координату в начальное положение y += PL_H # увеличиваем Y-координату, чтобы следующие объекты отображались на новой строке ниже row += 1 # увеличиваем значение строки col = 1 # значение столбца сбрасываем на начало отсчета def encode(): # процедура шифрования mc = [] # список для номеров строк
pl = Button(x=300, y=30, width=175, height=35, text='Зашифровать', text_size=32, color=Color("#bf3030")) button_group.add(pl) pl = Button(300, 70, 175, 35, 'Дешифровать', 32, Color("#bf3030")) button_group.add(pl) pl = Button(300, 110, 175, 35, 'Стереть', 32, Color("#bf3030")) button_group.add(pl) pl = Button(300, 150, 175, 35, 'Показать коды', 32, Color("#bf3030"), alt_text='Показать текст') button_group.add(pl) x, y = 35, 30 col, row = 1, 1 # в цикле ниже создаем алфавитную таблицу for i in ALFAVIT: # перебираем символы алфавита pl = Button(x=x, y=y, width=PL_W, height=PL_H, text=i, color=(Color('#300571'))) # создаем новую кнопку pl.col = col # задаем кнопке новое свойство col - это номер столбца в котором будет расположена кнопка pl.row = row # задаем кнопке новое свойство row - это номер строки в которой будет расположена кнопка pl.font = font.Font('fonts/DS Crystal Regular.ttf', 21) # задаем шрифт которым будет отображаться надпись на кнопке Alfavit.add(pl) # добавляем новую кнопку в группу Alfavit x += PL_W # увеличиваем координату X на ширину кнопки, чтобы следующая кнопка отобразилась правее предыдущей col += 1 # увеличиваем номер столбца, так как следующая кнопка будет расположена в следующем столбце if x > 35+PL_W*5: # если х координата больше расчетного значения для 6 столбца x = 35 # то отодгаем икс координату в начальное положение y += PL_H # увеличиваем Y-координату, чтобы следующие объекты отображались на новой строке ниже row += 1 # увеличиваем значение строки col = 1 # значение столбца сбрасываем на начало отсчета def encode(): # процедура шифрования mc = [] # список для номеров строк mc2 = [] # спискок для номеров столбцов for mess in message_list: # перебираем символы из сообщения mc.append(mess.row) # добавляем в список для номеров строк номер строки символа