Размещение gif-баннера 125х125 в левой колонке сайта - стоимость размещения обговаривается индивидуально руб/сутки или руб/месяц.
Ниже приведены условые цены для примера рассчёта стоимости. Внимание !!! Данные цены не являются реальными, а лишь демонстрационными. Реальная стоимость обговаривается индивидуально.
Размещение gif-баннера 728х90 в верхней части сайта
Размещение gif-баннера 468х60 в верхней части сайта
Размещение gif-баннера 728х90 в нижней части сайта.
Размещение gif-баннера 468х60 в нижней части сайта.
Заказ баннерной рекламы в игре Шарики на лифте.
см. описание проекта и видео - Шарики на лифте.
Там же можно скачать игру и посмотреть как будет выглядеть реклама.
Реклама в баннер-ротаторе - позволяет Вам разместить ваши баннеры в подписи к постам на различных форумах, где её увидят тысячи пользователей. Вы можете также сами публиковать посты с подписью, если у Вас есть аккаунты с такой возможностью.
Пример размещения в баннер-ротаторе - при каждом обновлении страницы отображается новый баннер. Показ осуществляется циклично.
Реклама в баннер-ротаторе в приложениях. В приложениях распространяемых на бесплатной (free) основе демонстрируются Ваши баннеры. Широта охвата аудитории может быть огромной, учитывая то, что такие приложения распространяются лавинообразно и публикуются на тысячах сайтов.
Свои вопросы Вы можете оставить через форму контактов ниже, через форму ВОЗНИК ВОПРОС Нажми, а также по одному из прямых контактов.
Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008 Урок 1 Основные операторы языка C++ |
||
Данный небольшой урок является введением в программирование на C++ в MSVS 2008 Вам нужно иметь установленную среду Microsoft Visual Studio 2005 или 2008 (можно триал) |
||
[назад] [далее] [к содержанию] | ||
Мы рассматриваем основные конструкции языка C++ на примере работы в Microsoft Visual Studio 2008 | ||
В предыдущем уроке мы создали небольшой калькулятор. Этот урок позволил нам бегло познакомиться с некоторыми из конструкций языка C++ и некоторыми функциями. | ||
Теперь пришло время начать освещение основных базовых конструкций языка C++ на конкретных примерах Основные операторы (statements) языка - этой теме посвящен следующий раздел MSVS 2008 Documentation (далее просто Help) - Development Tools and Languages > Visual Studio > Visual C++ > Reference > C/C++ Languages - использование операторов помеченных меткой; - построение выражений; - пустой оператор; - операторы наполнения (логические скобки); - операторы выбора (ветвлений); - операторы организации циклов; - операторы перехода (передачи управления); - операторы объявления переменных; - операторы обработки исключений; |
||
- использование операторов помеченных меткой; метка (label) это особый тип идентификатора, который позволяет пометить нужную строку кода в программе содержащую исполнимый оператор, а затем использовать имя этой метки в операторах передачи управления и выбора. Пример из MSVS 2008 Help //
labels_with_goto.cpp cout << "testing" << endl;
Test2: |
||
данный пример рассчитан на консольное приложение. Как видим в отличие от delphi метка не требует предварительного объявления. Достаточно лишь указать допустимый идентификатор метки (Слово начинающееся с буквы) и закончить его двоеточием указав в нужном месте программы. Метка всегда указывает на исполнимый оператор! Даже если в этом месте будет записана строка комментария например так - Test2: // будет считаться, что метка указывает именно на исполнимый оператор, все незначащие строки (комментарии) при этом игнорируются. |
||
- построение выражений; операторы выражений приводят к вычислению какого-либо результата, никакой передачи управления или итерации при этом не происходит. Выражение должно завершаться точкой с запятой. Примеры выражений: coord_x = coord_x + 10 * MoveSpeed * TimeCounter; absc2 = sqrt( abs ( c1 ) ); |
||
- пустой оператор; Это строка содержащая лишь точку с запятой, т.е. ; |
||
- операторы наполнения (логические скобки); это пара фигурных скобок { и }. Применяется как блок операторов там, где вместо одного оператора нужно использовать целую группу. Блок может не содержать ни одного оператора вообще, тогда это просто пустой блок. Пример: if(
Amount > 100 )
}
Все переменные объявленные внутри блока без префикса static являются локальными для данного блока. |
||
- операторы выбора (ветвлений); оператор switch - оператор ветвлений мы уже сталкивались с этим оператором в предыдущем уроке, когда писали пример простейшего калькулятора форма записи этого оператора switch
( expression ) выражение в скобках должно давать целочисленный результат каждый оператор case позволяет выполнять заданный блок кода в зависимости от указанного целочисленного значения блок кода при default выполняется когда значению выражения не соответствует ни одна строка с оператором case Пример: //
switch_statement2.cpp Если Вы программировали на Delphi, то заметите, что аналогом оператора switch в delphi является оператор case. Т.е. switch в C++ и case в Delphi это одно и то же. Отличия состоят в синтаксисе, наличие строки default (в C++) и применении оператора break (в C++). к операторам выбора также относится оператор условия if if
( expression ) как видим он похож на использование оператора if в delphi, с тем лишь отличием, что слово then не используется. Пример: //
if_else_statement.cpp int
main() { Поэтому в C++ аналогом delphi-конструкции if SomeObject <> nil then {...} else {...}; будет являться if SomeObject { } else { } |
||
- операторы организации циклов; служат для выполнения одной и той же группы операторов итеративно. Различают циклы с предусловием while, пост условием do и цикл с заданным количеством итераций for while
( expression ) в цикле while группа операторов statement выполняется пока значение выражения expression не достигнет нуля Пример: кусок кода на delphi7 aCurrentCharnum
:= 0; при условии, что требуемые переменные объявлены, на C++ будет выглядеть так int
aCurrentCharnum = 0; |
||
Обязательно напишите и проверьте работу этого кода в приложении наподобие HelloWorldCLR | ||
оператор цикла с пост-условием do do оператор do является аналогом цикла repeat..until в delphi Пример: int
i = 0;
do по нажатию на кнопку на ее поверхности выводится 012 |
||
цикл for for
( init-expression ; cond-expression ; loop-expression ) про цикл for в документации по MSVS рассказано много интересных вещей, так что за подробностями обратитесь к ней. Кратко же использование цикла for выглядит так - Пример: String^ SomeStr = L"";
for (int i = 0; i<5; i++) на поверхности кнопки появляется текст 01234 |
||
- операторы перехода (передачи управления); к операторам перехода относятся операторы изменяющие обычный последовательный ход исполнения программы - break, continue, return, goto оператор break аналогичен оператору break в delphi - служит для немедленного выхода из цикла for, while и do, кроме того используется для выхода из ветви оператора switch (в delphi для этих целей не применяется) оператор continue аналогичен оператору continue в delphi - служит для немедленного перехода к следующей итерации цикла for, while и do оператор return return [expression] служит для возврата из функции или процедуры. Если выполняется возврат из функции, то значение выражения expression возвращается в качестве результата. Для функций void (процедур) никакого результата не возвращается. Для возврата из процедуры (функция с результатом void) специального вызова return не требуется. Выполнение процедуры будет закончено там, где кончаются ее логические скобки. оператор goto служит для безусловной передачи управления на указанную метку - goto identifier ; Примеры: для корректного выполнения примера в приложении Windows Forms добавьте на форму поле ввода textBox1 int somenum = Convert::ToInt32(textBox1->Text);
for (int i = somenum; i < (somenum+3); i++) данный код добавьте в обработчик нажатия на кнопку button1 размещенную на форме Form1 по нажатию на кнопку в поле textBox1 вместо введенного значения появляется значение на 1 большее в случае когда поля textBox1 пусто вырабатывается исключительная ситуация. Ее можно избежать, если для свойства Text у textBox1 задать любое числовое значение, которое будет значением по умолчанию //
continue_statement.cpp
printf_s("after the do loop\n"); //
return_statement2.cpp int
max ( int a, int b ) int
main()
printf_s("\n%d is bigger\n", max( nOne, nTwo )); //
goto_statement.cpp
for ( i = 0; i < 10; i++ )
// This message does not print: |
||
в следующем уроке мы рассмотрим операторы объявления переменных и обработки исключений | ||
[назад] [далее] [к содержанию] |
[статьи] [как создать игру ну, погоди!] [к содержанию] [scene2game] [donuts3d] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Теоретические и практические основы создания 3d игр | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
[статьи] [как создать игру ну, погоди!] [к содержанию] [scene2game] [donuts3d] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
![]() |
||
Как создать игру ? - Программируем сами. Рассмотрение программирования игр под DirectX 9c на C++ с использованием среды разработки MSVS 2005 или выше. |
||
[содержание] [назад] [страница 2] [далее] | ||
Введение в 2d-игры - страница 2 - создание игровой оболочки как у игр от Nevosoft, Alawar и аналогичных | ||
Этот простой пример поможет Вам быстрее освоить программирование игр на C++. Суть работы игровой оболочки сводится к следующему - если пользователь запустил исполнимый файл Вашей игры, то сначала появляется окно такого вида - |
||
![]() |
||
При закрытии окна нажатием кнопки X в правом верхнем углу приложение завершает работу, а игра так и не будет запущена. Нажатие кнопок Играть, Купить, Еще игр приводит к каким-либо действиям - Играть - запускается игра; Купить - отображается веб-страничка покупки; Еще игр - отображается веб-страничка других игровых проектов; |
||
Для того, чтобы реализовать такую оболочку потребуется следующее: 1) изображение основного экрана оболочки и 3 изображения кнопок Играть, Купить, Еще игр; 2) файлы в формате html, представляющие страницы Купить и Еще игр; 3) потребуется написать код, реализующий описанные возможности: - при выборе Играть должна запускаться игра - в нашем примере пока простейший пример DirectX-приложения; - при выборе других пунктов должны открываться соответствующие веб-странички; |
||
Начнём ! | ||
Скачайте указанные ниже 4 изображения на свой компьютер, внутри папки созданного MFC-проекта создайте подпапку Media\shell_window и разместите данные изображения внутри созданной папки | ||
![]() |
||
![]() |
||
![]() |
||
![]() |
||
Теперь переходим к разработке собственно оболочки - в окне Solution Explorer нашего проекта выбираем вкладку Resource View и последовательно открываем узлы Fle2 > Fle2.rc > Dialog > IDD_FLE2_DIALOG Пункт IDD_FLE2_DIALOG щелкаем дважды |
||
![]() |
||
При этом в правой части будет открыт редактор Диалоговых окон и шаблон Диалога окна нашего приложения | ||
![]() |
||
Нам нужно внести в шаблон окна следующие изменения: Убрать кнопки OK и Cancel; Удалить метку с текстом TODO: Place dialogs controls here После этого сохранить изменения в шаблон диалога и закрыть его. |
||
Теперь нужно будет написать программный код. Откройте файлы Fle2Dlg.h и Fle2Dlg.cpp если Ваш проект называется не Fle2, а как то иначе, то эти файлы также будут называться по-другому, но слово Dlg в них будет присутствовать. Правда если Вы дали классам окна диалога другие имена, исключив слово Dlg, то тогда Вам нужно открыть заголовочный и cpp файлы, которые содержат описание класса окна диалога Вашего приложения - объект окна диалога производится от класса CDialog - class CFleDlg : public CDialog |
||
В модуль Fle2Dlg.h добавляем следующий код - //
CFle2Dlg dialog //
Dialog Data
protected:
// Generated message map functions private:
RECT m_rcClientBounds; //размеры
рабочей области окна будем хранить здесь void InitShell(); //описываем метод инициализации оболочки bool TargetBtnArea(CPoint* CursorPos, RECT* aBtnArea); //метод попадания указателя мыши в область границ одной из кнопок игровой оболочки public: |
||
коричневым цветом выделен код, который Вы должны набрать сами, зеленым цветом я выделил поясняющие комментарии, их набирать не нужно. | ||
в модуле Fle2Dlg.cpp пишем такой код - коричневым цветом снова выделен код, который Вы должны набрать сами, зеленым цветом я выделил поясняющие комментарии, их набирать не нужно. | ||
#include
"stdafx.h"
#ifdef _DEBUG
#define
bi_x 0 //определяем
начальные координаты первого из 4х изображений //определяем
имена файлов веб-страниц для кнопок <Еще игр> и <Купить>
pBigImage = NULL; //обнуляем
экземпляры объектов класса CImage
bPlayBtnUp = false; //выставляем
индикатор отпускания левой кнопки мыши CFle2Dlg::~CFleDlg() void
CFle2Dlg::DoDataExchange(CDataExchange* pDX) BEGIN_MESSAGE_MAP(CFleDlg,
CDialog)
BOOL
CFle2Dlg::OnInitDialog()
// Set the icon for this dialog. The framework does this automatically
return TRUE; // return TRUE unless you set the focus to a control //
If you add a minimize button to your dialog, you will need the code below void
CFle2Dlg::OnPaint() SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// Center icon in client rectangle
// Draw the icon
pBigImage->Draw(dc, bi_x, bi_y); pPlayImage->Draw(dc, m_rcPlayImage.left, m_rcPlayImage.top); pBuyImage->Draw(dc, m_rcBuyImage.left, m_rcBuyImage.top);
pOthesImage->Draw(dc, m_rcOthesImage.left, m_rcOthesImage.top); CDialog::OnPaint();
} //
The system calls this function to obtain the cursor to display while the
user drags //данный метод выполняет загрузку изображений, формирующих внешний вид игровой оболочки в объекты CImage из указанных файлов. Так что если Вы в дальнейшем захотите использовать другие изображения - просто задайте соответствующие имена файлов void
CFle2Dlg::InitShell()
pBigImage = new CImage();
pPlayImage = new CImage();
pBuyImage = new CImage();
pOthesImage = new CImage(); GetClientRect(&m_rcClientBounds); //получаем размеры рабочей области окна
int y = m_rcClientBounds.bottom - pPlayImage->GetHeight(); //координата
y кнопки <Играть>
x = x + pPlayImage->GetWidth(); //координата
x для кнопки <Еще игр> } //данный метод проверяет попадание указателя мыши в область указанной параметром aBtnArea кнопки
//данный метод при нажатии и отпускании левой кнопки мыши проверяет попадание указателя в область одной из кнопок игровой оболочки и если это имело место - выполнение соответствующего действия - запуск игры или отображение веб-странички void
CFle2Dlg::OnLButtonUp(UINT nFlags, CPoint point)
if ( bPlayBtnUp | bBuyBtnUp | bOthesBtnUp )
if ( bOthesBtnUp )
if ( bPlayBtnUp ) CDialog::OnLButtonUp(nFlags,
point);
|
||
1) Чтобы указанный код правильно работал нужно включить файлы openwebpage.h и openwebpage.cpp в состав Вашего проекта - в окне Solution Explorer щелкаем правой кнопкой мыши пункт с названием проекта Fle2 и выбираем Add > New Filter |
||
![]() |
||
Созданную группу именуем common, щелкаем по названию правой кнопкой мыши и выбираем Add > Existing Item, указываем на файлы openwebpage.h и openwebpage.cpp Для этого удобнее в папке с проектом создать подпапку common и поместить оба эти файла туда. |
||
2) Будет не очень удобно, если exe файл Вашего проекта будет создаваться среди кучи других файлов. Рекомендую создать внутри папки проекта отдельную подпапку, а сам проект настроить таким образом, чтобы exe-файл попадал туда, т. е. | ||
В окне Solution Explorer выбираем пункт с названием нашего проекта - Fle2 выбираем пункты главного меню Project > Properties и в открывшемся окне настроек свойств выбранного проекта (не случайно я указал вначале выбрать Fle2 иначе откроются совсем другие свойства) выбираем пункт Configuration Properties > General а в окне справа в поле Output Directory указываем нужную нам подпапку для размещения exe-файла |
||
![]() |
||
На показанном рисунке настройка выполнена для конфигурации Debug, эту же настройку нужно сделать для конфигурации Release. И не забывайте сохранить изменения в проект - File > Save All либо используя аналогичную кнопку на панели инструментов. | ||
3) Откройте файл stdafx.h и добавьте в его конец строку кода - #include <atlimage.h> |
||
4) Откройте файл Fle2.h (если Ваш проект назывался не Fle2, а например, MyProj, то данный файл будет называться MyProj.h) добавьте в его конец строки __declspec(selectany)
TCHAR AppRootDir[MAX_PATH] = L""; //рабочая
папка приложения 5) Откройте окно настроек проекта - нужно сначала выбрать в окне Solution Explorer пункт с названием проекта, а затем главное меню - Projects > Properties и Configuration Properties > C++ > General в поле Additional Include Directories добавьте ссылку на папку common, размещенную внутри папки проекта - common; Аналогичную настройку нужно выполнить для конфигурации Release. |
||
![]() |
||
6) При написании кода приведенного выше обратите внимание на имя класса, которое Вы используете т. к. класс окна диалога в этом примере называется CFle2Dlg, то везде, где требуется указание этого имени - объявлении класса, в прототитах методов и т.д. нужно указывать его, если Вы назвали класс окна диалога по-другому - то Вам нужно везде слово CFle2Dlg заменить на имя класса, которое Вы используете в своем примере - в противном случае при компиляции (сборке) получите ошибки несоответствия. |
||
7) Метод void CFle2Dlg::OnLButtonUp(UINT nFlags, CPoint point) нужно сформировать в форме обработчика события WM_LBUTTONUP для класса CFle2Dlg - то что Вы написали ранее для этого метода нужно закомментировать, код еще нам пригодится! Далее В окне Solution Explorer выбираем вкладку Class View, в списке классов находим CFle2Dlg, щелкаем правой кнопкой мыши и выбираем пункт Properties, с правого края откроется новое окно, в котором нужно нажать кнопку Messages, в списке найти событие WM_LBUTTONUP и сформировать для него обработчик выбрав пункт <Add> OnLButtonUp |
||
![]() |
||
Теперь осталось вставить в обработчик тот самый код, который мы закомментировали. | ||
8) При компиляции возникнет ошибка из-за отсутствия реализации функции StartD3DApp(); - просто закомментируйте эту строку кода, т. к. мы реализуем эту функцию в дальнейшем - она будет запускать игру. | ||
9) Для правильного функционирования кнопок <Купить> и <Еще игр> внутри папки Fle, где создается exe-файл, нужно создать подпапку WebLinks и разместить в ней два файла - index.htm buy_fle.htm |
||
Пробуем выполнить сборку - [F7], а exe-файл ищем теперь уже внутри созданной подпапки !!! При запуске запускается созданная нами оболочка. При нажатии мышью кнопки <Играть> приложение просто завершает работу - мы пока не реализовали запуск игры - будем это делать в дальнейшем. При нажатии на кнопки <Купить> и <Еще игр> должны открываться соответствующие веб-странички из папки WebLinks. Работа по созданию игровой оболочки завершена! В следующем нашем уроке Мы реализуем в первом приближении работу кнопки <Играть> - будет запускаться начальное простейшее DirectX-приложение. В последующих уроках будем постепенно наращивать возможности создаваемой игры. |
||
Если у Вас еще остались неразрешенные вопросы - обращайтесь на наш Форум, либо на e-mail автора. | ||
[содержание] [назад] [страница 2] [далее] | ||