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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

megainformatic - Эмулятор ZX-Spectrum, БК-0010.01 и их работа в эмуляторе DosBox 0.74

megainformatic - Костя Коробкин - В гостях у тёти Светы (kk as) - онлайн комикс - страница 1

megainformatic - Костя Коробкин - В гостях у тёти Светы (kk as) - онлайн комикс - страница 2

megainformatic - Костя Коробкин - В гостях у тёти Светы (kk as) - онлайн комикс - страница 3

megainformatic - Костя Коробкин - В гостях у тёти Светы (kk as) - онлайн комикс - страница 4

megainformatic - Костя Коробкин - В гостях у тёти Светы (kk as) - онлайн комикс - страница 5

megainformatic - первый независимый онлайн-журнал комиксов ККК Костя Коробкин Комикс номер 1 март 2016

megainformatic - Костя Коробкин - В гостях у тёти Светы (kk as) - онлайн комикс - страница 6

megainformatic - Костя Коробкин - В гостях у тёти Светы (kk as) - онлайн комикс - страница 7

megainformatic - Эмулятор БК-0010.01 версия 2.6 для Windows 9x/Me/2000/XP автор Юрий Калмыков 2002 год

megainformatic - api получения готового решения для решения различных задач возникающих при создании сайта

megainformatic - Костя Коробкин - В гостях у тёти Светы (kk as) - онлайн комикс - страница 8

роман Eternity Вечность - автор Синицин Андрей megainformatic

роман Eternity Вечность - автор Синицин Андрей megainformatic - страница 2

роман Eternity Вечность - автор Синицин Андрей megainformatic - страница 3

роман Eternity Вечность - автор Синицин Андрей megainformatic - Windows Sockets 2, ping, Windows SDK 7, чем открыть hxs файл - страница 4

megainformatic - Размещение Вашей рекламы на нашем сайте

megainformatic - Костя Коробкин - В гостях у тёти Светы (kk as) - онлайн комикс - страница 9

megainformatic - Костя Коробкин - В гостях у тёти Светы (kk as) - онлайн комикс - страница 10

роман Eternity Вечность - автор Синицин Андрей megainformatic - В чём отличие в применении символов & и * в языке c++ ? также продолжаем изучать Windows Sockets 2 и пример simple - страница 5

megainformatic - Костя Коробкин - В гостях у тёти Светы часть 2 Живые машины (kk as) - онлайн комикс - страница 11

megainformatic - игра Шарики на лифте Серия 1 Разгони Лифт / Balls on Lift Level 1 Run The Lift версия 0.9.2 05.10.2016 / version 0.9.2 05.10.2016

megainformatic - Костя Коробкин - В гостях у тёти Светы часть 2 Живые машины (kk as) - онлайн комикс - страница 12

подробнее

     
 
Урок 2 Создаем и обрабатываем команды меню. Реализуем вывод текстуры в рабочую область D3D.
 
О том, что потребуется для данного урока читайте в основном разделе - уроки delphi directx 8.1
 
Далее у читателя подразумевается наличие базовых знаний языка Delphi.
 
[назад] [страница 2] [далее] [к содержанию]
 

В качестве основы мы возьмем исходный код шаблона стартового приложения Delphi DirectX 8.1 (или сокращенной D3D-приложения), который мы создали в предыдущем уроке

Но помните, что для его компиляции Вам нужна и сама библиотека Delphi DirectX 8.1 (папка с общим кодом)

или исходный код игры "Ну, Погоди!" с включенной обновленной библиотекой Delphi DirectX 8.1 (поддержка русских букв, 2D анимация и некоторые другие возможности).

 

Несколько важных замечаний.

Особенности создания и обработки пунктов меню Опции > Подсказка; Опции > Показ FPS

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

Самым простым по реализации является пункт меню Выход (Exit). Вот реализованный код его обработчика -

procedure TMainForm.ExitGameMenuClick(Sender: TObject);
begin

Close;
end;

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

 

При создании и реализации пунктов меню Опции > Подсказка; Опции > Показ FPS нужно учесть следующую особенность.

Для данных пунктов меню нужно установить свойство Checked в true во время их создания.

Для обработки данных пунктов меню применяется следующий обработчик:

procedure TMainForm.ShowFPSOptionItemClick(Sender: TObject);
begin
ShowFPSOptionItem.Checked := not ShowFPSOptionItem.Checked;

if g_d3dApp <> nil then
g_d3dApp.m_bShowFPSOn := ShowFPSOptionItem.Checked;
end;

Первая строка кода переключает пункт меню из включенного/выключенного состояния при его выборе.

Вторая строка проверяет наличие объекта d3d-приложения и устанавливает его свойство отвечающее за показ FPS в заданный режим.

Опции > Подсказка реализуется аналогично.

 
 
 
Теперь рассмотрим как формируется картинка представляющая экран игры.
 
Для этого Вам нужно обратиться к ее исходному коду. Вспомним схему функционирования D3D-приложения.
 
 

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

Следовательно, загрузка необходимых ресурсов должна осуществляться не в цикле отрисовки (Render3DEnvironment), а до него. Это происходит внутри метода FormShow > InitD3DApp.

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

 

В нашем случае игра достаточно проста, поэтому все ресурсы будут загружаться лишь однажды - во время старта приложения и происходить это будет внутри FormShow > InitD3DApp > g_d3dApp.Create_ > OneTimeSceneInit > CreateDisplayObjects

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

В коде игры "Ну, Погоди!" это сделано еще более изящным образом: приложение переходит в состояние инициализации asBeginInit и в этом состоянии внутри метода FrameMove происходит вызов методов -

LoadGameTextures;
RestoreGameTextures;

и сразу же переход в состояние
m_dwAppState := asInit;

Это Вы можете сами увидеть в исходном коде игры "Ну, Погоди!".

 

Суть работы при этом сводится к следующему (попробуйте выполнить поиск фразы asBeginInit с начала исходного файла Main.pas в проекте игры "Ну, Погоди!")

Первое найденное - перечисляемый тип TAppStates

Второе - метод constructor TD3DGameApp.Create; - т.е. начальным состоянием во время старта приложения является именно это (asBeginInit)

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

Четвертое место где будет найдено asBeginInit - уже упомянутый выше метод FrameMove.

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

 

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

Для этого Вам нужно скопировать папку Media из дистрибутива полной версии игры "Ну, Погоди!" и разместить ее внутри папки Вашего текущего проекта (где расположен exe-файл, создаваемый проектом при его компиляции).

Тогда Вы сможете добавить код выполняющий поставленную задачу, а именно:

нам нужно описать и реализовать методы

LoadGameTextures;
RestoreGameTextures;

DrawGameView;

Вы найдете их в исходном коде игры "Ну, Погоди!" и с легкостью сможете перенести в свой код.

 
Если же Вы немного затрудняетесь в этом, то рассмотрим, что нужно сделать.
 

Рассмотрим сначала простейший случай. Вам нужно загрузить текстуру

back.jpg

из папки Media\textures\

В объект класса TD3DImage2D, а затем использовать методы данного объекта для отображения в окне D3D внутри метода Render > DrawGameView > DrawGameScene > DrawGameElement

Как это реализовано в реальном коде игры "Ну, Погоди!" Вы можете увидеть сами.

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

В секции интерфейса объявляем константу с именем файла текстуры

interface

{...}

conts

BackTex = 'Media\textures\back.jpg';

В описание класса TD3DGameApp добавляем поле для объекта TD3DImage2D (данный класс реализован в модуле D3DGUI.pas, который присутствует ТОЛЬКО в исходном коде игры "Ну, Погоди!". В общедоступном архиве библиотеки Delphi DirectX 8.1 этого модуля нет!)

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

uses

{...}, D3DGUI;

backImage: TD3DImage2D;

и описание методов

procedure LoadGameTextures;
procedure RestoreGameTextures;

procedure InvalidateGameTextures;
procedure FreeGameTextures;

procedure DrawGameScene;

В секции реализации добавляем код для этих методов

implementation

{...}

procedure TD3DGameApp.LoadGameTextures;
var
hr: HResult;
begin
backImage := TD3DImage2D.Create(g_d3dApp.m_d3dfmtTexture);
if backImage = nil then begin
CleanUpAndDisplayError(GAME_ERR_NOTEXTURES);
PostMessage( m_hWndMain, WM_CLOSE, 0, 0 );
Exit;
end;

hr := backImage.InitDeviceObjects(m_pd3dDevice,
backTex);
if Failed(hr) then begin
CleanUpAndDisplayError(GAME_ERR_NOTEXTURES);
PostMessage( m_hWndMain, WM_CLOSE, 0, 0 );
Exit;
end;
end;

procedure TD3DGameApp.RestoreGameTextures;
begin
if backImage <> nil then
backImage.RestoreDeviceObjects;

end;

procedure TD3DGameApp.InvalidateGameTextures;
begin
if backImage <> nil then
backImage.InvalidateDeviceObjects;
end;

procedure TD3DGameApp.FreeGameTextures;
begin
SAFE_DELETE(backImage);
end;

procedure TD3DGameApp.DrawGameScene;
begin
if backImage <> nil then
backImage.Draw2(0, 0, 0, 0.83, 1,
DrawD3DImage2D_Filtered, 255);
end;

 

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

FrameMove -

function TD3DGameApp.FrameMove: HRESULT;
begin
case m_dwAppState of
asBeginInit: begin
LoadGameTextures;
RestoreGameTextures;
m_dwAppState := asInit;
end;
asInit: m_dwAppState := asEndInit;
asEndInit: m_dwAppState := asReady;

asReady: {UpdateInput};
asGame: {FrameMoveGameScene};
end;

result := S_OK;
end;

и Render > DrawGameView -

procedure TD3DGameApp.DrawGameView;
const
FillColor = $FF58B327;
begin
if not Assigned(m_pd3dDevice) then Exit;

// Begin the scene
if SUCCEEDED(m_pd3dDevice.BeginScene) then
begin
// Erase the screen
m_pd3dDevice.Clear( 0, nil, D3DCLEAR_TARGET or D3DCLEAR_ZBUFFER,
FillColor, 1.0, 0 );

DrawGameScene;


//CountFPS;
// End the scene
m_pd3dDevice.EndScene;
end;


end;

Не забудьте про правильное освобождение созданных ресурсов! - внутри - InvalidateDisplayObjects и DestroyDisplayObjects

function TD3DGameApp.InvalidateDisplayObjects: HRESULT;
begin
result := S_OK;

m_pGameFont.InvalidateDeviceObjects;

InvalidateGameTextures;
end;

function TD3DGameApp.DestroyDisplayObjects: HResult;
begin
FreeGameTextures;

SAFE_DELETE(m_pGameFont);

SAFE_DELETE(m_Camera);

SAFE_RELEASE(m_pd3dDevice);

result := S_OK;
end;

 

После этого изображение панели игры Ну, Погоди появится в рабочей области окна D3D.

Если оно выводится не целиком, значит Вам нужно увеличить размеры окна формы -

В инспекторе объектов для формы MainForm задайте размеры

MainForm.Width = 637

MainForm.Height = 432

Заметьте, что размеры заданные в для окна формы в инспекторе объектов имеют приоритет перед размерами рабочей области окна заданными внутри TD3DGameApp.Create. Это связано с тем, что рабочую область окна D3D в оконном режиме определяет окно, чей обработчик (Handle) мы передаем объекту DirectD3Device. Таким объектом у нас является панель RenderWindowPanel. Если Вы задавали для неё в инспекторе объектов свойство Align = alClient, то это как раз и объясняет такое поведение приложения.

Получается, что размеры окна формы MainForm определяют размеры панели RenderWindowPanel, а она в свою очередь и служит рабочей областью для вывода D3D-окна.

 
Если D3D-приложение переключается в полноэкранный режим, то рабочая область окна D3D разворачивается во весь экран, а ее размеры определяются не заданными размерами окна, а разрешением, которое будет использоваться D3D-приложением для полноэкранного режима, т.е. - 640х480, 800х600, 1024х768 пиксель или другое доступное разрешение.
 
В нашем следующем уроке мы рассмотрим работу D3D-приложения в оконном и полноэкранном режиме. Покажем какой код необходимо написать для этого и какие особенности нужно обязательно учитывать. Несмотря на то, что для игры "Ну, Погоди!" полноэкранный режим не предусмотрен, т.к. она этого не требует из-за своих особенностей - эмуляции экрана электронной игры, тема полноэкранного режима и работы в нём является базовой для всех Delphi DirectX игр, т.к. высокая производительность D3D-приложения достигается именно в этом режиме!
 
 
 
[назад] [страница 2] [далее] [к содержанию]
 
     
     
     
подробнее

We all live in a yellow submarine !

То есть - Все мы живем в желтой подлодке.

Давайте представим что наш земной шар - это большая пребольшая подлодка, которая парит в океане космоса.

Представили ?

Дух захватывает.

Правда масштабы Земли не позволяют это представить.

Тогда можно представить что-то поменьше - дом в котором Вы живете.

Вот это уже представляется легче.

А теперь представьте, что у вас есть какое-то личное дело, которое Вас всецело захватывает.

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

И вот, Вы понимаете, что уже не можете выйти за некие рамки дозволенного.

Вы хотите покорить космос, но увы.

У вас нет возможностей, чтобы покорить его.

Да, конечно, Вы можете фантазировать или играть в такие игры как kerbal space program, но выйти за пределы своей мини-вселенной, своего мира, Вы не можете.

Кто-то скажет: друг, зачем это тебе ? Довольствуйся малым. Тем что есть.

Согласен.

В жизни мы так и делаем. Каждый день. Каждый час. Каждый миг.

Душа просит всегда большего и если знаешь, что есть какой-то предел, стена, за который выйти нельзя, это удручает.

Известная песня Beatles доносит до нас эту мысль, но совершенно в другом ключе.

В позитивном - это уютный домик, в котором тебе живется хорошо.

А открытый космос - это неизвестность, таящая в себе опасность гибели.

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

Мы начинаем урок № 1380, посвященный изучению своего личного мира.

А как можно изучить личный мир, как не на своем примере ?

И если познать личный мир, то можно узнать кое-что и обо всем космосе.

Как это ?

Очень просто: если ты понимаешь самого себя, то в космосе найдешь только самого себя.

Ведь космос - это пространство, как зеркало.

Как можно познать пустоту ? Пространство ? Только познав себя.

Вот и получается, что познавая себя мы познаем космос, как это ни странно звучит.

к новым мирам

Так начинается новая игра в масштабах целой вселенной !

Или вот шарик в ямке - не самый удачный момент.

шарик в ямке - не самый удачный момент

Глава 1

Пришелец с другой планеты

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

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

- Привет ! - выдавил я из себя боязливо.

- А что, разве Вы меня видите ?

- Да Вы уже тут битый час круги меряете.

- Вообще-то мне запрещены контакты 1 рода. И уж тем более не разрешены контакты 2 рода.
Значит Вы меня видите ?

- Вижу.

- Это плохо.

- Вы пришелец ?

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

- Ну что ж. Все равно приятно встретить незнакомца из неизвестных миров.

- Что поделать. Такое случается. Иногда.

- Не посчитайте меня за наглеца, а не могли бы вы хоть немного рассказать о своем мире.
Об этой параллельной вселенной ?

- Конечно же могу. Если Вам это будет приятно и интересно.

- Я весь внимание.

- О! Ну что ж. Зовут меня Зеленый. И это всего лишь мой сон.

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

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

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

- Так значит для Вас это всего лишь Сон ?

- Выходит так.

- Забавно.

- Более того, необычно. И вам не кажется, что это открытие ! Сенсация. Правда толку от неё
мало.

- Почему ? Вы имеете в виду вот такие дальние межпланетные путешествия ?

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

- Но ведь это Ваш сон ?

- Конечно.






подробнее

     
  Создание своих Тем для WordPress  
     
  Введение  
     
 

Начнём с того, что, как мне кажется, будет вам интересно узнать из области сайтостроения.

Итак, даже если у Вас есть собственная CMS (самописная, как говорят), то всегда полезно знать, как устроены профессиональные CMS. Их великое множество - Joomla, Drupal, ModX, Dle, WordPress и т. д.

Стоит ли осваивать их все или достаточно выбрать какую то одну и прорабатывать её ?

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

На данном этапе я хотел бы познакомиться с созданием простого шаблона для CMS WordPress. Собственно этим мы сейчас и займёмся.

 
     
 

Для начала конечно вам необходимо установить denver и wordpress.

Ну а далее - вы займётесь собственно изучением данного урока.

 
     
 

Предположим, что Вы установили wordpress локально на свой компьютер в следующую папку -

C:\WebServers\home\localhost\www\wordpress_ru

 
     
  Если заглянуть в папку установленного wordpress, то там вы найдёте такой путь - wp-content\themes  
     
  Это и есть папка, внутри которой Вы можете размещать собственные шаблоны сайтов для WordPress. В WordPress они именуются Темами.  
     
 

Так что же нужно для того, чтобы создать собственную тему для WordPress ?

А нужно нам следующее:

 
     
  внутри папки themes создаем папку, например, mytheme  
     
 

Открываем эту созданную папку и внутри неё создаем такие файлы -

index.php

header.php

sidebar.php

footer.php

style.css

loop.php

functions.php

 
     
  Кроме того создайте здесь папку images, в которую будете помещать изображения, необходимые для оформления внешнего вида вашей темы.  
     
  Далее, вооружившись каким либо редактором, например, DreamWeaver или даже обычным Блокнотом добавляем в наши файлы следующий код  
     
  В файл index.php  
     
 

<?php
/**
* Главный файл шаблона темы
*
* Это изменяемый файл шаблона для темы WordPress
* и один из 2 обязательных файлов для темы (второй - это style.css).

* Используется для отображения страницы, в том случае, когда
* неопределены другие дополнительные варианты
* т. е., он совмещает вывод главной страницы, когда нет файла home.php.
* Более подробно: http://codex.wordpress.org/Template_Hierarchy
*
* @package WordPress
* @subpackage MyTheme
* @since MyTheme 1.0
*/

get_header(); ?>

<div id="container">
<div id="content" role="main">

<?php
/* Запуск цикла вывода постов блога.
* Если нужно переопределить данную возможность в дочерней теме тогда

* включите в папку новой темы файл loop-index.php для использования особенностей, описанных в нём.
*/

get_template_part( 'loop', 'index' );
?>
</div><!-- #content -->
</div><!-- #container -->

<?php get_sidebar(); ?>
<?php get_footer(); ?>

 
     
  В файл style.css мы добавим такой код  
     
  style.css  
     
  Файлы loop.php и functions.php также можете взять в готовом виде -  
     
  loop.php  
     
  functions.php  
     
  В файл header.php  
     
 

<?php
/**
* Заголовок (Header) для нашей темы.
*
* Отображает содержимое секции <head> и всё до блока <div id="main">
*
* @package WordPress
* @subpackage MyTheme
* @since MyTheme 1.0
*/

?><!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>" />
<title><?php
/*
* Выводим тег <title> в зависимости от содержимого страницы.
*/

global $page, $paged;

wp_title( '|', true, 'right' );

// Имя нашего сайта (блога).
bloginfo( 'name' );

// Добавляем описание для домашней/начальной страницы.
$site_description = get_bloginfo( 'description', 'display' );
if ( $site_description && ( is_home() || is_front_page() ) )
echo " | $site_description";

// Если нужно - добавляем номер страницы:
if ( $paged >= 2 || $page >= 2 )
echo ' | ' . sprintf( __( 'Page %s', 'twentyten' ), max( $paged, $page ) );

?></title>
<link rel="profile" href="http://gmpg.org/xfn/11" />
<link rel="stylesheet" type="text/css" media="all" href="<?php bloginfo( 'stylesheet_url' ); ?>" />
<link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>" />
<?php
/* Мы добавим немного JavaScript на страницы с комментариями для
* формирования поддержки сайтов с подпроцессными (threaded) комментариями (когда они используются).
*/

if ( is_singular() && get_option( 'thread_comments' ) )
wp_enqueue_script( 'comment-reply' );

/* Всегда ставим вызов wp_head() до закрытия тега </head>
* вашей темы, либо вы нарушите подключаемость многих плагинов (plugins), которые обычно используют этот обработчик (hook)
* для добавления элементов в <head> таких как
* стили (styles), скрипты (scripts), и мета теги (meta tags).
*/

wp_head();
?>
</head>

<body <?php body_class(); ?>>
<div id="wrapper" class="hfeed">
<div id="header">
<div id="masthead">
<div id="branding" role="banner">
<?php $heading_tag = ( is_home() || is_front_page() ) ? 'h1' : 'div'; ?>
<<?php echo $heading_tag; ?> id="site-title">
<span>
<a href="<?php echo home_url( '/' ); ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home"><?php bloginfo( 'name' ); ?></a>
</span>
</<?php echo $heading_tag; ?>>
<div id="site-description"><?php bloginfo( 'description' ); ?></div>

<?php
// Проверка условия, что это пост или страница, имеет сокращенное представление (thumbnail), либо располагается целиком
if ( is_singular() &&
has_post_thumbnail( $post->ID ) &&
(
/* $src, $width, $height */ $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'post-thumbnail' ) ) &&
$image[1] >= HEADER_IMAGE_WIDTH ) :
//Изображение в заголовке страницы
echo get_the_post_thumbnail( $post->ID, 'post-thumbnail' );
else : ?>
<img src="<?php header_image(); ?>" width="<?php echo HEADER_IMAGE_WIDTH; ?>" height="<?php echo HEADER_IMAGE_HEIGHT; ?>" alt="" />
<?php endif; ?>
</div><!-- #branding -->

<div id="access" role="navigation">
<?php
/* Разрешить экранным ридерам (screen readers)/ текстовым браузерам (text browsers) пропустить отображение меню навигации и получить все равно корректный вариант отображения*/ ?>
<div class="skip-link screen-reader-text"><a href="#content" title="<?php esc_attr_e( 'Skip to content', 'twentyten' ); ?>"><?php _e( 'Skip to content', 'twentyten' ); ?></a></div>
<?php
/* Наше навигационное меню. Если оно не заполнено, wp_nav_menu переключается к состоянию wp_page_menu. К меню применяется основная позиция из возможных. Если ничего не присвоено, используется меню с наименьшим ID*/ ?>
<?php wp_nav_menu( array( 'container_class' => 'menu-header', 'theme_location' => 'primary' ) ); ?>
</div><!-- #access -->
</div><!-- #masthead -->
</div><!-- #header -->

<div id="main">

 
     
  В файл sidebar.php  
     
 

<?php
/**
* Сайдбар (Sidebar) включает области для основных и вторичных виджетов (widget).
*
* @package WordPress
* @subpackage MyTheme
* @since MyTheme 1.0
*/

?>

<div id="primary" class="widget-area" role="complementary">
<ul class="xoxo">

<?php
/* Когда мы вызываем функцию dynamic_sidebar(), она будет разделять
* виджеты на области для этих виджетов. Если вместо этого функция возвратит false,
* тогда sidebar просто не существует, поэтому будет отображен
* сайдбар с содержимым по умолчанию.
*/

if ( ! dynamic_sidebar( 'primary-widget-area' ) ) : ?>

<li id="search" class="widget-container widget_search">
<?php get_search_form(); ?>
</li>

<li id="archives" class="widget-container">
<h3 class="widget-title"><?php _e( 'Archives', 'twentyten' ); ?></h3>
<ul>
<?php wp_get_archives( 'type=monthly' ); ?>
</ul>
</li>

<li id="meta" class="widget-container">
<h3 class="widget-title"><?php _e( 'Meta', 'twentyten' ); ?></h3>
<ul>
<?php wp_register(); ?>
<li><?php wp_loginout(); ?></li>
<?php wp_meta(); ?>
</ul>
</li>

<?php endif; // end primary widget area ?>
</ul>
</div><!-- #primary .widget-area -->

<?php
// A second sidebar for widgets, just because.
if ( is_active_sidebar( 'secondary-widget-area' ) ) : ?>

<div id="secondary" class="widget-area" role="complementary">
<ul class="xoxo">
<?php dynamic_sidebar( 'secondary-widget-area' ); ?>
</ul>
</div><!-- #secondary .widget-area -->

<?php endif; ?>

 
     
  В файл footer.php  
     
 

<?php
/**
* Шаблон для отображения подвала (footer).
*
* Содержит закрывающий блок id=main тег и весь контент
* после него. Вызывает sidebar-footer.php для нижележащих виджетов.
*
* @package WordPress
* @subpackage MyTheme
* @since MyTheme 1.0
*/

?>
</div><!-- #main -->

<div id="footer" role="contentinfo">
<div id="colophon">

<?php
/* Сайдбар в футере? Вы можете настроить
* ваш футер на 4 столбца виджетов.
*/

get_sidebar( 'footer' );
?>

<div id="site-info">
<a href="<?php echo home_url( '/' ) ?>" title="<?php echo esc_attr( get_bloginfo( 'name', 'display' ) ); ?>" rel="home">
<?php bloginfo( 'name' ); ?>
</a>
</div><!-- #site-info -->

<div id="site-generator">
<?php do_action( 'twentyten_credits' ); ?>
<a href="<?php echo esc_url( __('http://wordpress.org/', 'twentyten') ); ?>"
title="<?php esc_attr_e('Semantic Personal Publishing Platform', 'twentyten'); ?>" rel="generator">
<?php printf( __('Proudly powered by %s.', 'twentyten'), 'WordPress' ); ?>
</a>
</div><!-- #site-generator -->

</div><!-- #colophon -->
</div><!-- #footer -->

</div><!-- #wrapper -->

<?php
/* Всегда используем функцию wp_footer() до закрывающего тега </body>
* вашей темы, иначе вы повредите многие плагины, которые
* обычно используют этот обработчик (hook) для обращения к JavaScript файлам.
*/

wp_footer();
?>
</body>
</html>

 
     
  Теперь Вам остается только активировать созданную тему через админку WordPress и увидеть результат !  
     
  В следующем нашем уроке мы разберем как создается меню навигации.  
     
подробнее

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

Найти их на самом деле можно. Для этого пишем любой пришедший в голову адрес сайта -

happymusic.ru

Такой сайт не найден.



Если повезет и сайт будет найден - вводим его адрес в поисковую систему.

Если ссылок нет - нам повезло ! Мы нашли сайт который есть, но которого нет в поисковой системе.

cosmos.net

Такого сайта нет в google, а в яндексе есть лишь ссылка, но без описания.

Следующий этап - найти сайт который бы был нам полезен или интересен.

Развивая свою мысль таким образом - мы выработаем способ поиска сайтов, существующих вне поисковых систем.

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

Но вдруг найдётся и что-то уникальное, интересное или неизвестное никому ?

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



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

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

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

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



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


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