Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Объект Анимация


Практическая работа с Visual Studio.Net и Microsoft Office

ПРАВИЛА

Раздел правила существует для вновь подписавшихся на данную рассылку.

Статьи

Статьи служат для ознакомления подписчиков с технологиями программирования в программных средах Visual Studio.NET и Microsoft Office. В конце каждой из них стоит её звёздный рейтинг, так автор данной рассылки оценивает статью сразу по нескольким критериям, от одного до пяти звёзд.

Форум

Форум создан для обмена информацией по всему, что связано с системой программирования Visual Studio.NET и пакету программных продуктов Microsoft Office. Так же вы можете задавать свои вопросы и отвечать на чужие, объявлять о начале проектов, писать пожелания и предложения по улучшению выпусков, комментировать статьи и многое другое. Главное не выходите за рамки темы.

Ресурсы

Сюда я сбрасываю интернет ресурсы тех, кто не поленился и предварительно договорился об их опубликовании с автором этой рассылки, то есть со мной. Конечно иногда там будут выставляться просто понравившиеся мне адреса. Главное помните, что картинки слева на самом деле не просто украшение выпусков, а гиперссылки на сайт ресурса.

Статистика

Необходимо где-то держать сводную информацию о рассылке в целом и отдельных выпусках в частности не залезая каждый раз в интернет. Данный раздел был создан именно для этого. И хотя он нужен больше мне чем вам, вы сможете легко узнать о статусе моего издания прочитав последний выпуск рассылки. Особенно удобно пользователям системы probe.

Создаваемые макросы будут использовать объектную модель для доступа и автоматизации различных частей IDE. Ниже будет продемонстрировано применение макросов для автоматизации ряда простых задач и рассказано о применении объектной модели к документам и окнам IDE. А так же рассмотрены события с приведением нескольких примеров, которые наставят вас на путь истинный. Многие из опубликованных здесь материалов будут более подробно обсуждены в следующих выпусках рассылки .

Управление документами и текстом

Некоторые задачи, можно выполнять, используя макросы, включают работу с текстом документов. Вам может потребоваться найти текст, изменить выделение или просто вставить текст в документ. Объект Document пространства имен DTE предоставляет много возможностей, упрощающих управление текстом документов.

Макросы часто работают с текущим документом, который имеет фокус. Получить текущий активный документ в IDE позволяет свойство DTE.ActiveDocument, возвращающее объект Document. (Вспомните: документ Visual Studio.NET - это окно редактора или дизайнера, открытое в центре IDE.) Если документ является окном редактора, он имеет связанный объект TextDocument.

У объекта TextDocument есть три свойства, интересные для программистов, желающих управлять текстом внутри объекта: StartPoint возвращает объект TextPoint, указывающий на начало документа, EndPoint возвращает объект, который указывает на конец документа, a Selection - объект TextSelection, предоставляющий множество свойств и методов для работы с выделенным текстом.

Объект TextPoint предоставляет информацию о местоположении для функций редактирования внутри документа. Вы создаете объект TextPoint в документе, когда хотите вставить текст в документ или управлять текстом документа либо когда нужно получить сведения об отдельном документе. Объекты TextPoint не зависят от выделения текста, и вы можете создавать несколько таких объектов в одном документе.

Взглянем на пару примеров, использующих упомянутые объекты. Хорошо ознакомьтесь с кодом, так как эта информация пригодится. Сначала давайте получим ActiveDocument, создадим пару объектов EditPoint и добавим текст в ActiveDocument с помощью следующего фрагмента:

Добавление комментариев в стиле C++
Вы можете ускорить свою работу воспользовавшись сочетаниями клавиш. Установите фокус на поле кода и нажмите Ctrl+A (выделить всё). Далее используйте Ctrl+C или Ctrl+Insert для копирования и Ctrl+V или Shift+Insert для вставки.

Выполнение этого макроса для документа с кодом Visual C# или Visual C++ закомментирует весь документ, если он ранее не содержал комментариев. Макрос не слишком полезен, но он демонстрирует, как соединить все части вместе. Можно задействовать IntelliSense, чтобы получить справку при создании объектов для экспериментов с другими возможностями.

А вот более практичный макрос: он вставляет текст в документ в зависимости от выделения и создает в документе HTML-комментарий. Этой возможности нет в Visual Studio.NET 2003, и вы можете счесть этот простой макрос настолько полезным, что добавите его к своему набору инструментов. Мы объявим переменную ts как объект TextSelection и присвоим ей текущий выделенный фрагмент, используя DTE.ActiveDocument.Selection:

Добавление комментариев в стиле HTML

Данный макрос использует метод Insert интерфейса TextSelection для вставки текста вокруг объекта Selection. Метод Insert получает два аргумента; строку, которую вы хотите вставить в выделенный фрагмент, и константу vsInsertFlags, определяющую место вставки. В первом вызове Insert в примере используется значение vsInsertFlagsAtStart, а во втором - vsInsertFlagsAtEnd. Эти константы перечислены в таблице "Константы vsInsertFlags".

таблица "Константы vsInsertFlags"
Константа
Описание
vsInsertFlagsCollapseToStart
Свёртывает точку вставки от конца выделенного фрагмента до текущего TextPoint.
vsInsertFlagsCollapseToEnd
Свёртывает точку вставки от начала выделенного фрагмента до текущего TextPoint.
vsInsertFlagsContainNewText
Заменяет текущий выделенный фрагмент.
vsInsertFlagsInsertAtStart
Вставляет текст перед началом выделенного фрагмента.
vsInsertFlagsInsertAtEnd
Вставляет текст сразу за концом выделенного фрагмента.

Объекты Selection и TextPoint, а также методы, доступные через DTE, предоставляют хорошую основу для различных операций, выполняемых над исходным кодом с помощью макросов.

Работа с окнами

Окна в Visual Studio.NET управляются через объекты Window из DTE.Windows (см. рисунок выше). Возможности, предоставляемые объектом Window, зависят от типа окна. Если точнее, то от объекта Window наследуются CommandWindow, OutputWindow, TaskList, TextWindow и ToolBox.

Объект OutputWindow наиболее подходит для написания макросов. Вы можете применять его для вывода сообщений так же, как применяете printf или Console.Write в консольных приложениях или MsgBox и MessageBoxShow в Windows-npuложениях.

Чтобы задействовать объект OutputWindow для отображения сообщений, нужно создать новый метод, принимающий в качестве аргумента строку. Затем вы можете вызывать этот метод с аргументом так же, как используете для вывода сообщений метод MsgBox. В следующем примере приведен метод MsgWin, получающий в качестве аргумента строк. Вы можете задействовать этот метод вместо MsgBox, когда вам нужно быстро вывести небольшое текстовое сообщение.

Вывод в Command Window и Output Window
Не удивляйтесь, когда в окне Macro Explorer вы не увидите процедуры MsgWin. Для того, чтобы она там была требуется несколько условий, одно из которых заключается в том, что процедура не должна иметь аргументов.

MsgWin использует одну интересную возможность, найденную в примерах, поставляемых с Visual Studio.NET. Метод определяет, был ли он вызван из окна Command Window. Если да, то вывод направляется пользователю обратно в окно Command Window . Если же метод вызван из макроса, который был запущен через пункт меню, комбинацию клавиш или кнопку, MsgWin направляет вывод в окно Output с именем MsgWin Output.

Проект макроса Samples, поставляемый с Visual Studio.NET, содержит много функционального кода, который вы можете использовать в своих макросах.

Чтобы задействовать макрос MsgWin, вы должны вызвать его из другого метода. Для примера создан метод MsgWinTest , который перечисляет открытые в данный момент в IDE окна.

Базовый вариант макроса MsgWin можно улучшить. Довольно просто перегрузить метод MsgWin, чтобы разрешить такие действия, как очистка области вывода или добавление заголовка к списку. Для примера создадим перегруженную функцию MsgWin, которая очищает область вывода:

Изменяем процедуру MsgWin

Конечно, эта перегрузка не делает ничего хорошего, если вы используете макрос способом, показанным в MsgWinTestModify, но вы можете видеть, насколько просто изменить макрос.

Другой способ добавить функциональность в макрос - создать сборку на любом языке программирования, а затем ссылаться на нее из ваших проектов макросов. Это будет сделано с объектом CommandWindowPaneEx.

Использование сборок в ваших макросах

После того, как вы начнете использовать много макросов, становится очевидной пара вещей. Во-первых, вы можете применять макросы для тестирования сборок .NET. Так, если вы хотите проверить некоторую функциональность, достаточно сделать ссылку на нужную сборку и затем вызывать методы из макроса.

Во-вторых, вы заметите, что вам приходится использовать только Visual Basic, и, если вы не любите его, вы можете потратить много времени на те вещи, которые гораздо быстрее сделали бы на другом языке. Как уже было сказано, можно писать функциональные блоки макросов на языках, отличных от Visual Basic: объедините функции в сборку и сошлитесь на эту сборку из вашего проекта макроса.

Материал статьи был взят из книги, поэтому вам придётся учесть данный факт при работе с ним. Естественно у вас не будет файлов собственных сборок о которых здесь говорится, но думаю общий смысл несложно уловить и без этого.

Для книги был написан набор сервисных функций, и вы можете задействовать их в своих макросах и надстройках. В папке Utilities, сопровождающих книгу ресурсов, вы найдете решение Utilities. Оно содержит объект OutputWindowPaneEx. Постройте решение и скопируйте файл InsideVSNET.Utilities.dll из папки bin\debug проекта в папку C:\Program Files\Microsoft Visual Studio.NET 2003\Common7\IDE\PublicAssemblies.

После того как файл скопирован в папку PublicAssemblies, можно добавить ссылку на сборку из проекта макроса в Macros IDE, щелкнув правой кнопкой папку References в окне Project Explorer и выбрав команду Add Reference или выбрав папку References и введя команду Project.AddReference в окне Command Window оболочки Macros IDE. На вкладке .NET диалогового окна Add Reference вы увидите новую сборку InsideVSNET.Utilities. Выберите ее в списке, щелкните кнопку Select, а затем ОК. Вы увидите новую сборку в списке ссылок в папке References.

Добавив ссылку в проект, полезно ввести в модуль соответствующий оператор Imports. В данном случае добавьте в начало модуля строку:

Imports InsideVSNET.Utilities

Как только вы добавите ссылку, IntelliSense станет предлагать дополнить строку, когда вы будете создавать и применять объект OutputWindowPaneEx, Польза этого объекта в том, что он позволяет выбирать, куда направлять вывод: в окно Output IDE оболочки Visual Studio.NET или в Macros IDE. В примере мы задаем вывод в Macros IDE, передавая DTE.MacrosIDE при создании объекта. Также слегка изменена тестовая программа, которая перечисляет открытые окна Macros IDE вместо перечисления окон IDE Visual Studio.NET, как было сделано ранее.

Отрывок кода использования дополнительной сборки

Кроме выполнения задач, которые можно было проделать с объектом OutputWindowPane, OutputWindowPaneEx позволяет проделать ряд операций с текстом, посылаемым в окно Output. Как было сказано, вы можете задать IDE в которую будет направлен вывод. Метод Write имеет три перегруженных версии, позволяющие задать объект, строку или строку формата и массив параметров. Применяя эти перегруженные версии, можно задать параметры форматирования во многом аналогично использованию методов System.Console.Write и System.Console.WriteLine в .NET Framework.

События макросов

Одна из самых мощных возможностей макросов IDE - модель событий - обеспечивает срабатывание макроса при возникновении в IDE заданных событий. Вы можете использовать события для срабатывания макросов, которые создают журналы, сбрасывают тестовые значения или управляют различными частями IDE. Ниже будет показано, как создать обработчики событий для разных событий IDE.

Проще всего получить обработчик события для проекта макроса через окно Project Explorer в Macros IDE. Раскройте проект и вы увидите модуль EnvironmentEvents. Этот файл содержит блок кода, автоматически генерируемый IDE.

Модуль EnvironmentEvents входящий в каждый проект макросов

Как видите, существует множество типов событий, которые можно использовать в IDE. Фактически вы можете задействовать все события DTE, даже если они не включены по умолчанию. Вы можете дополнить список событий, чтобы получить доступ к интересующим вас событиям. Чтобы создать новый обработчик события, выберите тип обрабатываемого события в списке Class Name в верхней части окна кода

После того как выбран тип события, в списке Method Name в правом верхнем углу окна кода будут перечислены события, которые можно обрабатывать. Выберите событие, которое вы хотите обрабатывать, и обработчик события будет сгенерирован автоматически. Из сгенерированного обработчика события вы можете вызывать созданные в проекте методы либо просто добавить нужную функциональность прямо в код обработчика события. В приведенном примере мы вызовем функцию MsgWin для вывода сообщения об окончании компоновки.

Обработка события OnBuildDone
Чтобы обработчик события начал работать, вам нужно в Macro IDE запустить проект к которому принадлежит модуль EnvironmentEvents. Просто выберите его и нажмите кнопку Start

Эти события открывают все возможности для автоматизации и настройки IDE. Работая с событиями, помните, что весь код отдельного проекта макроса совместно использует один и тот же модуль событий. Это значит, что, если вы хотите создать разные обработчики для одного события, надо создать другой обработчик события в другом проекте.

Безопасность событий

Выполнение кода обработки событий в мощной макросреде, такой как Visual Studio. NЕТ, влияет на безопасность. При первой загрузке проекта макроса, содержащего код обработки событий, вы увидите диалоговое окно.

Вы должны быть уверены в надежности источника загружаемых проектов макросов. Если вы не уверены во включенном, в проект коде обработки событий, щелкните кнопку Disable Event Handling Code в диалоговом окне Warning и просмотрите код модуля, прежде чем использовать его.

 

Эту статью меня побудила написать рассылка . В ней задаются множество вопросов на которые довольно легко ответить самому задавшему, если пользоваться справочными материалами.

Итак, предположим нам нужно проиграть avi-файл. Причём мы хотим сделать это циклически, или не со всеми кадрами. А ещё перед нами стоит задача управления анимацией внешними или внутренними событиями.

Прежде всего нужно понять что нам понадобится?

  1. Естественно нам необходимо решить в какой системе программирования работать. Если бы мы захотели использовать .NET, то думаю с выполнением задачи  не возникло особенных проблем. В .NET даже gif-анимация работает лишь от одной строки кода. Но поскольку про .NET и так написано достаточно, возьмём за основу Microsoft Office 2003.
  2. Поскольку выбран Microsoft Office сразу становится ясно, что придётся использовать Visual Basic 6.3 Integrated.
  3. Далее необходимо подобрать ActiveX-компонент для вывода самого файла. По существу это самое важное решение, которое предстоит принять, ведь именно от него будет зависеть доступная функциональность. Лучше исходить из того, что avi-файл нужен нам лишь как анимированный значок в форме Access. Следовательно разумнее пока остановится на выборе Microsoft Animation Control 6.0 (SP4). Нет, если цели и задачи другие, к примеру, проигрывание фильма, то не проблема использовать любой другой ActiveX-компонент. Однако в данном случае нам хватит и такого.

Теперь, когда цели поставлены многие не слишком разбирающиеся в программировании (новички) с ужасом осознают, что не представляют дальнейших действий. Хотя новички могут даже не дойти до стадии выбора ActiveX-компонента решив что им и без программирования хорошо живётся. Но что же делать обычному пользователю который всё же не может обойтись без кодирования?

Ответ один - смотреть справку. Но вот беда, как бы не была богата справочная система от Microsoft Office, в ней нет того, что нужно. По данной справке вы можете освоить любую входящую в офисный пакет программу и узнать об их COM-библиотеках, научится программировать в Visual Basic 6.3, VBScript, JScript, узнать о DAO и ADO (имеется в виду COM технологии) и многое другое, но вот с дополнительными ActiveX компонентами выходит маленькая неувязочка.

Решение возникшей проблемы очень простое. Лично у меня на компьютере стоят три системы Visual Studio и соответственно на каждую под одному образцу MSDN. Всмотритесь внимательно в следующую таблицу.

таблица "Версии Visual Studio и MSDN"
Visual Studio
Библиотеки MSDN
Visual Studio 6.0
MSDN 6.0 (99)
Visual Studio 7.1 (.NET 2003)
MSDN 7.1 (2003)
Visual Studio 8.0 (.NET 2005)
MSDN 8.0 (2005)

Что мы видим? А то, что седьмая и восьмая студии дот нетовские. В одной рассказывается про Framework 1.1, в другой про Framework 2.0. Всё это сборки, а не COM. Отталкиваясь от данного факта необходимо перейти в MSDN 6.0, так как именно там описываются COM'ы. Несмотря на то, что этой системе помощи уже много лет, сами посчитайте сколько прошло с 1999 года, она описывает новейшие ActiveX-компоненты от Microsoft. Или лучше сказать, что Microsoft не сделала новых версий COM-компонентов став развивать сборки.

А теперь к делу. Создайте базу данных Access, надеюсь никому не надо объяснять как это делается? Дальше добавьте в неё форму с названием frmAnimation.

Не забывайте о венгерском стиле записи имён. Для того чтобы отличить объект формы от других используют префикс (по-русски - приставка) frm, для таблицы tbl, для отчёта rpt и так далее.

Осталось самое простое, внедрить элемент ActiveX. Существует несколько способов добиться желаемого. Вы можете выбрать новый элемент с панели инструментов <Панель элементов> используя кнопку <Другие элементы>.

Если у вас нет такой панели инструментов воспользуйтесь следующей инструкцией для её добавления: Сервис ⇒ Настройка... ⇒ Панели инструментов ⇒ Панель элементов.

Cамый рациональный способ на мой взгляд добавить элемент управления через главное меню: Вставка ⇒ Элемент ActiveX... ⇒ Microsoft Animation Control 6.0 (SP4). После того, как вы нажмёте кнопу OK в текущей форме появится элемент изображённый на рисунке. Настала пора воспользоваться справкой MSDN 6.0.

Обратите внимание, что все Microsoft'ские элементы последней версии имеют подпись 6.0. Это позволяет с лёгкостью определять к какой системе MSDN вам нужно обратиться за помощью. Значит если написано Microsoft TreeView Control, version 6.0, смотреть нужно MSDN 6.0.

Откройте MSDN Library Visual Studio 6.0. В древовидном списке содержания открывшейся помощи перейдите по следующему пути MSDN Library Visual Studio 6.0 ⇒ Visual Basic Documentation ⇒ Reference ⇒ Controls Reference ⇒ ActiveX Controls ⇒ Animation Control. Вы окажетесь на начальной странице Animation Control. Дальше по документации придётся передвигаться используя гиперссылки, так как создатели MSDN к сожалению не занесли остальные странички в древовидный список содержания, но для начала переведу то что здесь написано.

Animation Control

Animation Control (элемент управления Анимация) допускает создавать кнопки которые показывают анимацию, такие как avi-файлы, когда вы на них щёлкаете. Элемент управления может проигрывать только avi-файлы, которые не содержат звука. В дополнении элемент управления Animation может отображать только несжатые avi-файлы, которые имеют кодирование использующее Run-Length Encoding(RLE).

Если вы попытаетесь загрузить avi-файл который содержит звуковые данные или который находится в формате не поддерживаемый данным элементом управления, будет возвращена ошибка 35752.

Рассмотрим простейший пример использования элемента управления Animation. По щелчку левой кнопки мыши он будет автоматически открывать Open Dialog и проигрывать файл.

В конструкторе форм frmAnimation выберите элемент управления Animation. В окне Свойств перейдите на вкладку Другие и если Имя отличается от Animation1 поправьте его. Так же нужно создать событие Загрузка для самой формы. В свойствах из раскрывающегося списка выберите Форма, на вкладке События в пункте Загрузка выберите [Процедура обработки событий]. Если до этого поле было пустым и вы воспользовались не раскрывающимся списком, а кнопкой с троеточием, у вас вылезет окно Построитель, в котором нужно будет щёлкнуть элемент Программы.

Следующим шагом будет создание процедуры обработки события для одинарного щелчка левой кнопки мыши. Нажмите Alt+F11 для открытия редактора Visual Basic 6.3, хотя по идее вы и так должны быть в нём. В окне Project Explorer выберите форму Form_frmAnimation. В Class Name выделите Animation1 и сразу после этого в Method Name событие Click (см. рисунки выше). У вас получится следующий код.

Два событиz, одно для формы, другое для элемента управления

Давайте немножко его усовершенствуем. Как было обещано, нам нужно, чтобы при срабатывании события Click воспроизводилась анимация, но предварительно мы должны выбрать её файл. Перейдите в Microsoft Access и добавьте в нашу текущую форму элемент управления Microsoft Common Dialog Control, version 6.0. Это делается так же как и для элемента управления анимацией. Переименуйте его в CommonDialog1 если у вас это не так.

Common Dialog переводится как Общий Диалог. Диалог это когда общаются два существа, в нашем случае компьютер и человек. Я бы дословно перевёл ещё как <двойное осмысление>. Слово общий понятно и так, но вот что за ним скрывается? Смотрим табличку:

таблица "Элемент ActiveX - Common Dialog"
Метод
Отображаемый диалог
ShowOpen
Диалоговое окно "Открыть файл"
ShowSave
Диалоговое окно "Сохранить файл"
ShowColor
Диалоговое окно "Выбрать цвет"
ShowFont
Диалоговое окно "Выбрать шрифт"
ShowPrinter
Диалоговое окно "Показать печать" или "Печать"
ShowHelp
Вызывает Windows Help Engine

Общий диалог содержит шесть методов позволяющих вызывать разные диалоговые окна. Нам потребуется диалоговое окно открытия. Но хватит <тянуть кота за хвост>, вот работающий код, скопируйте его в свой проект.

Проигрывание анимации по щелчку мыши

Как видите он очень прост. Вначале создаём фильтр для avi-файлов, чтобы диалоговое окно открытия показывало файлы только с этим расширением. Потом запускаем само окно методом ShowOpen. Следующим пунктом включаем свойство AutoPlay. Это означает, что как только мы вызовем метод Open, нам не нужно будет запускать метод Play, проигрывание начнётся автоматически. Данное так же означает, что и метод Stop запускать не нужно во избежание возвращения ошибки. И последнее, метод Open отвечает за открытие файла.

Если в последствии вы захотите остановить проигрывание файла, то достаточно установить свойство AutoPlay в False. Лучшей стратегией будет или изменять значения AutoPlay в True или False, или установить AutoPlay в False с самого начала (можно не программным путём) и использовать методы Play и Stop.

Для открытия свойств элемента управления Animation, нужно навести на него и нажав правую кнопку мыши вызвать контекстное меню. Далее выбираем Объект Animation ⇒ Properties. Появившиеся диалоговое окно полезно использовать как альтернативу свойств и элементов управления в Access.

Противоположность методу Open - Close. Он закрывает файл, даже если тот и не был открыт. В смысле Close ничего не будет закрывать, но и ошибку не возвратит.

Ошибки в Animation1

Предположим пользователь нашей программы <схитрит> и вместо того, чтобы в диалоговом окне как все нормальные люди нажать кнопку Открыть передумает и нажмёт Отмена. У него вылезет ошибка, что согласитесь неприятно как ему, так и программисту не предусмотревшему данную ситуацию. Но на самом деле это не просто ошибка, её специально запрограммировали разработчики данного элемента управления. Такая техника программирования называется обработкой исключений. Следующий код покажет стандартный пример, как мы можем улучшить нашу функцию.

Обработка исключений в Animation1

Пример стандартный потому, что не делает ничего особенного, кроме вывода сообщения с описанием текущего исключения. Такой код Access добавляется при автоматической генерации процедур, когда вы создаёте новую кнопку или другой элемент управления. А если нам захочется вывести своё сообщение именно на эту ошибку, а остальные по тихому проигнорировать? Тогда заменим всего лишь одну строчку и вот что получим.

Своё видение ошибок

Вариантов множество. Можно сделать так, чтобы перехват исключения выводился в таком виде, а остальные описания ошибок по умолчанию. Или придумать что-то своё, более оригинальное. Вообще, я поставил глобальный отлов ошибок сразу на всю процедуру, но по умному, если используется конкретный номер, то и сам отлов должен быть конкретным во избежание путаницы и стоять у вызова метода Open. Впрочем пока такие тонкости нам ни к чему.

Осталось только рассмотреть способы автоматического изменения размеров, но этого я делать не буду оставив на самостоятельное изучение. Однако если вам интересно, смотрите свойства Left, Top, Width, Height и метод Move в MSDN 6.0. И конечно не забывайте метод Play содержащий три необязательных для ввода аргумента. Repeat от 0 до -1, где -1 бесконечное повторение, а так же start и end от 0 до 65535 обозначающие начальный и конечный кадр анимации.

Постскриптум

Раз уж сегодня была затронута тема общих диалогов, стоит рассказать о том как вызывать из кода проводник. Не для того чтобы ваша программа с ним взаимодействовала, а просто так, для общего развития.

Вызов внешней программы, в данном случае "Проводник"

В отличие от диалоговых окон мы не получим над проводником управления, и тем не менее эта интересная возможность бывает иногда очень полезна. Например если вам надо будет отрыть папку с базой данных из которой вы вызываете процедуру.

 

Вот решил в качестве развлечения иногда писать про игры, а то код наверное некоторым из вас уже совсем надоел. И ведь это был только Visual Basic, так как в следующих выпусках планирую рассказать про C++, от которого даже у любителей C# может случится нервное расстройство. Сегодняшней темой обсуждения выбрана культовая игра Fallout I. Про неё много написано, она сама является интерактивным продолжением популярнейшего фильма "Безумный Макс", который кстати показывали на этой неделе (вторник СТС "Безумный Макс", среда СТС "Безумный Макс-2. Воин дороги", четверг СТС "Безумный Макс-3. Под куполом грома). Для начала ознакомимся с её описанием

Fallout I

Дата выхода: 15 июня 1997
Требования: P-90, 16MB RAM, SVGA
Перевод: Студия Фаргус

"War. War never changes:"

Война навсегда изменила Землю. Нет больше цивилизации, нет стран, нет границ, нет власти. Утопия анархиста? Нет - это мир Fallout. Мира не стало после ядерной войны. Глупый человек истребил себя сам, а те кто остались в живых вынуждены жить глубоко под землей, под слоем стали и бетона. Хранилища - так их назвали создатели, дом - так их называют люди, обитающие за стальной дверью, толщиной в несколько метров.

Так начинается путешествие в Fallout. Герой - житель хранилища, который должен спасти своих собратьев от гибели. Начиная игру, можно задать ряд навыков, на которые персонаж будет опираться в течении всей игры. По мере развития ваш герой может стать кем угодно: рейдером - бандитом пустыни, умелым вором, рейнджером - кем угодно. Пост апокалиптический мир дает огромные возможности для развития - в этом основная причина по которой в Fallout играть можно бесконечно. Кончено, есть пара квестов, которые надо выполнить обязательно, но как их выполнять и когда - решать игроку.

Игра сделана на основе научно-фантастических фильмов 80-х годов (например Mad Max). Атмосфера в Fallout соответствующая - продуманы мельчайшие детали. Мир после войны хранит осколки былой цивилизации, так походу игры можно найти древние порно-журналы или упаковки столетних макарон.

Отдельное слово надо сказать об оружие и техники Fallout. Уничтожать врагов можно в рукопашную или порезать на куски, пристрелить из старого доброго Калашникова или испепелить из огнемета, сжечь плазмой или разрезать пополам лазером - выбор широк. Кстати, В Fallout, в отличии от других РПГ, один и тем же оружием можно пользоваться от начала до конца игры. То есть противника с шестиствольным пулеметом, при определенном уровне навыка <Холодное оружие>, можно забить молотом.

Остались и военные компьютеры, роботы, машины, прочая техника. На заброшенных военных базах полно полезного барахла, но гулять там опасно - робот-охранник ненароком может оторвать гостю голову.

Сражаться по ходу игры придется с самыми разными врагами - скорпионы, собаки, рейдеры, мутанты и прочая нечисть будет досаждать все время. Особо кровожадные игроки помимо врагов истребляют и мирное население - это, опять же, на личный выбор играющего.

Fallout - это современный героический эпос. Хотя герой игры - это не классический герой (какой же герой до Fallout вырезал целые города ни в чем не повинных жителей?), но в этом вся прелесть игры. СВОБОДА во всем - это та причина, по которой игра до сих пор лежит на полках всех компьютерных магазинов.

Удачи в игре и да не останутся ваши кости в песках заброшенных земель:

От автора

Всё это слова, у меня же гораздо больший интерес вызывают правила по которым строится игра или если выразится ещё точнее - алгоритмы. К примеру, что бы вы улучшили если являлись авторами RPG? Смогли бы вы создать подобное творение или нет? Если у вас пока нет достаточных умений для программирования самой игры, но охота поучаствовать в создании смежных проектов, отличный шанс предоставляет администратор сайта pc-book.spb.ru. Связаться с ним довольно просто и думаю у вас не возникнет затруднений.

По возникшим вопросам, а так же комментарии к этой и другим статьям пишите в форум данной рассылки ...

 

ФОРУМ
1. Интересно
ответить
М.Г.
Очень красиво. Впечатление - будто вы работаете коллективом.
Спасибо.
админ
Нет, к сожалению, а может и к счастью, рассылку создаю один. Коллектив мне заменяет мой старенький компьютер с процессором Celeron 733 МГц и 192 Mб оперативной памяти. Всё, начиная от тестирования кода программ и создания графического оформления, и кончая вёрсткой и публикацией выпусков происходит на нём.
Естественно таких "мощностей" в большинстве случаев не хватает, поэтому и публикуюсь я только под настроение, а не в обязательном порядке. Для вёрстки использую Macromedia Dreamweaver 8, для проверки орфографии назначил ей как внешний редактор Microsoft Office FrontPage 2003. На самом деле когда формирование шаблона рассылки завершено справится с её изданием может практически любой кто хоть раз работал в Word'е. Всю тяжёлую работу делают программы, оставляя мне лишь набирать текст.
новая тема

РЕСУРСЫ
Зачем задавать вопросы, если гораздо проще ответить на них самому? Если вы не знаете ответа, то вероятно вам придётся подписаться на рассылку "Visual Basic для новичков и профессионалов". Сделайте это хотя бы для понимания бессмысленности своих действий.
Подписаться: вебом, почтой
Как жаль, что собственные знания и умения не зависят от количества книг в библиотеке. Но всё не так плохо если вы имеете возможность их прочесть. Этот сайт не сделает вас умнее, но предоставит такую возможность абсолютно бесплатно.
Ссылка: pc-book.spb.ru

СТАТИСТИКА
номер выпуска
15
дата выпуска
2006-11-11
время выпуска
01:05
возраст в днях
280
количество подписчиков
1373
динамика за вчера/неделю
+2/-1

Практическая работа с Visual Studio.Net и Microsoft Office

В избранное