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


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

megainformatic - СССР - Создаем Сайт Своими Руками - Выводим дату и время в формате RU
        СССР - Создаем Сайт Своими Руками - конструируем свой сайт - полезные статьи для на
подробнее...

Теги создание сайтов, создание игр, дизайн, игры, информатика, уроки photshop, php, c++, музыка, delphi, 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 - Первый старт

Введение в программирование игр на С++ для платформы DirectX 9 - Меняем иконку приложения

Введение в программирование игр на С++ для платформы DirectX 9 Добавляем другую модель

Введение в программирование игр на С++ для платформы DirectX 9 Программирование игр в directx. Hello, World!

Введение в программирование игр на С++ для платформы DirectX 9 Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008

Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008 - Урок 1 Основные операторы языка C++

Разбираем конструкции языка C++ на примере работы в Microsoft Visual Studio 2008 - Урок 1 Основные операторы языка C++ (часть 2)

Урок 2 Написание Win32-приложений. Обзор стартового кода Win32-приложения. Добавление ресурса текстовая строка

Урок 3 Создание Win32-приложений. Создание меню и простых диалоговых окон.

Урок 4 Создание Win32-приложений. Стандартные диалоги. Изучение сопутствующих конструкций языка. Консольные Win32-приложения. Указатели. Ссылочный тип. Массивы.

Урок 4 часть 2 Win32. Диалог выбора цвета, смена цвета фона окна приложения

Написание приложения DirectX9c + MFC в среде MSVS 2005

megainformatic - Создание компьютерных игр на основе DirectX в среде Delphi 6, 7

megainformatic - Создание компьютерных игр на основе DirectX в среде Delphi 6, 7 - Почему избраны DX8 и Delphi ?

megainformatic - Основы IDirectMusic8 в среде Delphi6-7

megainformatic - Основы DirectInput8 в среде Delphi 7

megainformatic - Основы DirectSound8 в среде Delphi6-7

megainformatic - Плагин для 3DS MAX из DX9 SDK

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2)

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 2

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 3

megainformatic - Мастер-класс: Создание модели и текстуры Коммандного Центра (как в StarCraft 2) Часть 4

подробнее

     
     
  Добро пожаловать в систему управления сайтом 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";
?>
 
     
  Другие модули оформить по шаблону можно аналогично.  
     
 

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

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

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

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

     
 
megainformatic cms free

Быстрая и Компактная Система Управления Вашим Сайтом - megainformatic cms express files

megainformatic cms express files - это простое, быстрое и очень компактное решение для создания первого вашего сайта. НЕ ИСПОЛЬЗУЕТ базы данных mysql. Вместо этого используются файловые базы данных. Поэтому Вы можете использовать систему даже на хостинге с поддержкой php, но без поддержки баз данных my sql.

Очень проста в установке - достаточно вам скопировать все файлы на ваш хостинг и сайт готов к работе !!!

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

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

Быстрая и Компактная Система Управления Вашим Сайтом - megainformatic cms express files

Особенности:

- очень компакта и быстра в работе и развертывании сайта;

- открытый исходный код на php;

- быстрая и простая установка;

- подробное описание возможностей;

 
     
 

Чтобы создать свой сайт быстро и легко - приобретите megainformatic cms express files всего за 100 рублей, получите дистрибутив, распакуйте его и скопируйте полученные файлы на свой хостинг.

Ваш сайт готов к работе !!!

 
     
  Для добавления новых статей на ваш сайт - достаточно выложить файл контента в нужную папку, например papers/my_paper1  
     
 

А затем добавить описание в файл data/papers.csv для этой статьи.

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

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

 
     
 

Если возможности megainformatic cms express files, вам кажутся ограниченными и Вы хотите чего-то большего - обратите внимание на следующие продукты -

megainformatic cms e-pro

 
     
  megainformatic cms e-shop  
     
  megainformatic cms e-mailer  
     
  Удачи вам в создании собственного виртуального интернет-пространства !!!  
     
     
     
подробнее

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

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

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

 
     
  Нужно задать радиус размытия порядка 50 пикселей и нажать <Да>, а вообще всё будет зависеть от Вашего вкуса и опыта. Это придаст больше реалистичности облаку.  
     
  Далее при помощи Редактирование > Трансформирование > Масштабирование уменьшаем облако до нужных размеров  
     
  Далее при помощи Редактирование > Трансформирование > Масштабирование уменьшаем облако до нужных размеров  
     
  Растягивая мышью за управляющие маркеры  
     
  Растягивая мышью за управляющие маркеры  
     
  Затем можно дублировать слои и перемещать их в новое место. Но так мы получим абсолютно одинаковые облака  
     
  Затем можно дублировать слои и перемещать их в новое место. Но так мы получим абсолютно одинаковые облака  
     
  Поэтому нужно сделать для них разный масштаб, можно также применить другие трансформации, можно изменять форму облаков используя инструмент Клон-Штамп  
     
  После внесения этих дополнений можно склеить все слои с облаками в один слой  
     
  Поэтому нужно сделать для них разный масштаб, можно также применить другие трансформации, можно изменять форму облаков используя инструмент Клон-Штамп  
     
  Инструмент Клон-Штамп работает по следующему принципу - Выбираем инструмент Клон-Штамп, нажимаем и удерживаем клавишу [Alt] и щелкаем левую кнопку мыши в том месте изображения, куда наведен указатель Клон-Штампа - для взятия образца  
     
  Выбираем инструмент Клон-Штамп, нажимаем и удерживаем клавишу [Alt] и щелкаем левую кнопку мыши в том месте изображения, куда наведен указатель Клон-Штампа - для взятия образца  
     
  далее отпускаем [Alt] и щелкаем указывая мышью там, где хотим поставить взятые образцы изображения -  
     
  далее отпускаем [Alt] и щелкаем указывая мышью там, где хотим поставить взятые образцы изображения  
     
  Таким образом, получается, что Клон - Штамп копирует куски изображения, позволяя вставлять их в новое место. Регулируя размер Кисти Клон-Штампа, жесткость её краев, Непрозрачность, Опцию Выравнивание и другие доступные параметры можно не просто делать копии кусков изображения, но и видоизменять их, менять "на-лету" форму изображения. Клон - Штамп широко применяется при ретуши старых фотографий для заделки повреждений - трещин, царапин, грязи и прочего. Т. е. это не просто инструмент копирования, но и достаточно мощный инструмент видоизменения - надо только набраться опыта в работе в с ним. Это мы и будем делать на протяжении всех наших уроков.  
     
  3) на отдельном слое создаем изображение дороги - для этого Вам понадобится скрыть все слои, кроме нового, который нужно создать, назвав Дорога или Road, для Кисти лучше выбрать Пурпурный оттенок, размер кисти задать примерно 2-4 пикселя, жесткость краев 70%, непрозрачность 45%  
     
  3) на отдельном слое создаем изображение дороги - для этого Вам понадобится скрыть все слои, кроме нового, который нужно создать, назвав Дорога или Road, для Кисти лучше выбрать Пурпурный оттенок, размер кисти задать примерно 2-4 пикселя, жесткость краев 70%, непрозрачность 45%  
     
  Далее ориентируясь на изображение дороги на фото, создаем контуры дороги -  
     
  Далее ориентируясь на изображение дороги на фото, создаем контуры дороги -  
     
  Я специально показал на рисунке выше дорогу на белом фоне, у Вас в качестве фона на нижележащем слое должна быть фотография, таким образом Вам всего лишь нужно будет обвести дорогу по контуру кистью  
     
  Далее на отдельном, расположенном под контуром дороги слое выполняем закраску дороги базовым цветом, можно слегка варьировать оттенки, что придаст больше живости и реалистичности  
     
   
     
  Контуры дороги теперь можно сделать черного цвета - см. рисунок Выше. Обратите внимание, что делать это нужно на слое Road, а не на слое, где у Вас заливка дороги, иначе черной станет не контур, а вся дорога !  
     
  Чтобы контуры дороги не слишком выделялись на фоне заливки, а плавно переходили в него их можно сделать полупрозрачными - изменив непрозрачность для слоя с контурами дороги -  
     
  Чтобы контуры дороги не слишком выделялись на фоне заливки, а плавно переходили в него их можно сделать полупрозрачными - изменив непрозрачность для слоя с контурами дороги  
     
  мазки, которыми делалась закраска заливки дороги можно перемешать между собой, используя инструмент Размытие - это сделает плавными переходы между отдельными контрастирующими по цвету областями, этого же самого эффекта можно добиться выделив всю заливку дороги инструментом Волшебная палочка, с последующим применением Размытия по Гауссу.  
     
  мазки, которыми делалась закраска заливки дороги можно перемешать между собой, используя инструмент Размытие - это сделает плавными переходы между отдельными контрастирующими по цвету областями, этого же самого эффекта можно добиться выделив всю заливку дороги инструментом Волшебная палочка, с последующим применением Размытия по Гауссу.  
     
  Далее используя Кисть и оттенки зеленого и желтого рисуем траву, кусты. Детально можно нарисовать лишь по одному кусту, а затем размножить кусты используя Клон-Штамп  
     
  используя Кисть и оттенки зеленого и желтого рисуем траву, кусты  
     
  В итоге этих работ у Вас должно получиться что-то подобное -  
     
  добавляем еще больше растительности  
     
  Отдельные элементы удобнее располагать на отдельных слоях, я надеюсь это Вы уже прочно усвоили  
     
  Аналогично создаются небольшие деревца вдалеке. Для большего эффекта к ним можно применить небольшую степень Размытия по Гауссу  
     
  рисуем небольшие деревца находящиеся вдалеке  
     
  И наконец лес вдалеке, на линии горизонта можно полностью нарисовать Кистью, а затем применить к изображению более сильное Размытие по Гауссу  
     
  создаем удаленный лес на горизонте  
     
  Пейзаж готов !  
     
  [содержание] [страница 2] [страница 3] [страница 4] [далее]  
     
подробнее

     
  Уроки Photoshop  
     
  Рисуем волка из мультфильма  
     
  30/10/2008  
     
 

Как нарисовать персонажа в Photoshop?

Попробуем изобразить вот такого волка -

 
     
   
     
  [щелкнув по изображению раскрашенного волка можно открыть вариант в натуральную величину]  
     
  [к началу] [страница 2] [страница 3] [страница 4]  
     
  Следующее затруднение, которое у Вас возникнет заключается в следующем:  
     
   
     
  Когда Вы будете заливать области представленные замкнутыми контурами, например глаза, как на этом рисунке, то после выполнения заливки заметите, что вдоль краев осталась незакрашенная область. Она объясняется тем, что контуры выполнялись кистью с нежесткими, полупрозрачными краями. Устранить это можно подрисовав края кистью вручную или применением эффекта перехода (Blending) представленного обводкой (Stroke) -  
     
  Выберите слой с заливкой глаз и щелкните в панели слоев по нему правой кнопкой мыши, в появившемся контекстном меню выберите Blending Options -  
     
   
     
  в открывшемся окне щелкните пункт stroke  
     
   
     
  вместо красного цвета обводки задайте белый, размер обводки уменьшите до 2 пиксель -  
     
   
     
  обратите внимание - для отображения параметров эффекта Stroke нужно не только поставить галочку напротив данного пункта, но и сделать, чтобы он был выделен также как на рисунке.  
     
  После применения эффекта обводки Вы увидите в панели слоев появление пункта обозначающего применение эффекта. В дальнейшем Вам потребуется работа с изображением в таком виде, чтобы эффекты были растрированы, т.е. превращены из эффектов в пиксели изображения. Чтобы превратить эффект в растровое изображение достаточно создать пустой слой, связать этот пустой слой со слоем, в котором мы хотим растрировать эффекты и выполнить склеивание связанных слоев.  
     
   
     
   
     
  Для связывания слоев достаточно щелкнуть мышью в пустом окошке напротив слоя (см. рисунок выше - обведено зеленым).  
     
  После этого пункта эффекта в названии слоя исчезает, а сам эффект становится частью изображения, как будто Вы изобразили его сами. Т.е. полученное можно обрабатывать дальше - прорисовывать, улучшать, добавлять новые эффекты и т.п.  
     
  Теперь переходим к работе со свето-тенью. Всё что Вам потребуется - это новые слои, расположенные под слоем с контурами, но над слоями с раскраской, кисть различной степени прозрачности и оттенки цветов которые Вы уже применили при раскрашивании.  
     
  Используя более светлые оттенки чем основные Вам нужно нарисовать у волка участки, которые имеют блик или лучше освещены. Используя более темные оттенки Вы изобразите соответственно тени.  
     
  Вот что у Вас примерно должно получиться -  
     
   
     
  Теперь рассмотрим как это выполнить  
     
  Создаем новый слой и располагаем его так, чтобы он находился над слоями с раскрашенными элементами, но под слоем с контурами -  
     
   
     
  Выберите инструмент кисть и сделайте у нее нежесткие края и меньшую непрозрачность -  
     
   
     
  На новом созданном слое, например под именем body_shadows начинаем рисовать тени. Цвет теней можно задать следующим образом:  
     
  Наводим курсор кисти на участок изображения, с которого хотим взять цвет и нажав клавишу [Alt] превращаем кисть в пипетку. Пипетка служит для взятия цвета пикселя под ее курсором. После этого в окне диалога выбора цвета делаем из выбранного более темный цвет -  
     
   
     
   
     
   
     
   
     
  Теперь используя выбранный цвет рисуем тени. Области для рисования теней показаны на рисунке ниже -  
     
   
     
  Т. е. предположив, что источник освещения находится слева и над головой волка в соответствии с этим изображаем тени на футболке - от рук, от головы. Кроме того тени могут быть во впалых участках тела. По аналогии с этим рисуются и светлые участки и блики, для светлых участков цвет соответственно должен быть светлее основного тона раскрашиваемого элемента (см. рисунок) или вообще используйте белый цвет или близкие к белому оттенки серого.  
     
  После того, как Вы закончите волк будет готов!  
     
  Если Вы всё поняли и у Вас всё получилось, то можно двигаться дальше - выполнить анимирование волка, например нарисовать анимацию хотьбы.  
     
  Об этом рассказано дальше  
     
     
     
     
     
     
     
     
  [назад] [далее]  
     
  [Все уроки]  
     
 

Что нужно знать для создания DirectX-приложений на C++ в среде
Microsoft Visual Studio 2008

 
     
  Урок 4 Создание Win32-приложений. Стандартные диалоги. Изучение
сопутствующих конструкций языка. Консольные Win32-приложения.
Указатели. Ссылочный тип. Массивы.
 
     
 

Данный урок является введением в программирование на C++ в MSVS 2008

Вам нужно иметь установленную среду Microsoft Visual Studio 2005 или 2008 (можно триал),

и DirectX SDK 9 версии, или лучше самой последней - DirectX SDK August 2008.

 
     
  [назад] [далее] [к содержанию]  
     
  Мы рассматриваем основы программирования на C++ в среде программирования MSVS 2008  
     
 

25/11/2008, 27/11/2008

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

меню Save и Load

Работа с общими диалогами в Win32-приложениях описана в разделе

MSVS 2008 > Help > Contents > Win32 and COM Development > User Interface >

Windows User Experience >

Windows Management > Windows User Interface > User Input > Common Dialog Box Library

 
     
 

//++ Учебное задание: использование общего диалога для выбора цвета

Работа с общим диалогом выбора цвета описана в разделе

MSVS 2008 > Help > Contents > Win32 and COM Development > User Interface >

Windows User Experience >

Windows Management > Windows User Interface > User Input > Common Dialog Box Library >

Common Dialog Box Library Overviews > Color Dialog Box

Сопутствующие необходимые знания

chcol.lpCustColors - использование массивов

Требуется указатель на массив из 16-ти элементов типа COLORREF (статичный или локальный)

Работа с массивами в приложениях Win32 (Native Development) описана в разделе справки -

MSVS 2008 > Help > Contents > Development Tools and Languages > Visual Studio >

Visual C++ > Reference >

C/C++ Languages > Declarators > Arrays

 
     
 

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

элементов Visual C++

Работа с консольными приложениями позволит Вам освоить наиболее общие конструкции

языка

Visual C++ не вдаваясь в детали создания интерфейса пользователя.

Для создания консольного приложения Win32 нужно закрыть текущий солюшн (Close solution)

с которым Вы

работали и выбрать File > New > Project > Win32 > Win32 Console Application, указать имя и папку

для создаваемого проекта.

Добавить в файл с исходным кодом необходимый код, выполнить сборку Build, а

для просмотра результатов

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

Стандартные > Командная строка

 
     
 

Например Ваш скомпилированный файл находится в папке

H:\Andrew\work\gamecre\DXSDK_Aug2008\MyWorks\NuPogodiFull\NuPogodiFull_vs2008\

training\LearnPointers\Debug

 
     
 

Тогда, в окне Коммандной строки набираем

H:

и нажимаем Enter. Тем самым переходим на диск H.

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

в коммандной строке набираем

cd

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

получается

cd H:\Andrew\work\gamecre\DXSDK_Aug2008\MyWorks\NuPogodiFull\NuPogodiFull_vs2008\

training\LearnPointers\Debug

нажимаем Enter.

Теперь мы находимся в этой папке.

Можете применить команду dir и вы увидите содержимое этого каталога.

Для очистки экрана консоли удобно использовать команду очистки экрана cls

Теперь Вам остается только набрать имя нужного exe-файла любыми буквами

(хоть большими, хоть маленькими, хоть вразнобой - никакой разницы, т.к. консоль

запускает файлы по именам

без учета регистра (заглавные/строчные)

Далее нажать Enter и увидеть результат работы Вашего консольного приложения.

 
     
 

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

запускать созданное

из консоли наблюдая и анализируя полученные результаты.

 
     
 

Пример кода для понимания указателей (Pointers) - пример взят из MSVS Documentation

Для проверки и экспериментов с кодом используйте консольное приложение Win32

 
     
  // pointer.cpp
// compile with: /EHsc
#include <iostream>
int main() {
int i = 1, j = 2; // локальные переменные, размещаются в стеке
int *p; // указатель на целое (int)

// a pointer may be assigned to "point to" the value of
// another variable using the & (address of) operator

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

p = & j;

// since j was on the stack, this address will be somewhere
// on the stack. Pointers are printed in hex format using
// %p and conventionally marked with 0x.

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

с использованием
// %p в функции printf_s и по соглашению помечаются 0x.

printf_s("0x%p\n", p);

// The * (indirection operator) can be read as "the value
// pointed to by".
// Since p is pointing to j, this should print "2"

// Оператор * (оператор разыменования) может быть читаем как "указатель на значение"
// Поскольку p указывает на j, будет выведено "2"

printf_s("0x%p %d\n", p, *p);

// changing j will change the result of the indirection
// operator on p.

// изменение j изменит результат применения оператора разыменования
// к p.

j = 7;
printf_s("0x%p %d\n", p, *p );

// The value of j can also be changed through the pointer
// by making an assignment to the dereferenced pointer

// значение j может быть также изменено посредством указателя
// выполнением присвоения к разыменованному указателю

*p = 10;
printf_s("j is %d\n", j); // j теперь равно 10

// allocate memory on the heap for an integer,
// initialize to 5

// выделение памяти на куче (heap) для целого и,
// инициализация значением 5

p = new int(5);

// print the pointer and the object pointed to
// the address will be somewhere on the heap

// печать указателя и объекта на который указывает адрес
// где-то на куче (heap)

printf_s("0x%p %d\n", p, *p);

// free the memory pointed to by p

// освобождение памяти на которую указывает p
delete p;

// At this point, dereferencing p with *p would trigger
// a runtime access violation.

// с этого места разыменование p как *p будет давать
// ошибку нарушения прав доступа к памяти во время выполнения программы

// Pointer arithmetic may be done with an array declared
// on the stack or allocated on the heap with new.
// The increment operator takes into account the size
// of the objects pointed to.

// Вычисления с указателями могут выполняться для массива объявленного
// на стеке или выделенного на куче с помощью new.
// Оператор инкремента использует размер
// объектов на которые указывает указатель

p = new int[5];
for (i = 0; i < 5; i++, p++) {
*p = i * 10;
printf_s("0x%p %d\n", p, *p);
}

// A common expression seen is dereferencing in combination
// with increment or decrement operators, as shown here.
// The indirection operator * takes precedence over the
// increment operator ++.
// These are particularly useful in manipulating char arrays.

// Часто встречаемое выражение разыменования в комбинации
// с операторами инкремента или декремента выглядит так, как показано ниже.
// Оператор разыменования * выполняется перед оператором инкремента ++
// Это эффективно при манипуляциях с символьными массивами

char s1[4] = "cat";
char s2[4] = "dog";
char* p1 = s1;
char* p2 = s2;

// the following is a string copy operation

// операция копирования строки выглядит так -
while (*p1++ = *p2++);

// s2 was copied into s1, so now they are both equal to "dog"

// s2 копируется в s1, так что теперь обе строки содержат слово "dog"
printf_s("%s %s", s1, s2);
}

 
     
 

А вот пример демонстрирующий использование указателей в структурах данных, в данном случае

это связанный список. Пример также взят из MSVS Documentation

 
     
  // pointer_linkedlist.cpp
// compile with: /EHsc
#include <iostream>
using namespace std;

struct NewNode {
NewNode() : node(0){}
int i;
NewNode * node;
};

void WalkList(NewNode * ptr) {
if (ptr != 0) {
int i = 1;
while (ptr->node != 0 ) {
cout << "node " << i++ << " = " << ptr->i << endl;
ptr = ptr->node;
}
cout << "node " << i++ << " = " << ptr->i << endl;
}
}

void AddNode(NewNode ** ptr) {
NewNode * walker = 0;
NewNode * MyNewNode = new NewNode;
cout << "enter a number: " << endl;
cin >> MyNewNode->i;

if (*ptr == 0)
*ptr = MyNewNode;
else {
walker = *ptr;
while (walker->node != 0)
walker = walker->node;

walker->node = MyNewNode;
}
}

int main() {
char ans = ' ';
NewNode * ptr = 0;
do {
cout << "a (add node) d (display list) q (quit)" << endl;
cin >> ans;
switch (ans) {
case 'a':
AddNode(&ptr);
break;
case 'd':
WalkList(ptr);
break;
}
} while (ans != 'q');
}

 
     
 

примеры ссылочных (reference) типов -

int &i;
int &i, &j;

 
     
 

читается как ссылка (адрес) на объект i. Синтаксически работа со ссылками полностью аналогична

работе с объектами -

// references.cpp
#include <stdio.h>
struct S {
//структура S содержащая поле i с типом short
short i;
};

int main() {
S s; // Declare the object.
объявляем объект
S& SRef = s; // Declare the reference.
объявляем ссылку
s.i = 3;

printf_s("%d\n", s.i);
printf_s("%d\n", SRef.i);

SRef.i = 4;
printf_s("%d\n", s.i);
printf_s("%d\n", SRef.i);
}

 
     
 

Определение массивов, работа с массивами

объявление массива и работа с массивом времени выполнения -

// arrays.cpp
// compile with: /EHsc
#include <iostream>

int main() {
using namespace std;
int size = 3, i = 0;
//определяем размер массива и индекс

int* myarr = new int[size]; //объявляем массив из size элементов с типом int и выделяем ему

память на куче (heap)

for (i = 0 ; i < size ; i++)
myarr[i] = 10;
//заносим значения в элементы массива

for (i = 0 ; i < size ; i++)
printf_s("myarr[%d] = %d\n", i, myarr[i]);
//печатаем значения элементов массива

delete [] myarr; //освобождаем память
}

 
     
 

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

примерами кода возвращаемся к нашей задаче -

//++ Учебное задание: использование общего диалога для выбора цвета

Работа с общим диалогом выбора цвета описана в разделе

MSVS 2008 > Help > Contents > Win32 and COM Development > User Interface >

Windows User Experience >

Windows Management > Windows User Interface > User Input > Common Dialog Box Library >

Common Dialog Box Library Overviews > Color Dialog Box

Сопутствующие необходимые знания

chcol.lpCustColors - использование массивов

Требуется указатель на массив из 16-ти элементов типа COLORREF (статичный или локальный)

Реализация данной задачи - вывод диалога выбора цвета например при нажатии пункта меню

Save будет выглядеть так (код нужно добавить в функцию WndProc) - показана в следующем уроке

 
     
 

в следующем уроке показана реализация выбора цвета из окна диалога цвета (Color Dialog) и

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

 
     
     
     
     
     
     
     
     
     
  [назад] [далее] [к содержанию]  
megainformatic live chat
Начать беседу
X
 

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



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


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