Воскресенье, 17 Февраля 2019, 02:36

Приветствую Вас Гость

Меню сайта
Категории каталога
Создание игр [317]
Статьи об общих понятиях связанных с созданием игр.
Программирование [69]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [124]
Статьи о программах для создания игр, уроки и описания.
Софт [28]
Различные программы, в том числе в помощь игроделам.
2D-графика [11]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [10]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [5]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [98]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [74]
Статьи, которые не вошли в определённые разделы.
Наш опрос
Разработка игр для вас:
Всего ответов: 10872
Главная » Статьи » Создание игр

Своя игра за день (часть 2)
В прошлом уроке я рассмотрел простейший пример - подключение и запуск GEGE, а в этом уроке я покажу как вывести спрайт.

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


Скажу сразу, что нам нужно подключить ещё 1 файл (esprite.h) и библиотеку (gegeh.lib).


Code
#include <esprite.h>
#pragma comment(lib,"gegeh.lib")


Теперь нам нужно создать функцию, которую движок будет выполнять каждый кадр:

Code

bool MyRenderFunc(float dt)
{
return 0;
}


Функция пока что ничего не делает, но это не на долго...

Теперь нужно заменить:
Code
g->Engine_Start(0);

на
Code
g->Engine_Start(MyRenderFunc);


Теперь движок будет выполнять эту функцию каждый кадр, хоть она и ничего не делает... Давайте ка выведем спрайт! Для этого нам нужно:
а) Загрузить текстуру для спрайта
б) Создать спрайт
в) Рисовать спрайт каждый кадр

Ну что бы загрузить текстуру, её нужно сначала объявить:
Code
ETEXTURE t;

И загрузить сразу после инициализации движка:
Code
t=g->Texture_Load("texture.png");


Ну это вроде есть... Теперь нужно разобраться со спрайтами...
Объявляем указатель на спрайт:
Code
ESprite *spr;

И создаем его после загрузки текстуры:
Code

/*
t - текстура
0, 0 - начало координат текстуры
64, 32 - размеры
*/
spr=new ESprite(t,0,0,64,32);


Ну вот теперь нужно изменить саму функцию рисования, что бы хоть что-то рисовалось!

Добавляем в тело функции MyRenderFunc следующее:
Code
g->Render_BeginScene();
g->Render_ClearScene(100,100,100);
g->Render_EndScene();


1 строка - начинаем рисовать
2 строка - очищаем окно в RBG цвет (100, 100, 100)
3 строка - заканчиваем рисование и выводим на экран результат

Теперь нужно нарисовать наш спрайт, а для этого после очистки введем:
Code

spr->Render(0,0);


Это нарисует наш спрайт в верхнем левом углу. Ну вот собственно и всё! Исходный код прилагается...

Категория: Создание игр | Добавил: Demeron (04 Сентября 2011)
Просмотров: 11091 | Комментарии: 6 | Рейтинг: 5.0/8 |
Теги: для новичков, Своя игра за день, gege, Спрайты, урок, Обучение, Вывести спрайт, движок, 2d, C++
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Своя игра за день (часть 2)», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

Всего комментариев: 6
+1-
6 goldsphere   (03 Июня 2012 15:17)
goldsphere
Quote
t=g->Texture_Load("texture.png");

а где должен лежать этот файл?

+-2-
4 Demeron   (05 Сентября 2011 17:04)
Demeron
Code
у меня что-то со зрением, или структура движка и даже часть имен функций взяты из ХГЕ?

структура и часть имён - да

Code
Извиняюсь, конечно, но не кажется ли позорным поменять названия, указатели, имена функций и файлов, а также урезать функционал в несколько раз, а затем выдавать HGE за свой движок?

Я от HGE взял только рендер примитивов, структуру и класс для работы с ресурсами, всё остально писал сам (могу дать исходник).

+0-
5 KpoJIuk   (05 Сентября 2011 20:02)
окей, допустим так.
внимание, вопрос: если spr=new ESprite(...);, то почему не освобождаем память? движок сам об этом заботится?

+-1-
3 AGENTX001   (05 Сентября 2011 16:22)
AGENTX001опа...

+1-
2 SanAV   (05 Сентября 2011 16:15)
SanAVИзвиняюсь, конечно, но не кажется ли позорным поменять названия, указатели, имена функций и файлов, а также урезать функционал в несколько раз, а затем выдавать HGE за свой движок?

+1-
1 KpoJIuk   (05 Сентября 2011 16:15)
у меня что-то со зрением, или структура движка и даже часть имен функций взяты из ХГЕ?

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
10 случ. движков
  • Eternity
  • Ignifuga
  • 001 Game Creator
  • Future Pinball
  • Ren'Py
  • DGLE2
  • Unigine
  • Demoniak3D
  • Raydium Engine
  • Orx
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2019 Рейтинг