| variable = любое значимое имя переменной |
|
Если Вы знакомы с программированием в С, TYPE – это STRUCT в Blitz Basic. Если не знакомы – читайте! TYPE – Ваш лучший друг (начинается сказка про серенького бычка). Он используется для создания коллекций объектов, которые объединены одинаковыми параметрами и должны взаимодействовать быстро и просто. Подумайте о «SPACE INVADERS» - (ну, было дело). Большое количество чужих на экране одновременно. Каждый из этих чужих имеет несколько переменных, которые ему необходимы : x и y-координаты плюс переменная для контроля за графикой на дисплее (ножки вместе – ножки врозь). Теперь мы можем создать сотни переменных, вроде invader1x, invader1y, invader2x, invader2y, и т.д. для контроля над всеми чужими, но это не будет иметь рационального зерна, не так ли? Вы можете использовать массив для контроля над ними: invader(number,x,y,graphic), и цикл FOR ... NEXT, но это тоже – много мороки! Коллекция TYPE была создана для операций как раз при таких нуждах. TYPE определяет коллекцию объектов. Каждый объект в этой коллекции наследует свою собственную копию переменных, определенную командой типа FIELD. Каждая переменная каждого объекта в коллекции может быть считана индивидуально и может легко и быстро взаимодействовать с другими. Используйте команду FIELD для присваивания необходимых переменных между командами TYPE и END TYPE. Если это поможет, думайте о TYPE-коллекции, как о базе данных. Каждый объект – запись в базе данных, и каждая переменная – это область записи. Используя команды BEFORE, AFTER, и FOR ... EACH, Вы можете изменить указатель 'базы данных' на указатель другой записи и извлекать/устанавливать значения переменных 'field'. Вы не гуру баз данных? Нуждаетесь в еще одном примере? Хорошо. Скажем, Вы готовите аудиторию для речи или какого-либо события и помещаете сотни стульев для зрителей. Стулья занимают определенное место на полу, и некоторые необходимо будет поднять чуть выше остальных (посещение высокопоставленных, мэр, мать его и т.д.). Итак, являясь компьютерным гением, Вы начинаете прикидывать, как можно расставить стулья в нужную позицию с наименьшими затратами сил. Вы понимаете, что пол разделен на шахматные сегменты, так что это настоящая сетка с ячейками! Это многое упрощает! Вам просто нужно пронумеровать пол на куске записной бумаги и указать в решетке, как высоко каждый стул должен быть, исходя из того, где, как босс говорил Вам, сядут важные шишки. Итак, для каждого стула у Вас будет колонка и столбец на бумаге (x и y позиция) и уровень (для установки стула по высоте). Хорошо, мы организованы. Теперь, даже хотя мы и имеем это все на бумаге, мы все еще должны выполнить работу по расположению всех стульев. После того, как Вы сделали это, скажем, Ваш босс пришел к Вам и сказал "они не правильно расположены.. сдвинь их на один квадрат". Ах, говно (я не шучу, так написано в оригинале)! Вы расставили их безупречно, и теперь нужно их сдвинуть на квадрат вправо! К счастью, сделать это не так уж и сложно, благо, их порядок и высота не изменятся – но Вы все еще должны двигать каждый стул! Вот было бы круто – протянуть руку с растопыренными пальцами и сказать "Каждому стулу в этой комнате, добавить 1 квадрат по его x позиции" и магическим путем осуществить сие действо. Увы, в реальном мире есть чем заняться – у Вас полно стульев, которые нужно таскать! В Blitz-е Вы сможете установить тип (TYPE), названный СТУЛ (CHAIR), установить области (FIELDS) типа как X, Y, и высота (HEIGHT). Вы сможете тогда создать так много стульев, как Вам нужно- при помощи команды НОВЫЙ (NEW),(каждый раз при вызове команды NEW будет создан новый стул, с его СОБСТВЕННЫМИ переменными X, Y, и HEIGHT) и назначьте им значения X, Y, и HEIGHT, какие покажутся Вам разумными. В нашем примере, когда босс сказал Вам передвинуть стулья на 1 квадрат, Вы вероятно издали внутренний стон. Прорва работы! В Blitz-е мы можем использовать четыре строки кода для установки всех наших стульев (объектов типа CHAIR) в новую позицию (используя команды FOR ... EACH). Все еще не поняли? Ничего страшного - TYPE тяжело ухватить с одного наскока. Взгляните на пример и мы попробуем показать Вам, как типы работают на практике. Я рекомендую взглянуть также на код, написанный другими людьми- это поможет Вам ухватить суть. Когда Вы всё поймете, то будете знать, почему программисты на C любят использовать STRUCT и почему почти все программы на Blitz тоже используют их. Хитрый трюк для отладочных целей, или для сохранения данных из типа в файл - использование команды Str$. Print Str$() отобразит значения каждого поля указанного типа, отделенного запятыми, заключенного в квадратные скобки, и т.д. [15,42,"Fluffy",500]. Смотрите также: Field, End Type, New, Before, After, First, Last, Each, Insert, Delete. |
|
; Определение CHAIR Type Type CHAIR Field X Field Y Field HEIGHT End Type ; Создает 100 новых стульев, используя FOR ... NEXT и назвав коллекцию именем ROOM For tempx = 1 to 10 For tempy = 1 to 10 room.chair = New Chair room\x = tempx room\y = tempy room\height = Rnd(0,10) ; Выставить случайную высоту от 0 до 10 Next Next ; Сместить их все на 1 (как в описанном примере) For room.chair = Each chair room\x = room\x + 1 Next |