Antonariy писал(а):До свидания.
До свидания.
sidiakin Здесь не гуглить надо или рабочий кусок кода, а подумать мозгами. Из таких вещей и состоит программирование. Для начала, не понятно, как ты собираешься представлять фигурки массовом. И что значит "состовлялась фигура"?
Предлагаю сделать так. Есть массив 15x25 (например). Его элементами являются числа. Если в ячейке (x, y) 0 - значит соответствующая клетка игрового поля пустая. Если 1 - значит там сейчас клеточка от какой-то фигурки. (Можно вместо 1 хранить номер типа фигурки, клеточка от которой находится в этом месте (например, если это часть "палки" - то число 1, если квадратик - число 2 и т.д., если активная (двигающаяся) - 8 )) Также есть четырёхмерный массив, в котором хранится информация о форме фигурок. Для каждого его элемента первая координата задаёт номер фигурки, вторая - номер конфигурации фигурки (0 - как обычно, 1 - повёрнута на 90 градусов против часовой стрелки, 2 - 180 градусов и т.д.), вторая и третья - координаты клетки внутри фигурки. Если элемент этого массива равен 1 (или какому-нибудь другому числу), то соответствующий элемент фигурки закрашен, если 0 - не закрашен. Хранить в программе тип текущей фигурки, координату её левого верхнего угла, а также информацию и том, как она сейчас повёрнута. При обновлении экрана, происходящем через равные периоды времени, а также при сигналах от пользователя, обновлять координаты, поворот фигурки, обновлять массив 15x25 (копировать туда соответствующую фигурку с соответствующим поворотом из четырёхмерного массива) перерисовывать игровое поле на экране (перебирать все элементы массива 15x25, если элемент - 1, рисовать на экране rectangle с координатами, соответствующими координатам элемента массива:
- Код: Выделить всё
For i = 0 To FieldHeight - 1
For j = 0 To FieldWidth - 1
rect1.x1 = LeftMargin + i * (InterCellDistance + CellWidth)
rect1.x2 = LeftMargin + i * (InterCellDistance + CellWidth) + CellWidth
rect1.y1 = UpperMargin + i * (InterCellDistance + CellHeight)
rect1.y2 = UpperMargin + i * (InterCellDistance + CellHeight) + CellHeight
Next i
Next i
Это примерная схема. Дальше нужно думать самому.