ria pc game
fle game engine - движок для создания игр
fle game engine - движок для создания игр


Balls and holes PC game / Balls and Holes PC игра
Вакансии
Игродельня
Сегодня
24 марта 2019 18:22
Вход Регистрация Забыли пароль ?

megainformatic - Пример простой 2d игры созданной на unity 3d
Пример простой 2d игры созданной на unity 3d Это 2 урок, посвященный разработке игр на unity 3d и языке программирования c#. В предыдущем уроке - unity 3d первый старт Рассматривалось как можно приступить к освоению среды разработки если Вы делаете это самый самый первый раз. То есть каких-то первонача
подробнее...

Теги создание сайтов, создание игр, дизайн, игры, информатика, уроки photshop, php, c++, музыка, delphi, cms, робосайт
Статьи сайта
megainformatic - Открытый Полный Исходный код игры Дорога в Город

megainformatic - Как создать игру - Веселый Единственный Буквоежка - программируем основу будущей игры

megainformatic - Как создать игру - Веселый Единственный Буквоежка - выводим заставку

megainformatic - Как создать игру - Веселый Единственный Буквоежка - игровое меню

megainformatic - Как создать игру - Веселый Единственный Буквоежка - движение и анимация героя

Как Создать игру ВЕБ - Веселый Единственный Буквоежка - Программируем сами

Как Создать игру ВЕБ - Веселый Единственный Буквоежка - Программируем сами

megainformatic - Примеры моих работ

megainformatic - Музыкальные темы

megainformatic - Уроки Photoshop - Чудеса

megainformatic - Купить Уроки Photoshop - Чудеса

megainformatic - Онлайн Обучение, Репетитор

megainformatic - Уроки Photoshop - Рисуем и Анимируем

megainformatic - Уроки Photoshop - Рисуем и Анимируем - Урок 1 - Старт

megainformatic - Уроки Photoshop - Рисуем и Анимируем на AllSoft.ru

megainformatic - DirectX 9c - Изучаем пример MultAnimation

megainformatic - megainformatic cms Система Управления Контентом

megainformatic - Темы для WordPress

megainformatic - Что нужно для создания собственного сайта ?

megainformatic - Макет дизайна Вашего сайта

скачать megainformatic cms

megainformatic - Итоги 2010 года

megainformatic - Что нужно для создания собственного сайта ?

megainformatic - как создать инсталлятор для собственной cms

megainformatic - Новости - страница 2

Нововведения в megainformatic cms

Web Администрирование

Уроки Верстки

Система автоматизированной е-майл рассылки

Система автоматизированной е-майл рассылки

megainformatic - Выгрузка файла на сайт

megainformatic - выпадающее меню на html и css

megainformatic - Использование checkbox

Краеугольная особенность работы Web-form на примере смены состояния checkbox

Технологии WEB

Технологии WEB - AJAX-запросы

Часто Задаваемые Вопросы

Продукты

Проблемы с кодировками при отображении страниц

игра Нечто: Необъяснимое Нить Накала - "в плену желаний"

Система Автоматизации Доставки Электронных Заказов megainformatic cms e-pro

megainformatic cms e-pro Автоматизация Обработки Уведомлений о Заказах по партнерским программам

megainformatic cms e-pro Автоматизация Обработки Уведомлений о Заказах по партнерским программам

webinformatic: Музыкальная страничка трэкера

megainformatic - Создание музыки и звука

webinformatic: Создание музыки и звука: урок 2

megainformatic - Создание музыки и звука: урок 3 - настройка Impulse Tracker для работы в WinXP

megainformatic - Создание музыки и звука: урок 4 - Введение в Mod Plug Tracker

megainformatic - Создание музыки и звука: урок 5 - Первая композиция в Mod Plug Tracker

megainformatic - Создание музыки в Impulse Tracker 2.14 - урок 6 - Ввод Нот

megainformatic - Создание музыки в Impulse Tracker 2.14 Первая мелодия

megainformatic - Создание музыки в Impulse Tracker 2.14 Настройка параметров сэмплов

megainformatic - Создание музыки и звука: теория и практика создания трэкерской музыки

megainformatic - Инструкция по оплате услуг средствами WebMoney

Основы работы в Microsoft Visual Studio 2008 и DirectX 9 (DX SDK Aug 2008)

Введение в программирование игр на С++ для платформы DirectX 9 - Первый старт

подробнее

     
     
  уроки Photoshop - чудеса  
     
  Уроки Photoshop - Чудеса  
     
  Коллаж от нуля - страница 3  
     
  [содержание] [страница 1] [страница 2] [страница 3] [далее]  
     
  Мы рассматриваем как создать коллаж - сначала рисуем пейзаж взяв в качестве примера фотографию  
     
 

итоговый результат того, что у Вас может получиться -

создаем удаленный лес на горизонте

 
     
  Переходим на слой Sky - Небо. Для этого щелкните его в панели слоев.  
     
 

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

Используя инструмент Прямоугольная область (другие виды областей можно выбрать щелкнув этот инструмент правой кнопкой мыши) выделяем ту область слоя Sky, которую будем заливать

 
     
  Используя инструмент Прямоугольная область (другие виды областей можно выбрать щелкнув этот инструмент правой кнопкой мыши) выделяем ту область слоя Sky, которую будем заливать  
     
  Щелкаем правой кнопкой мыши инструмент Заливка, Выбираем левой кнопкой Градиент  
     
  Щелкаем правой кнопкой мыши инструмент Заливка, Выбираем левой кнопкой Градиент  
     
  В панели свойств Градиента выбираем желаемый вид. Заметьте, чтобы задать сине-белый градиент - задайте предварительно в качестве цветов переднего и заднего плана - синий и белый цвета  
     
  В панели свойств Градиента выбираем желаемый вид. Заметьте, чтобы задать сине-белый градиент - задайте предварительно в качестве цветов переднего и заднего плана - синий и белый цвета  
     
  задайте предварительно в качестве цветов переднего и заднего плана - синий и белый цвета  
     
  Далее растянув в нужном направлении элемент управления градиентом получаем плавный переход от синего к белому цвету  
     
  Далее растянув в нужном направлении элемент управления градиентом получаем плавный переход от синего к белому цвету  
     
  получаем плавный переход от синего к белому цвету  
     
  Если Вам нужен градиент, включающий переход между несколькими цветами, то это можно сделать следующим образом -  
     
  Правой кнопкой мыши щелкаем слой Sky в панели слоев и выбираем пункт меню Параметры наложения  
     
  Правой кнопкой мыши щелкаем слой Sky в панели слоев и выбираем пункт меню Параметры наложения  
     
  В открывшемся диалоговом окне ставим галочку напротив пункта Наложение градиента, в средней части окна щелкаем по изображению Градиента  
     
  В открывшемся диалоговом окне ставим галочку напротив пункта Наложение градиента, в средней части окна щелкаем по изображению Градиента  
     
  в окне Редактор градиентов нажимаем кнопку Новый  
     
  в окне Редактор градиентов нажимаем кнопку Новый  
     
  Щелкаем на большом изображении градиента для добавления новых контрольных точек и задаем для них желаемые цвета  
     
  Щелкаем на большом изображении градиента для добавления новых контрольных точек и задаем для них желаемые цвета  
     
  Далее нажимаем кнопку <Да>, правой кнопкой мыши можно производить нужные операции по добавлению/удалению новых вариантов градиентов  
     
  правой кнопкой мыши можно производить нужные операции по добавлению/удалению новых вариантов градиентов  
     
  Получаем небо на слое Sky окрашенное при помощи градиентной заливки  
     
  Получаем небо на слое Sky окрашенное при помощи градиентной заливки  
     
  Теперь нужно сделать текущим слой Ground и при помощи инструментов Осветление/Затемнение создать для земли эффект рельефности  
     
  Теперь нужно сделать текущим слой Ground и при помощи инструментов Осветление/Затемнение создать для земли эффект рельефности  
     
  Эти инструменты работают по аналогии с Кистью, но в отличие от неё не рисуют выбранным цветом, а выполняют осветление или затемнение пикселей, под указателем кисти в соответствии с выбранными параметрами на панели параметров  
     
  затемнение при помощи инструмента Затемнение  
     
  Вы видите, что пиксели под указателем Кисти становятся темнее. Аналогично работает Осветление - оно делает пиксели светлее. Управлять степенью и характером осветления/затемнения можно при помощи формы кисти, вида её краев, Диапазона и Экспозиции  
     
  Управлять степенью и характером осветления/затемнения можно при помощи формы кисти, вида её краев, Диапазона и Экспозиции  
     
  Форма Кисти и ее размер влияют на форму видоизменяемой области Кистью, Жесткость краев влияет на этот же параметр, но по краям Кисти, Диапазон задает на какие цвета мы воздействуем - Тени, Средние тона или Света и наконец Экспозиция задает силу воздействия за один шаг обработки.  
     
  2) Теперь над слоем Sky Вам нужно создать новый слой, назвав его Облака - Clouds и нарисовать облака  
     
  Процесс создания облаков сводится к следующему. Выбираем белый цвет, кисть с не очень жесткими краями, Непрозрачность Кисти задаем 18% и рисуем облако  
     
  Выбираем белый цвет, кисть с не очень жесткими краями, Непрозрачность Кисти задаем 18% и рисуем облако  
     
  Далее применяем к слою с облаком Фильтр > Размытие > Размытие по Гауссу  
     
  Далее применяем к слою с облаком Фильтр > Размытие > Размытие по Гауссу  
     
  [содержание] [страница 1] [страница 2] [страница 3] [далее]  
     
подробнее

     
  Что нужно для создания сайта ?  
     
 

Ключевые особенности megainformatic cms

Если не использовать никаких CMS - Вы можете просто создать свой сайт как набор обычных статичных html-страниц, тогда вам вообще не понадобится php и никакая cms, но тогда вы не получите следующих преимуществ:

1) каждую страницу html вам придется создавать и редактировать вручную, каждый раз оформляя её одинаково. Если вдруг потребуется изменить оформление, добавить или изменить счетчик или что-то еще вам придется вручную изменять каждую вашу html-страницу, а их может быть очень много;

2) при работе с сайтом состоящим из статичных html-страниц на вас ложится много рутинной работы - вам нужно составить вручную карту сайта, при изменениях вручную вносить изменения в карту, вы практически лишены возможностей автоматизации по управлению контентом;

Перейдя на использование php и megainformatic cms значительно проще:

1) создавать и менять оформление для всех ваших страниц разом, т. к. все они формируются на базе единого шаблона, если у вас на сайте 10, 100, 1000 и больше страниц, неважно, вы всегда будете менять оформление только одной страницы-шаблона - все остальные страницы будут выглядеть аналогично;

2) автоматизация многих задач по управлению сайтом и его контентом - есть специальные модули, которые упрощают поиск по сайту, создание карты сайта, добавление нового контента, обработку заказов и многие другие важные задачи;

 
     
     
  Система Управления Контентом - megainformatic cms  
     
  Данная CMS имеет следующие отличительные характеристики -  
     
 

- простота установки и использования;

- доступность для расширения и модификаций;

- полностью написана на PHP;

- использование любых шаблонов и любых модулей, включая модули из других CMS;

- простая и удобная админ-панель;

- подробная документация для пользователей и программистов;

 
     
  Вы можете оценить megainformatic cms сами, просматривая данный сайт, Вы видите именно результат её работы.  
     
 

Ключевая особенность megainformatic cms именно простота и подробнейшее, скурпулезное документирование всех её достаточно простых возможностей.

Она как нельзя кстати подойдёт именно Вам, если Вы никогда не программировали на PHP и не имеете ни малейшего представления о том, как сделать собственный сайт !

 
     
  Вы можете заказать систему и получить по ней бесплатные консультации (после её приобретения).  
     
  Вы можете заказать megainformatic cms в нескольких вариантах  
     
     
  Вариант Simplex - e-pro - стоимость 500 руб.  
 
 
     
 

включает полный набор всех модулей системы, документацию, демонстрационный сайт, компонент E-PRO.

 
     
  Вариант Midlex - express - стоимость 800 руб.  
 
 
     
  включает полный набор всех модулей системы, документацию, демонстрационный сайт, шаблоны, express - вариант системы - позволяет вам развернуть свой сайт в течение 10 минут.  
     
  Вариант Fullex - e-shop - стоимость 1500 руб.  
     
 
 
 

включает полный набор всех модулей системы, документацию, демонстрационный сайт, шаблоны, модули, компонент E-SHOP для создания интернет-магазина.

 
 
     
  Вариант Unlimex - e-mailer - стоимость 2500 руб.  
     
 
 
 

включает полный набор всех модулей системы, документацию, демонстрационные сайты, шаблоны, модули, компонент e-mailer.

 
 
     
  На Ваш выбор Вы можете получить megainformatic cms в произвольной комплектации.  
     
  Для заказа системы обратитесь к автору - автор  
     
подробнее

     
     
 
МОДЕЛИРОВАНИЕ НА УРОВНЕ МНОГОУГОЛЬНИКОВ
 
[Все уроки 3ds max] [Галерея моделей] [далее]
 

Создание модели книжного шкафа

Нам необходимо смоделировать представленный объект, затем применить к нему материал – дерево.

 
каркасный вид модели книжного шкафа сплошной вид
 

Создайте бокс:

Create Panel > Standard primitives > Box

В окне параметров задайте следующие размеры:

Length = 2,8m; Width = 0,8m; Height = 2,6m;

Для того, чтобы получить возможность видоизменять созданный простой объект увеличим количество сегментов:

Length Segs = 4; Width Segs = 3; Height Segs = 3;

 

Приступим к процессу видоизменения. Преобразуйте объект в editable poly:

Modify Panel > object name (Box) > щелчок правой кнопкой мышипо 1 пунктуокнастека > Convert To Editable Poly.

После этой операции объект преобразуется из простого параметрического в редактируемый многоугольник.

Этот новый тип объекта позволит нам сформировать пространство для полок, сформировать ножки.

Если вы щелкали вне объекта, то снова выберите объект (щелчком по нему).

Клавишей [F4] включите режим отображения граней (edged faces).

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

В окне стека разверните узел у пункта Editable poly и выберите подпункт Polygon.

Удерживая нажатой клавишу [Ctrl] выделите две грани в центре.

 
выделенные грани
 

Попробуем «вдавить» эти грани внутрь объекта, чтобы сформировать будущее пространство полки.

В окне параметров найдите и нажмите кнопку Extrudeи маленькую кнопку рядом с ней.

В появившемся диалоговом окне задайте: Extrusion Height = -0,7m; Затем OK.

 
грани после вдавливания
 

Расширение размеров пространства полки

Перейдите в окно Top viewport и увеличьте, переместите вид если требуется. На панели Modify раскройте узел Editable poly и выберите уровень суб-объекта Vertex (вершины).

Используя выделение мышью в окне Top viewport выделите средние верхние четыре вершины. При этом будут выделены все видимые и не видимые вершины объекта в данной зоне.

 
выделение двенадцати вершин
 
Удерживая нажатой [Ctrl] выделите аналогично 12 вершин другой стороны.
 
выделение второго набора из 12 вершин с другой стороны
 
Используя Select and Uniform Scale сместите вершины по координатной оси Y. В окне Perspective viewport вы увидите результат вашей работы.
 
раздвижка вершин масштабированием для достижения эффекта тонких стенок
 
Вдавите верхние две грани для получения пространства верхней полки.
 
получение верхней полки
 

Создание 4-х ножек

В окне Perspective viewport переверните шкаф так, чтобы было видно его дно. Используя панель модификации и уровень Polygon выделите 4-ре крайних прямоугольника по периметру дна. Используя кнопку Extrude и кнопку параметров (рядом с ней) – в группе Edit Polygons – выдавите ножки на 0,1m.

 
выдавливание ножек
 

Теперь коснемся понятия рендеринга или отрисовки. Отрисовка (Рендеринг) созданной модели – это растеризация трехмерного изображения в виде плоского.

Выберите пункт меню Rendering > Render.

В открывшемся окне Render Scene в группе Output size щелкните по кнопке 640х480

 
размер выходного изображения при растеризации
 

Нажмите кнопку Render в самом низу окна.

В окне кадра будет нарисовано текущее содержимое текущего окна. Полученное изображение можно сохранить в отдельный файл (используя кнопку с изображением дискеты).

Как видим, это лишь прообраз моделирующий форму шкафа. Для придания реализма к объектам применяются различные материалы.

Под материалами в Max подразумеваются плоские изображения (называемые также текстурами) наносимые (или проецируемые) на поверхность созданных объектов.

Применим к нашей модели шкафа материал wood (дерево).

Вызовите редактор материалов – клавиша M или Rendering> Material Editor

В окне образцов щелкните любой пустой слот.

По умолчанию все слоты имеют shader Blinn.

Понятие шейдера (shader) включает следующее – это специальный алгоритм (или набор алгоритмов) моделирующий поведение материала для придания большей реалистичности. Шейдеры моделируют отражение, приломление, поглощение света.

Тип шейдера можно менять в окне параметров – группа Shader Basic Parameters. Каждый из типов шейдеров имеет свой уникальный набор параметров, хотя конечно есть и нечто общее.

Названия шейдеров обычно представляют или имена авторов или свойства и поведение и т.д.: Blinn, Anizotropic, Metal и другие.

Для моделирования поведения большинства простых материалов подходит именно шейдер Blinn, который применяется наиболее часто. Другие шейдеры больше подходят для специфических материалов – Anizotropic и Metal – для анизотропных веществ, т.е. кристаллов, металлов – материалов в которых свойства среды зависят от направления.

В качестве краски (цвета), который можно использовать для заполнения объекта можно использовать растровое изображение (текстуру):

В группе Blinn Basic Parameters есть три пункта:

Ambient – окружающий свет

Diffuse – рассеянный свет

Specular – отраженный свет.

 
редактор материалов и рассеянный свет
 

Нажмите пустую кнопку напротив пункта Diffuse – и мы используем в качестве рассеянного света материала текстуру.

В появившемся окне Material/Map Browser выберите рисунок wood. Двойной щелчек приведет к автовыбору.

 
выбор материала wood
 
Будет открыто окно параметров проекций (Map) – здесь пока ничего не будем менять, а просто выберем в верхнем выпадающем списке самый первый пункт – имя создаваемого материала.
 
переход на уровень параметров материала в целом
 

Мы снова попадем в окно свойств этого материала. Переименуйте материал назвав, например wood_01. Если материал имеет несколько проекций (Maps), то их тоже можно переименовывать давая другие названия. Все изменения будут сохранены вместе с вашим файлом сцены.

Применим созданный материал к нашему объекту – шкафу – щелкните слот материала и перетаскивайте его на объект в окне Perspective viewport. Если никаких изменений не произошло, то нажмите кнопку Show map in viewport в окне редактора материалов.

 
кнопка управления отображением материала в окне вида
 

Закройте редактор материалов и попробуйте произвести рендеринг вашей сцены.

 

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

Поправим дело: вызовите редактор материалов и доберитесь в нем до параметров проекции с рисунком дерева (wood). В группе Coordinates можно управлять наложением рисунка на объект, а именно:

Offset – производить смещение на указанное число единиц по данной координатной оси;

Tiling – организовывать цикличное (повторяющееся) заполнение образцом указанное количество раз. Это нам и требуется – попробуйте изменять значения и сравнивать изменения проводя Рендеринг.

Angle – позволяет поворачивать образец на некоторый угол. Попробуйте повернуть по координате Y на 90 градусов.

Попробуйте добиться наиболее подходящих значений повторяемости и углов поворота образца.

Примечание: при частых повторных отрисовках для просмотра эффекта от изменений окно редактора материалов можно не закрывать.

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

Используя Modify panel > Editable Poly > Polygons выберите две прямоугольных грани в нижней части шкафа.

 
окончательный вариант модели книжного шкафа
 

Используя кнопку Extrude вдавите дверки на значение (Amount = -0,1m).

Создание ручек

Создайте маленький цилиндр (Cylinder) или конус (Cone) (0,01 х 0,06). Выровняйте расположение ручки, примените материал, создайте вторую ручку.

Между ручками создайте планку (используйте бокс нужных размеров).

В итоге у Вас должно получиться что-то наподобие приведенного на рисунке.

 

 
     
     
  [Все уроки 3ds max] [Галерея моделей] [далее]  
подробнее


[к содержанию] [другие статьи Тимонина Андрея]

Исключения. Создаем класс обработки исключений.

автор: Тимонин Андрей

дата публикации на сайте Мега Информатик: 18.11.2012

Добро пожаловать в цикл моих уроков посвященных программированию.

Эта статья будет посвящена исключениям и обработке исключительных ситуаций.


В любом языке, как и в жизни, существуют правила. А если есть правила, значит должны быть и ситуации, которые выбиваются и существуют вне этих правил. Эти ситуации называются исключениями (exceptions). Именно про них и пойдет речь в этой статье.

Обратимся к теории.  Для работы с исключениями используется контролируемый блок try. Чтобы сгенерировать исключение можно воспользоваться оператором trow внутри блока try или функций, вызываемых в этом блоке.  После блока try размещаются один или несколько блоков обработки исключений catch. Смотрим пример.

try{
//фрагмент кода
}
сatch( Type)
{
//действия по обработке исключения типа Type
}
catch(…)
{
//действия по обработке прочих исключений исключения
}

Как все это работает? В блоке try{ } помещаем код, где может возникнуть ошибка. В блоке сatch( Type){ } -  что необходимо сделать в исключительной ситуации, например сообщить пользователю, что в программе произошла ошибка по такому-то поводу.

Для рассмотрения ошибок конкретного типа использется вариант блока   сatch( Type){ }. Вместо  слова Type указываете конкретный тип. Смотрим пример.

сatch( int)
{
//действия по обработке исключения типа int
}
сatch(char *)
{
//действия по обработке исключения типа char
}

Если необходимо обрабатывать исключения разных типов можно написать универсальный блок сatch

catch(…)
{
//действия по обработке прочих исключений исключения

}

А теперь поговорим, что происходит, когда вызываем оператор trow.

trow Err();

При обращении к этому оператору создается копия параметра виде статического объекта, которая существует до тех пор, пока не будет обработано исключение. Ищется подходящий обработчик catch, в качестве параметра которого указано необходимое исключение. В данном случае catch (Err& ). Если такого не находится, вызывается catch(…).

Давайте попробуем написать класс исключений.

class ExceptionBase {
private:
         int errorCode; //код ошибки
         wchar_t *errorMessage;//текст сообщения
public: //конструктор по умолчанию
         ExceptionBase() : errorCode(0) {errorMessage = L"no description"}
     //конструктор копирования
         ExceptionBase(ExceptionBase& eb);
    //конструктор с кодом и текстом сообщения
         ExceptionBase(int eC, const wchar_t *eM);
     //деструктор
         virtual ~ExceptionBase();
     //оператор присваивания
         ExceptionBase& operator=(ExceptionBase& eb);
         int getErrorCode(); //получает код ошибки
         const wchar_t* getErrorMessage();
         operator int();
         operator const wchar_t*();
};

Вот такой получился класс. Конструктор копирования и оператор присваивания нужны для передачи объекта в оператор catch. Смотрим на реализацию.
//exception.cpp
#include “exception.h”
//конструктор копирования
ExceptionBase::ExceptionBase(ExceptionBase& eb)
{
         errorCode = eb.getErrorCode();
    //определяем сколько занимает наша строка
         int len = wcslen(eb.getErrorMessage());
    //выделяем необходимый размер памяти пула
         errorMessage = new wchar_t[len + 1];
    //копируем строку сообщения
         wcscpy(errorMessage, eb.getErrorMessage());
}

ExceptionBase::ExceptionBase(int eC, const wchar_t *eM)
{
errorCode = eC;
int len = wcslen(eM);
errorMessage = new wchar_t[len + 1];
wcscpy(errorMessage, eM);
}
//деструктор
ExceptionBase::~ExceptionBase()
{
//освобождаем выделенную память пула
if(errorMessage != NULL)
delete [] errorMessage;
}

ExceptionBase& ExceptionBase::operator=(ExceptionBase& eb)
{
//защитимся от самоприсваивания
if(this == &eb)
return *this;
delete [] errorMessage;
//занесем новое значение кода
errorCode = eb.getErrorCode();
//сформируем новую строку сообщения
int len = wcslen(eb.getErrorMessage());
errorMessage = new wchar_t[len + 1];
wcscpy(errorMessage, eb.getErrorMessage());
return *this;
}
//получим код ошибки
int ExceptionBase::getErrorCode()
{
return errorCode;
}
//получим текст сообщения
const wchar_t* ExceptionBase::getErrorMessage()
{
return errorMessage;
}
//приводя к типу int получаем код ошибки
ExceptionBase::operator int()
{
return errorCode;
}
//приводя к типу wchar_t* получаем строку сообщения
ExceptionBase::operator const wchar_t*()
{
return errorMessage;
}
};

Вот такой код получился. Его можно использовать как базовый класс в иерархии, но мы не будем усложнять.А лучше посмотрим как его следует использовать.
//гдето в коде
ExceptionBase err(GETDISPLAYMODEERROR,L"Не могу определить параметры дисплея");
throw err;

 

И дисплей тоже  может не определяться :). Таким образом мы создали объект и вызвали исключение оператором throw.

А так будет выглядеть блок try
try
{
...

         }
//ловим исключения, и выводим сообщения об ошибках
catch(ExceptionBase err)
{
MessageBox(NULL, (const wchar_t*)err, L"Ошибка", MB_ICONERROR);
}
catch(...)
{
MessageBox(NULL, L"Неизвестная ошибка", L"Ошибка", MB_ICONERROR);
}

На этом статью заканчиваю. Надеюсь, эта информация была вам интересна.
C уважением, Андрей.

[к содержанию] [другие статьи Тимонина Андрея]

Содержимое данной страницы доступно только зарегистрированным пользователям.



Пожалуйста войдите на сайт -
Вход

или пройдите процедуру регистрации - Регистрация

megainformatic live chat
Начать беседу
X
 

Оставленные комментарии



fle game engine - движок для создания игр
fle game engine - движок для создания игр


Something: Unexplained 2 captive of desires / Нечто: Необъяснимое 2 в плену желаний
Костя Коробкин Комикс Коллекционное издание - 6 комиксов, 81 страница, 220 mp3 треков
megainformatic Размещение баннерной рекламы у нас
Время загрузки: 0,1183