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


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

megainformatic - Урок 3 Оконный и полноэкранный режимы работы D3D-приложения. Управление игрой средствами DirectInput8 - Страница 2
        Урок
подробнее...

Теги создание сайтов, создание игр, дизайн, игры, информатика, уроки photshop, php, c++, музыка, delphi, cms, робосайт
Статьи сайта
megainformatic - Как скачивать торрент-раздачу ?

megainformatic - Автотелега фильтр

megainformatic - Фильмы

megainformatic - Fahrengeit Фаренгейт игра 2006 для PC

megainformatic - Fez игра для PC 2013

megainformatic - Дневник памяти - фильм 2004

megainformatic - Scooter - The night - Video and Lyrics - Скутер - Ночь - Видео и лирика

megainformatic - Если всё же неудача

megainformatic - Смерть или искупление или избавление

megainformatic - По ту сторону

cj megainformatic - музыкальный альбом БЕСКОНЕЧНОЕ ДВИЖЕНИЕ ОЖИДАНИЕ И ДЕЙСТВИЕ

megainformatic - Костя Коробкин - Секретный проект - интерактивный комикс

megainformatic - Основы анимации во флеш на примере анимирования простейшей окружности

megainformatic - Парсер сайтов Введение

megainformatic - Я пишу музыку для себя и для продажи

megainformatic - Статьи на околомузыкальные темы - осень 2014 часть 1

megainformatic - рассказ - Чужие воспоминания - автор Синицин Андрей - 24.09.2014

megainformatic - Сайты живущие вне поисковых систем. Есть ли такие и как их найти ?

megainformatic - Game craft - проект разработки игровых и мультимедийных проектов

megainformatic - Game craft - моделируем scv

megainformatic - Game craft - моделируем scv - шаг 1 (часть 2)

megainformatic - Game craft - моделируем scv - шаг 2 (часть 3)

megainformatic - Game craft - Наложение текстуры на модель робота scv (часть 4)

megainformatic - Game craft - Прорисовка текстуры робота SCV шаг 5

megainformatic - Game craft - Экспорт модели из 3ds max в формат X

megainformatic - Game craft - отображение scv модели в формате x в d3d9-приложении

megainformatic - Game craft - управление игрой от Direct Input в d3d9 - приложении

megainformatic - Game craft - игровая камера в d3d9 - приложении

megainformatic - Приключения Кости Коробкина - Как я провел лето - онлайн комикс - страница 1

megainformatic - Приключения Кости Коробкина - Как я провел лето - онлайн комикс - страница 2

megainformatic - Приключения Кости Коробкина - Как я провел лето - онлайн комикс - страница 3

megainformatic - Приключения Кости Коробкина - Как я провел лето - онлайн комикс - страница 4

megainformatic - Приключения Кости Коробкина - Как я провел лето - онлайн комикс - страница 5

megainformatic - Приключения Кости Коробкина - Как я провел лето - онлайн комикс - страница 6

megainformatic - Приключения Кости Коробкина - Как я провел лето - онлайн комикс - страница 7

megainformatic - Приключения Кости Коробкина - С новым годом - интерактивный комикс (kk hny) - онлайн комикс - страница 1

megainformatic - Приключения Кости Коробкина - С новым годом - интерактивный комикс (kk hny) - онлайн комикс - страница 2

megainformatic - Приключения Кости Коробкина - С новым годом - интерактивный комикс (kk hny) - онлайн комикс - страница 3

megainformatic - Приключения Кости Коробкина - С новым годом - интерактивный комикс (kk hny) - онлайн комикс - страница 4

megainformatic - Приключения Кости Коробкина - С новым годом - интерактивный комикс (kk hny) - онлайн комикс - страница 5

megainformatic - Приключения Кости Коробкина - С новым годом - интерактивный комикс (kk hny) - онлайн комикс - страница 6

megainformatic - Приключения Кости Коробкина - С новым годом - интерактивный комикс (kk hny) - онлайн комикс - страница 7

megainformatic - Костя Коробкин - СЕКРЕТНЫЙ ПРОЕКТ - интерактивный комикс (kk scp) - онлайн комикс - страница 1

megainformatic - Костя Коробкин - СЕКРЕТНЫЙ ПРОЕКТ - интерактивный комикс (kk scp) - онлайн комикс - страница 2

megainformatic - Костя Коробкин - СЕКРЕТНЫЙ ПРОЕКТ - интерактивный комикс (kk scp) - онлайн комикс - страница 3

megainformatic - Костя Коробкин - СЕКРЕТНЫЙ ПРОЕКТ - интерактивный комикс (kk scp) - онлайн комикс - страница 4

megainformatic - Костя Коробкин - СЕКРЕТНЫЙ ПРОЕКТ - интерактивный комикс (kk scp) - онлайн комикс - страница 5

megainformatic - Костя Коробкин - СЕКРЕТНЫЙ ПРОЕКТ - интерактивный комикс (kk scp) - онлайн комикс - страница 6

megainformatic - Костя Коробкин - СЕКРЕТНЫЙ ПРОЕКТ - интерактивный комикс (kk scp) - онлайн комикс - страница 7

megainformatic - Веселый Буквоежка - онлайн комикс - страница 1

megainformatic - Веселый Буквоежка - онлайн комикс - страница 2

megainformatic - Веселый Буквоежка - онлайн комикс - страница 3

megainformatic - Веселый Буквоежка - онлайн комикс - страница 4

megainformatic - Веселый Буквоежка - онлайн комикс - страница 5

megainformatic - Веселый Буквоежка - онлайн комикс - страница 6

megainformatic - Веселый Буквоежка - онлайн комикс - страница 7

подробнее

Антивирус DrWeb



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

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

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

Самое простое и главное из них - если вы НЕ ДОВЕРЯЕТЕ ИСТОЧНИКУ ИНФОРМАЦИИ, то лучше не используйте информацию из него.

Итак, если следование этому правилу всё же не помогло и Вы подозреваете или точно знаете, что Ваш компьютер УЖЕ ЗАРАЖЕН вирусом. Что же делать ?

Нет, не стоит кидаться в панику и бросаться и бежать покупать первый попавшийся антивирус.

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

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

Скачать актуальную версию CureIt можно по этой прямой ссылке с официального сайта разработчиков - https://www.freedrweb.com/download+cureit/gr/?lng=ru

Скачайте CureIt, как только он скачается запустите его двойным щелчком и выполните полную проверку компьютера.

Для начала будет достаточно и быстрой проверки (оперативная память и рабочие папки операционной системы).

Итак, все опасности позади, компьютер проверен и вылечен.

Если и это не помогло, тогда нужно обратиться на сайт разработчиков DrWeb в раздел ПОДДЕРЖКА и поискать ответы там.

Ну и в завершение, чтобы всё это не повторилось с вами снова, следует подумать о долговременной защите вашего компьютера.

Выбор антивируса DrWeb не является истиной в последней инстанции, но по крайней мере вы для начала можете его опробовать бесплатно, в течение 30-дневного периода.

И если вы окончательно решили, что DrWeb вам подходит, по крайней мере на ближайшее время, то приобрести его можно здесь - КУПИТЬ АНТИВИРУС DrWeb

Желаю Вам безопасной работы и надежной защиты от вирусов !

С более общими сведениями об антивирусах вы можете ознакомиться здесь - Антивирусы

подробнее

Модуль отзывов/комментариев для вашего сайта

Модуль отзывов/комментариев для вашего сайта
comments
Приобрести комплект megainformatic cms express files + модуль comments


Стоимость: 500 руб.


Пример работы модуля комментариев Вы можете видеть на данной странице (см. кнопку ОСТАВИТЬ КОММЕНТАРИЙ)



Демонстрация работы системы



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

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

В этой связи в данном модуле комментариев реализована возможность оставить комментарий с подтверждением е-майл по специальному ключу.

Ключ гарантирует, что оставивший комментарий как минимум указал настоящий е-майл, что уже говорит в пользу желательного комментария.

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

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

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



Модуль может применяться в составе систем класса megainformatic cms, а также на других cms, с учётом их особенностей.

В комплект входит готовая cms - megainformatic cms express files + модуль комментариев и описание с инструкцией по подключению к сайту.

ВАЖНЫЕ ОСОБЕННОСТИ

- компактность - модуль представлен в виде 1 скрипта php;

- минимальные изменения необходимые для встраивания в сайт;

- автономное хранилище для комментариев не требующее изменений в базе данных сайта;

- возможность интеграции с другими системами;

- защита от спама - комментарии проходят проверку по ключу и премодерацию;

- полностью открытый исходный код на php;

- логирование всех оставленных комментариев (т. к. среди спама может оказаться и полезный комментарий);

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

подробнее

     
     
  Добро пожаловать в систему управления сайтом megainformatic cms !  
     
  [к содержанию] [назад] [далее]  
     
 

7)  Создание шаблонов

 
     
 

В предыдущих уроках мы уже рассмотрели основы того, как можно подойти к созданию вашего сайта. Принципиально эти шаги являются универсальными и подойдут вам в применении к любой cms, потому что принципы использования html, css и php во всех системах подобны.

Главным отличием megainformatic cms является независимость и снятие многих ограничений на внедрение дополнительных модулей. Однако цена этому - крайняя минимализация и упрощение функционала.

 
     
  Рассмотрим каким образом можно с одной стороны немного усложнить систему, а с другой - получить некоторый набор новых возможностей.  
     
  Основная задача - это то, чтобы все страницы сайта выглядели в едином стиле, включая страницы модулей - поиск по сайту (search.php), карта сайта (map.php), модули обработки заказов (after_buy.php, after_pay_kind.php, buyer_data.php, accept_order.php).  
     
 

Казалось бы - самым простым способом является взятие необходимого кода из index.php и вставка в эти файлы. В принципе да, но не совсем так.

Если мы просто возьмем сейчас тот код, который уже есть в index.php и скопируем его и вставим в код этих модулей (еще не забудьте про соответствующие изменения), то в дальнейшем нам придется при изменении оформления - при использовании нового шаблона - вручную обновлять код html и css и во всех модулях, в который мы его вставим.

А как же сделать лучше тогда ? Спросите вы.

Воспользуемся опытом, который можно позаимствовать из других CMS. Мы конечно возьмём самый простейший вариант. И вот как он выглядит:

 
     
 

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

2) Шаг первый - мы должны разбить код файла index.php на 4 логические части -

header.php, menu.php, content.php, footer.php

эти файлы мы поместим в отдельную папку blocks

в файл header.php пойдёт весь код начиная от начала файла index.php и до строки

<div id="top"><a href="http://www.megainformatic.ru"><img src="images/skin/top.jpg" alt="создание игр, уроки, создание сайтов" width="800" height="111" border="0"></a></div>

включительно

 
     
 

в файл menu.php пойдёт весь код между строками -

<!-- ====== MENU ========= -->

<!-- ====== MENU ========= -->

 
     
 

в файл content.php нужно вставить код между строками -

начиная со строки следующей сразу же за блоком меню

<div id="infoleft">

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

<!-- =============/ CONTENT ================ --> включительно !

оставшийся код пойдёт в файл footer.php

 
     
 

после того как эти файлы будут созданы, вам останется изменить код файла index.php на следующий -

 

 
     
 

<?php

/* =================================================================

megainformatic cms 16.01.2011

http://www.megainformatic.ru

Автор: Синицин Андрей Сергеевич (megainformatic)


***************************

данный файл является главной частью вашего сайта - он содержит ссылки на все остальные блоки,
отвечающие за формирование - заголовочной части (header), меню (menu), основного
информационного блока - контент (content), нижней части страницы (footer).

===================================================================
*/

include "blocks/header.php";
include "blocks/menu.php";
include "blocks/content.php";
include "blocks/footer.php";

?>

 
     
 

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

Каким образом ? А по аналогии с тем, что мы сотворили с index.php - мы разбили весь его код на 4 независимые части, которые теперь отвечают за формирование - заголовочной части шаблона сайта (header), блока меню (menu), контента (content), нижней части страницы (footer).

Значит чтобы превратить например модуль map.php в оформленный по шаблону мы вставляем в его начало следующий код

 
     
 

<?php

/* ==================================================================

megainformatic cms 16.01.2011

http://www.megainformatic.ru

Автор: Синицин Андрей Сергеевич (megainformatic)


***************************

модуль формирования карты сайта map.php

==================================================================
*/

$pagetitle_overloaded = "Мега Информатик - Карта сайта"; /*данная переменная определяет новый заголовок для страницы, иначе он берется из модуля header.php */

include "blocks/header.php";
include "blocks/menu.php";

 

?>

 
     
  Созданную карту сайта надо выводить в блоке контент (content.php), но поскольку этот блок по-умолчанию отвечает за вывод статей сайта, то мы его не можем взять, требуется его переделка и тут можно поступить двояко - либо создать видоизмененный файл content.php, назвав его как то по-другому и подключив директивой include, либо просто взять весь код оттуда и внеся изменения добавить в модуль map.php, мы так и поступим - вот что надо взять из модуля content.php -  
     
 

<div id="infoleft">

<div id="infoleft_content" align="justify">
<font color="#0000FF" size="2" face="Verdana, Arial, Helvetica, sans-serif">Сегодня</font>
<?php
$mounth = date("n");
$day = date("j");
$year = date("Y");
$time = date("G:i ");
$mounth_ru = "";
switch ( $mounth )
{
case 1: {
$mounth_ru = "января";
break;
}

case 2: {
$mounth_ru = "февраля";
break;
}

case 3: {
$mounth_ru = "марта";
break;
}

case 4: {
$mounth_ru = "апреля";
break;
}

case 5: {
$mounth_ru = "мая";
break;
}

case 6: {
$mounth_ru = "июня";
break;
}

case 7: {
$mounth_ru = "июля";
break;
}

case 8: {
$mounth_ru = "августа";
break;
}

case 9: {
$mounth_ru = "сентября";
break;
}

case 10: {
$mounth_ru = "октября";
break;
}

case 11: {
$mounth_ru = "ноября";
break;
}

case 12: {
$mounth_ru = "декабря";
break;
}

}
echo "<font color=\"#0000FF\" size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\"> $day $mounth_ru $year года $time </font><br>";
?>
Здравствуйте!
Вы попали на исследовательско-креативный сайт Мега Информатик. Наша цель
- создание, накопление и популяризация знаний в области создания компьютерных
игр, а также собственно создание игр.

</div>

</div>

<div id="inforight">

<div id="inforight_content" align="justify">
Мега Информатик функционирует с 20 февраля 2006 года, когда был создан первый
сайт на хостинге pochta.ru. Много воды утекло с тех пор. Уже нет хостинга
boom.ru, на котором также размещался сайт, хостинг pochta.ru объединился
с qip.ru. Много событий произошло и в жизни самого сайта. О самых последних
новостях Вы сейчас и узнаете.
</div>

</div>



<!-- ====== CONTENT ================= -->

<div id="content-container" align="justify">

<div id="content">

 
     
  далее вставляем код, который непосредственно отвечает за оформление и вывод карты сайта  
     
 

<table width="85%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td>&nbsp;</td>
<td><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif">Карта
Сайта megainformatic.ru</font></td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>

<?php
include "config.php";

$pageid = 1;
$pagetitle = "сайт Мега Информатик - Новости";
//for ( $pageid = 1; $pageid <= 62; $pageid++ )
while ( $pagetitle != "" )
{
$pagetitle = "сайт Мега Информатик - Новости";

if ($rc = mysql_connect($dbhost, $dbuser, $dbpassw))
{
mysql_select_db($dbsite);
$table = "papers";

$sql = "SELECT * FROM $table WHERE pageid = '$pageid'";
$s = mysql_query($sql);

$a = mysql_fetch_array($s);
$pagetitle = $a[pagetitle];


if ($pagetitle == "" )
{
$pageid = 2;
$pagetitle = "сайт Мега Информатик - Новости";
break;
}

mysql_free_result($s);
}

echo "<tr>
<td>&nbsp;</td>
<td><p><a href=\"index.php?page=".$pageid."\"><font size='2'

face='Verdana, Arial, Helvetica, sans-serif'>".$pagetitle."</font></a></p></td>
<td>&nbsp;</td>
</tr>
";
$pageid++;
}

?>

</table>

</div>

</div>

<!-- =============/ CONTENT ================ -->

 
     
  и как обычно подключаем вывод нижней части страницы -  
     
  <?php
include "blocks/footer.php";
?>
 
     
  Другие модули оформить по шаблону можно аналогично.  
     
 

В следующих наших уроках нас ждут обновления системы на тему -

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

- отслеживание в админке списка статей, проектов, пользователей;

 
  [к содержанию] [назад] [далее]  
подробнее

     
  Веселый Буквоежка - игра  
     
 

Как создать игру ? - Программируем сами.

Рассмотрение программирования игр под 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
class CFle2Dlg : public CDialog
{
// Construction
public:
CFle2Dlg(CWnd* pParent = NULL); // standard constructor
~CFle2Dlg(); //определяем деструктор объекта CFleDlg

// Dialog Data
enum { IDD = IDD_FLE_DIALOG };

protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support


// Implementation
protected:
HICON m_hIcon;

// Generated message map functions
virtual BOOL OnInitDialog();
afx_msg void OnPaint();
afx_msg HCURSOR OnQueryDragIcon();
DECLARE_MESSAGE_MAP()

private:
CImage* pBigImage; //определяем объекты, в которых будут храниться изображения
CImage* pPlayImage; //формирующие внешний вид игровой оболочки
CImage* pBuyImage;
CImage* pOthesImage;

RECT m_rcClientBounds; //размеры рабочей области окна будем хранить здесь
RECT m_rcPlayImage; //аналогично будем хранить размеры изображений
RECT m_rcBuyImage;
RECT m_rcOthesImage;

void InitShell(); //описываем метод инициализации оболочки

bool TargetBtnArea(CPoint* CursorPos, RECT* aBtnArea); //метод попадания указателя мыши в область границ одной из кнопок игровой оболочки

public:
bool bPlayBtnUp; //индикаторы отпускания левой кнопки мыши над данной кнопкой
bool bBuyBtnUp; //игровой оболочки - используются для срабатывания нажатий
bool bOthesBtnUp; //этих кнопок
private:
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);

};

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

#include "stdafx.h"
#include "Fle.h"
#include "FleDlg.h"

#include "openwebpage.h" //подключаем модуль openwebpage.h и .cpp - эти модули выполняют открытие указанной веб-страницы и входят в комплект ПОЛНОГО ИСХОДНОГО КОДА игры ВЕСЕЛЫЙ БУКВОЕЖКА, который Вы можете приобрести всего за 200 рублей

о том, что еще входит в состав комплекта ПОЛНОГО ИСХОДНОГО кода Вы узнаете далее

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

 

#define bi_x 0 //определяем начальные координаты первого из 4х изображений
#define bi_y 0 //которые будут формировать внешний вид нашей игровой оболочки

//определяем имена файлов веб-страниц для кнопок <Еще игр> и <Купить>
#define OthesGamesUrl L"\\WebLinks\\index.htm"
#define BuyGameUrl L"\\WebLinks\\buy_fle.htm"

 


// CFle2Dlg dialog


CFle2Dlg::CFleDlg(CWnd* pParent /*=NULL*/)
: CDialog(CFleDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

pBigImage = NULL; //обнуляем экземпляры объектов класса CImage
pPlayImage = NULL;
//которые мы описали в заголовочном файле
pBuyImage = NULL;
pOthesImage = NULL;

bPlayBtnUp = false; //выставляем индикатор отпускания левой кнопки мыши
bBuyBtnUp = false; //над данной кнопкой игровой оболочки в false
bOthesBtnUp = false;

}

CFle2Dlg::~CFleDlg()
{


delete pBigImage; //при удалении объекта CFleDlg из памяти нужно удалить и эти объекты
delete pPlayImage;
delete pBuyImage;
delete pOthesImage;


}

void CFle2Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}

BEGIN_MESSAGE_MAP(CFleDlg, CDialog)
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
// ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
END_MESSAGE_MAP()


// CFle2Dlg message handlers

BOOL CFle2Dlg::OnInitDialog()
{
CDialog::OnInitDialog();

// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon


InitShell();
//выполняем инициализацию нашей игровой оболочки

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
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.

void CFle2Dlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CPaintDC dc(this); // device context for painting //выводим изображения на поверхности окна нашей игровой оболочки

 

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
// the minimized window.
HCURSOR CFleDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}

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

void CFle2Dlg::InitShell()
{

SetCurrentDirectory(AppRootDir);

pBigImage = new CImage();
pBigImage->Load(L"Media\\shell_window\\fle.jpg");

pPlayImage = new CImage();
pPlayImage->Load(L"Media\\shell_window\\fle_play.jpg");

pBuyImage = new CImage();
pBuyImage->Load(L"Media\\shell_window\\fle_buy.jpg");

pOthesImage = new CImage();
pOthesImage->Load(L"Media\\shell_window\\fle_other_games.jpg");

GetClientRect(&m_rcClientBounds); //получаем размеры рабочей области окна

int y = m_rcClientBounds.bottom - pPlayImage->GetHeight(); //координата y кнопки <Играть>
int x = 0;//координата x
m_rcPlayImage.left = x;
m_rcPlayImage.top = y;
m_rcPlayImage.right = x + pPlayImage->GetWidth();
m_rcPlayImage.bottom = y + pPlayImage->GetHeight();


x = x + pPlayImage->GetWidth(); //координата x для кнопки <Купить>
m_rcBuyImage.left = x;
m_rcBuyImage.top = y;
m_rcBuyImage.right = x + pBuyImage->GetWidth();
m_rcBuyImage.bottom = y + pBuyImage->GetHeight();

x = x + pPlayImage->GetWidth(); //координата x для кнопки <Еще игр>
m_rcOthesImage.left = x;
m_rcOthesImage.top = y;
m_rcOthesImage.right = x + pOthesImage->GetWidth();
m_rcOthesImage.bottom = y + pOthesImage->GetHeight();

}

//данный метод проверяет попадание указателя мыши в область указанной параметром aBtnArea кнопки


bool CFle2Dlg::TargetBtnArea(CPoint* CursorPos, RECT* aBtnArea)
{
if ( CursorPos->x >= aBtnArea->left &&
CursorPos->x <= aBtnArea->right &&
CursorPos->y >= aBtnArea->top &&
CursorPos->y <= aBtnArea->bottom )
return true;
else
return false;
}

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

void CFle2Dlg::OnLButtonUp(UINT nFlags, CPoint point)
{

CPoint pt = point;

bPlayBtnUp = TargetBtnArea(&pt, &m_rcPlayImage);
bBuyBtnUp = TargetBtnArea(&pt, &m_rcBuyImage);
bOthesBtnUp = TargetBtnArea(&pt, &m_rcOthesImage);

 

if ( bPlayBtnUp | bBuyBtnUp | bOthesBtnUp )
{
if ( bBuyBtnUp )
OpenSite(m_hWnd, BuyGameUrl);

if ( bOthesBtnUp )
OpenSite(m_hWnd, OthesGamesUrl);

if ( bPlayBtnUp )
{
EndDialog(IDOK);
StartD3DApp();
}
}

CDialog::OnLButtonUp(nFlags, point);
}

 


 
     
 

Несколько Важных нюансов:

1) Чтобы указанный код правильно работал нужно включить файлы openwebpage.h и openwebpage.cpp в состав Вашего проекта -

в окне Solution Explorer щелкаем правой кнопкой мыши пункт с названием проекта Fle2 и выбираем Add > New Filter

 
     
  включить файлы openwebpage.h и openwebpage.cpp в состав Вашего проекта  
     
 

Созданную группу именуем common, щелкаем по названию правой кнопкой мыши и выбираем Add > Existing Item, указываем на файлы openwebpage.h и openwebpage.cpp

Для этого удобнее в папке с проектом создать подпапку common и поместить оба эти файла туда.

 
     
  2) Будет не очень удобно, если exe файл Вашего проекта будет создаваться среди кучи других файлов. Рекомендую создать внутри папки проекта отдельную подпапку, а сам проект настроить таким образом, чтобы exe-файл попадал туда, т. е.  
     
 

В окне Solution Explorer выбираем пункт с названием нашего проекта - Fle2

выбираем пункты главного меню Project > Properties и в открывшемся окне настроек свойств выбранного проекта (не случайно я указал вначале выбрать Fle2 иначе откроются совсем другие свойства) выбираем пункт

Configuration Properties > General

а в окне справа в поле Output Directory указываем нужную нам подпапку для размещения exe-файла

 
     
  в окне справа в поле 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""; //рабочая папка приложения
__declspec(selectany) DWORD AppRootDirSize = MAX_PATH;

5) Откройте окно настроек проекта - нужно сначала выбрать в окне Solution Explorer пункт с названием проекта, а затем главное меню - Projects > Properties и

Configuration Properties > C++ > General

в поле Additional Include Directories

добавьте ссылку на папку common, размещенную внутри папки проекта -

common; Аналогичную настройку нужно выполнить для конфигурации Release.

 
     
  добавьте ссылку на папку common, размещенную внутри папки проекта  
     
 

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

 
     
  В окне 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] [далее]  
     
О чем сайт megainformatic.ru ?

За годы его существования, а создан он был в июне 2010 года,
цели значительно расширялись и углублялись.

В феврале 2006 года я впервые озадачился проблемой создания
сайта вообще. Кстати свой доступ в интернет у меня появился
в это же время.

Первые версии сайта были на бесплатных хостингах (narod, boom, pochta) и делал их на чистом
html.

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

Конечно случались и темы на околоигровые тематики.

В 2010 году я стал переходить на php.

Аналогично - цели сайта стали включать темы, посвященные проблемам
создания сайтов на php, а также разумеется включать вопросы использования
различных cms, js скриптов, особенностей верстки на html + css и многие
другие связанные с этим вопросы.

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

Кроме того, на текущий момент сайт включает множество моих статей посвященных
программированию на c++, delphi, применению движка fle game engine,
содержит готовые уроки о том, как начать с нуля и научиться самому
создавать игры - как рисовать, анимировать спрайты, как вставить их в игру,
как включить музыку в игре, одним словом освящаются все аспекты создания
полноценной игры.

Эти знания не теоретические. Опыт я черпаю из собственных игровых проектов,
которые делал и продолжаю делать.

Так что круг моих интересов - это графика, программирование и создание игр,
сайтов, и конечно музыка.

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

Конечно же есть статьи где я делюсь не только личным опытом, но и высказываю
дельные мысли по тем или иным вопросам не связанным с программированием
и играми.

Одним словом, читатель найдет на megainformatic.ru целый пласт истории
начиная от 2006 года по настоящий момент. Это все что меня интересовало
и интересует, а быть может еще будет интересовать и в будущем.

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



     
 

Основая задача сайта Мега Информатик - создание игр и накопление опыта в этой области. Накопленный опыт передается Вам дорогие читатели!

Основные направления деятельности над созданием игр:

- разработка игровой концепции;

- создание компьютерной 2d и 3d графики;

- написание программного кода на C++ или Delphi;

- озвучание игр: создание звуков, музыки, озвучание голосом;

- тестирование, продвижение созданных игровых проектов;

 
     
 

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

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

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

 
     
 

Что нужно, чтобы самому научиться делать игры ?

Конечно же упорство, стремление достичь поставленных целей, не останавливаться перед трудностями.

С технологической точки зрения Вам обязательно потребуются хотя бы минимальные знания английского, знания языка программирования C++ или Delphi и особенностей той платформы, для которой Вы будете разрабатывать игру.

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

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

Я создаю игры вот уже на протяжении 5 лет, и могу откровенно сказать, что поначалу это очень трудная, сложная и порой неблагодарная работа. К тому же не знаешь к чему это в конце-концов приведет. Потраченные усилия могут запросто пропасть впустую, особенно если забросить ранее начатое.

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

 
     
 

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

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

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

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

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



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


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