Спрайты в SDL

Создадим простенькое окошко со спрайтом в нём при помощи библиотеки SDL.
Прежде всего подключим необходимые заголовочные файлы:

#include <SDL/SDL.h>

Зададим высоту ширину и заголовок окна:

const int WINDOW_WIDTH = 640;
const int WINDOW_HEIGHT = 480;

const char* WINDOW_TITLE = "how2.org.ua";

И приступим к формированию текста главной функции:

int main(int argc, char **argv) {

Инициализируем SDL:

SDL_Init( SDL_INIT_VIDEO );
SDL_Surface* screen = SDL_SetVideoMode( WINDOW_WIDTH,WINDOW_HEIGHT, 0,SDL_HWSURFACE | SDL_DOUBLEBUF );
SDL_WM_SetCaption( WINDOW_TITLE, 0 );

Подробнее тут.

Загружаем спрайт и устанавливаем прозрачный цвет:

SDL_Surface* bitmap = SDL_LoadBMP("sprite.bmp");
SDL_SetColorKey( bitmap, SDL_SRCCOLORKEY, SDL_MapRGB(bitmap->format,0, 0, 0) ); #чёрный - прозрачный

Часть спрайта которую хотим нарисовать:

SDL_Rect source;
source.x = 0;
source.y = 0;
source.w = 120;
source.h = 120;

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

SDL_Rect destination;
destination.x = 100;
destination.y = 100;
destination.w = 120;
destination.h = 120;

Стандартное окончание программы. Цикл ожидания событий:

SDL_Event event;
bool gameRunning = true;
while (gameRunning){
   if (SDL_PollEvent(&event)){
     if (event.type == SDL_QUIT){
       gameRunning = false;
     }
  }
SDL_BlitSurface(bitmap, &source, screen, &destination);
SDL_Flip(screen);
}
SDL_FreeSurface(bitmap);
SDL_Quit();
return 0;
}

У меня получилось так:

Мой исходник и спрайт можно скачать тут.
Компилировать так:

g++ sprite.cpp -o sprite -lSDL

Пусть и вам повезёт!

 

Похожий код:

Фото аватара
Алексей Петров

Программист, разработчик с 5 летним опытом работы. Учусь на разработчика игр на Unity и разработчика VR&AR реальности (виртуальной реальности). Основные языки программирования: C#, C++.

Оцените автора
Бла, бла код
Добавить комментарий