Представим себе школьника, или его
учителя, или почтенного физика, задумавшего воплотить некую
Идею на компьютере. Может ли он сделать это с помощью
имеющихся средств? Ответ отрицательный - существующие языки
программирования чрезвычайно сложны, их графический интерфейс
примитивен, а семантическая идеология ориентирована на сугубо
компьютерные "штучки". Нашему же творческому энтузиасту хочется
построить реалистичную модель взаимодействия, и не просто
математическую модель, а модель, отображаемую графическими
образами и понятными всем эффектами.
Иными словами, что бы деревья росли, животные охотились,
корабли и дирижабли плавали, а огонь поджигал. Как это сделать
всего за один вечер?! Теперь можно!
Но, если честно, не абсолютно все. В следующих версиях "Крыла" возможностей
будет гораздо больше. А пока рассмотрим вкратце то, что уже
доступно.
Мир "Крыла" - это некое пространство
(объект), вмещающий, если нужно, рельеф местности, список
законов и набор объектов. Не все объекты Мира "материальны".
Например, возможны обычные Классы, описанные в главной секции
программы (меню: World \ Main program). Есть также классы
типа "Сила", которые не видны в режиме исполнения, хотя
их значок и виден в режиме редактирования. Они (эти классы) предназначены
для всяких "Черных дыр" или спецэффектов. Даже видимые классы
могут быть "не совсем материальны" - если их настроить,
например, с помощью значка "Привидение" на панели редактора
классов. Остальные классы - это классы, ассоциируемые с теми
или иными группами "Законов Природы". Вы можете назначать
классу некоторый список стандартных законов (например, реакцию
на удар или Ньютоновскую механику). Если нужно, можно описать
свои законы (в главном модуле программы) и, затем, использовать
их в Ваших собственных классах. Когда класс продуман и все его свойства
заданы, одним нажатием кнопки в
редакторе можно тиражировать объекты, устанавливать их в
нужное место, масштабировать, ориентировать. Чтобы не возникали различные
проблемы, следует внимательно изучить идеологию "Крыла".
Например, не следует работать с "Крылом", как с
графическим редактором. Прочувствуйте идею "Крылатого" интерфейса и он Вам обязательно
понравится. Когда объекты расставлены, можно нажимать кнопку
"Старт". Наличие глобальной запускающей
программы - не обязательно! Это Вам не Visual Basic (VB), где все
делается только по программе. Здесь другой подход.
Все очень просто? И да, и нет.
Создать что-либо заранее хорошо продуманное - достаточно просто.
Сложно - в смысле осознания Вашей цели. "Крыло" не может
думать вместо Вас. В каком-то смыле, задачи "мышления" будут решаться
следующей версией, в которую
будет введен глобальный искусственный интеллект (ИИ или AI). А пока что, "Крыло" просто
облегчает Вам труд, избавляя от рутины написания строк
программы. Запомните правило: если Ваш код слишком сложен -
то это значит, что Вы плохо видите цель или не понимаете суть технологии.
Обычно достаточно пары строчек для достижения весьма сложных
результатов. Но в чем же тогда суть? Суть во взаимодействиях
и событиях. Каждый объект должен быть
самостоятельной вещью (сущностью). Если объект
нуждается во внешних программах или требует слишком много
контекстных настроек - значит, Вы его плохо продумали. Общее
правило: создавайте классы так, что бы они
правильно работали в любых контекстах! Конечно, если Вы
виртуоз, то можете допускать исключения в отдельных случаях и
отдельных программах. Но, в общем, следует придерживаться
этого правила. Например, мина или бомба должны взрываться от
удара, огня, наезда и т.д. При этом, если у них есть
предохранитель, то он должен правильно работать в любом
контексте. Сделать это удивительно просто! Достаточно только
установить нужные группы свойств и иногда еще добавить пару
строчек кода в событийные процедуры. Затем класс следует
протестировать и сохранить в Вашем каталоге классов. И желательно
больше никогда не менять. А если Вам потребуется другой
вариант - просто создайте новый Класс. Мы видим, что "Крыло"
переносит акцент на продумывание. Это
новая игра для Ума. Избавьте себя от "графомании". Совсем не нужно писать сотни строк.
Займитесь творчеством!
Свойства и методы тела Вещественного объекта доступны из
его событий и процедур только следующим образом: Obj.Name
Свойства и методы, добавленные в Класс, доступны без префикса.
Свойства и методы, добавленные в класс, доступны извне только таким
путем: Variable.PropObject.Name где переменная = ссылке
на экземпляр.
Свойства и методы вещественного тела Вещественного
объекта доступны извне только следующим образом:
Variable.Name
Свойства Класса (не экземпляра!) его методы (порождающие или
информативные) доступны так: Obj.CalssObject.Name
Если объект требуется вне его самого, то его можно найти
только по имени, а затем уже установить ссылку. Прямой
доступ по имени не действует, т.к. объект
есть аналог вещи, которая всегда может появиться или
исчезнуть из Мира. Вот способ поиска: Set Variable =
FindO("Name") Set Variable =
World.FindO(NameVariable) Set Variable =
World.FindO("Name")
Объект World - это еще и огромная библиотека всяких
"вкусностей" и "затравок" для Вашей фантазии. Например, там
реализованы функции зрения и локации или измерения дистанций
и т.п.
В
данной версии (4.0 или 4.1) нет гравитационного притяжения
между объектами, реакции на свет и электромагнитных полей.
Объекты притягиваются только к Земле. Практически все остальное
реализовано. Просмотрев список событий и законов, Вы заметите,
что объекты могут:
Ориентироваться в пространстве.
Соударяться и отскакивать.
Находится на поверхности друг друга.
Нагревать или разрушать друг друга.
Некоторые типы объектов могут разваливаться или
модифицироваться и даже достраиваться в процессе своей "жизни".
Порождать другие объекты.
Конструировать новые классы в процессе жизни прежних.
Накапливать и запоминать информацию любого типа.
Обмениваться информацией и даже "генетическим кодом".
Поедать и убивать друг друга.
Расходовать, отнимать и пополнять Энергию.
Самообучаться, если Вы их так сконструировали
(средства есть!).
Кроме
того, специально для любителей клеточных автоматов имеется
такой тип объектов, ("Nature") как колония - группа (например,
деревьев или насекомых), живущая, как единое целое, но имеющая
свойства клеточных индивидуумов. Для любителей анимации
имеется встроенная модель анимированных объектов и
конструктор, который позволяет из отдельных классов, как из
частей, собрать и анимировать, а затем, скомпилировать в
единый файл анимированную модель. Однако, не очень этим
увлекайтесь, если Ваша машина "слабовата" (см. требования на сайте в разделе "Файлы").
Тогда уж лучше используйте модели
из других источников. В следующих версиях мы постараемся решить вопрос быстродействия.
Имеется специальный тип объектов - разборные
Body-объекты, которые можно не только создавать из Примитивов
(шаров, кубиков и т.п.) прямо в "Крыле", но и затем разбирать, изменять, достраивать в процессе
их жизни.
"Крыло Мысли" вводит новый вид
творческих соревнований! Представим себе, что Вы создали своих
героев, а-ля роботов-убийц (Терминатора, или еще чего похуже, хе-хе). Далее, после обучения, Вы можете их поместить в разные
модели Миров (созданных тут же на "Крыле") и устроить целые
баталии-соревнования. Для этого класс может иметь признак
"Это персона". Персоны всегда существуют в одном экземпляре. И
они моделируются несколько иначе (см. руководство). К ним
может быть подключен блок ИИ. Вообще-то, ИИ можно подключить к
любому классу, только тогда все его объекты будут молниеносно
"умнеть" или "глупеть" при изменениях знания.
Мы уже говорили, что подход,
использующий внешние программы по отношению к объектам -
нарушение идеологии! Если, конечно, это не программы самой
модели Мира. Однако сразу от VB перейти к такому глубокому
"вещизму" не легко. И у Вас непременно будут строки в
процедуре Main - хотя бы для запуска Вашего приложения. Однако,
мы даем Вам более правильную технологию! Вот ее суть:
Создайте объекты автономными.
Придумайте язык общения с объектами и "реализуйте" его в
разделе Commands вашего класса. Это раздел класса, специально
предназначенный для того, что бы разместить там "слова"
языка общения с объектом. Этот язык может быть настолько
сложен и гибок, насколько позволит Ваша фантазия. "Крыло"
способно интерпретировать любой поток команд, как во
времени, так и вне времени!
Откройте меню "World \ Messages for objects" и, выбрав в
списке нужный объект, Вы увидите в другом списке все его
слова-команды.
Задайте ему (или целой группе объектов) инструкцию на
командном языке.
Вы видите, что можно обойтись
вообще без программы! И еще - этим же способом объекты могут
принимать данные или общаться между собой!
Мы даем Вам технологию создания
встроенных в объект нейронных сетей и целых схем из этих
сетей. Но мы не собираемся навязывать свои концепции проектирования
ИИ (которые мы развиваем сами). ИИ-модуль встраивается в
объект посредством дополнительной ссылочной переменной и
соответствующей функции "Построить ИИ". Далее, все методы и
данные ИИ объекта доступны из событий Вашего объекта, как
обычные свойства и методы.
Некоторые особенности "зрения",
обработки столкновений и механики Ньютона еще не совсем
отлажены. Поэтому учитывайте следующее:
Объекты сканируют пространство на уровне +3 от своей
нижней точки. Если в этом месте имеется дыра (в препятствии), то
возможны проблемы с обработкой столкновения.
При выборе Вашего варианта ориентации (с помощью
встроенных функций и Вашей программы) или встроенного закона
"Ориентируется" - отдайте предпочтение своей модели
поведения.
Всегда используйте классификацию при опознании объектов
в предпочтении другим (механическим и программным) способам,
которые придут Вам на ум. Это избавит Вас от дальнейших
трудностей с изменениями контекстов.
О детекторе ошибок:
Sorry! Мы не виноваты, что Микрософтовское ядро не
всегда корректно обнаруживает причину ошибок Вашего кода.
Например, Вы можете получить в качестве источника указание на
процедуру (событие) верхнего уровня, тогда как ошибка
произошла в глубине вложенных в это событие других процедур
Вашего кода или языкового интерфейса Команд. В таких случаях
просто следует раз и навсегда отказаться от идеи создавать и
отлаживать сложные модели целиком за один раз и без
плана. Кое-что о формах:
Мы, конечно, даем Вам некий
аналог VB-форм. Но не забывайте, что аналогия не полная! Вы
должны понимать, что форма работает в другом потоке (по
отношению к Миру) и ее взаимодействие с объектами возможно
только через ссылки, взятые из Мира функцией Set Variable =
World.FindO(Name). И еще: не все контролы формы полностью
идентичны контролам VB. Не пытайтесь создавать в программе
формы сложный код. Это уход в бок.
Формы - просто развитие темы графического интерфейса и диалога
с Вещественными Объектами. Но не более того. Конечно, они
способны "вмещать" и сложную программу. Но тогда, может,
вернемся к VB?
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:
Игровые объявления и предложения:
Если вас заинтересовал материал «Проект WoT - Крыло Мысли», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела.
Предлагаются такие схожие материалы:
Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.