Помогите с массивами

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
sidiakin
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 01.12.2006 (Пт) 16:50

Помогите с массивами

Сообщение sidiakin » 18.09.2009 (Пт) 11:52

Здравствуйте! Никак не могу понять, как делают фигурки в Тетрисе при помощи массивов. Помогите разобраться. Прошу алгоритм не рассказывать и ссылки на исходники не давать. Дайте пож. рабочий фрагмент кода. Есть Форма, есть Фигура rectangle(x1,y1,x2,y2). Как сделать так, чтобы из rectangle на форме состовлялась фигура, которая определяется в 2-х мерном массиве. Заранее спасибо!

Zenitchik
Постоялец
Постоялец
 
Сообщения: 369
Зарегистрирован: 21.12.2006 (Чт) 14:48

Re: Помогите с массивами

Сообщение Zenitchik » 18.09.2009 (Пт) 14:29

Прошу алгоритм не рассказывать и ссылки на исходники не давать. Дайте пож. рабочий фрагмент кода.

Дизреспект.
Гуглить до посинения. Пока сам написать не сможешь.
Знание английского языка - затрудняет понимание кода

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Помогите с массивами

Сообщение Antonariy » 18.09.2009 (Пт) 14:31

Сильно.

Дайте пож. рабочий фрагмент кода.
Фрагмент кода работоспособным не бывает.

Прошу алгоритм не рассказывать и ссылки на исходники не давать.
Чем исходник из интернетов хуже фрагмента кода, полученного здесь, не считая того, что он-то точно работает?
Алгоритм ты придумать не можешь, понять не хочешь, смотреть не намерен, следовательно и фрагмент тебе бесполезен, ты просто не заставишь его работать.

Помогите разобраться.
Не вижу смысла.

Здравствуйте!
До свидания.
Лучший способ понять что-то самому — объяснить это другому.

Александр Дмитриев
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 296
Зарегистрирован: 05.01.2005 (Ср) 3:39
Откуда: Санкт-Петербург    Куда: /dev/null

Re: Помогите с массивами

Сообщение Александр Дмитриев » 18.09.2009 (Пт) 17:39

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
Это примерная схема. Дальше нужно думать самому.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Re: Помогите с массивами

Сообщение Viper » 18.09.2009 (Пт) 21:06

Думаю все уже и так ясно. Тему закрываю.
Весь мир матрица, а мы в нем потоки байтов!


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 83

    TopList