Для минимизации размера проще хранить фигуры как последовательность направлений смещения:
- 1-лево
- 2-вверх
- 3-право
- 4-вниз
А поворот фигуры обсчитывать как +1 направлению, при достижении 5, утснавливаем в 1.
Конец описания фигуры – включенный старший бит, т.к. длина описания фигуры может быть разной, для более точного определения “центра вращения” фигуры.
Т.е. например, квадрат – 3 байта:
- 000000100;4
- 000000001;1
- 100000010;2+старший бит
Без счета баллов и всякого оформления я писал тетрис в 100 байт, включая описания фигур.
Да, проверку возможности вращения и достижения поверхности осуществляем прямо при отрисовке, которая имеет 2 режима: отрисовка с проверкой - если в новой позиции место "занято", то отрисовка не возможна. И непосредственно отрисовка, если вращение или перемещение возможно.




Ответить с цитированием