1-й аргумент sysfont.render
должен быть строкой. chr(i)
возвращает строковое представление кода Unicode. Таким образом, type()
, который возвращает тип объекта, является излишним:
message[i][j] = sysfont.render(type(chr(65+7*j+i)), True, (0, 255, 0))
message[i][j] = sysfont.render(chr(65+7*j+i), True, (0, 255, 0))
Еще больше вычислений положения букв генерирует растущий смещенный результат для увеличения индексов, поскольку смещение между буквами должно быть большим:
message_rect[i][j].center = (80 + 140 * i, 180 + 140 * j)
message_rect[i][j].center = (80 + 100 * i, 180 + 100 * j)
Для решения проблемы измените код следующим образом:
def main():
# [...]
for i in range(0, 7):
for j in range(0, 4):
if not ((i == 5 and j == 3) or (i == 6 and j == 3)):
message[i][j] = sysfont.render(chr(65+7*j+i), True, (0, 255, 0))
message_rect[i][j] = message[i][j].get_rect()
message_rect[i][j].center = (80 + 100 * i, 180 + 100 * j)
# [...]