Часть 1

Часть 1

"Hello World"

Прежде чем мы начнём, важно понять одно: мы делаем не красивую картинку, а максимум функционала, красоту будем наводить после, и по желанию.

Примерно так будет выглядеть готовая игра (но никто не мешает нам сделать лучше)

Из активных элементов здесь будут:

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

А так-же статичный фон и дерево.


Теперь нам необходимо скопировать наш проект, созданный на прошлом уроке: https://telegra.ph/Ustanovka-SFML-dlya-Visual-Studio-11-03

и для удобства(по желанию) переименовать проект в Timber.

После этого открываем папку bin в SFML и копируем все dll в папку с вашим main.cpp файлом

Осталось добавить в проект картинки, звук и шрифт, они будут отдельным архивом после поста. Содержимое архива нужно распаковать в эту-же папку.

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



Подготовка закончена, теперь перейдём непосредственно к игре

Каждый пиксель экрана имеет свою координату, так выглядит экран 1920х1080


Центр экрана 1920х1080 имеет координаты 960 и 540, но если мы выведем персонажа в эту точку, то получим то, что вы видите на картинке.

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


Хватит теории, давайте уже сделаем что-то!

#include "stdafx.h"

#include <SFML/Graphics.hpp> //здесь мы подключаем библиотеку для работы с графикой


using namespace sf; //теперь здесь будет не std, а sf


int main()

{


// создадим видео режим для разрешения нашего монитора

VideoMode vm(1920, 1080); //здесь будут ваши значения


// создадим окно

RenderWindow window(vm, "Timber!!!", Style::Fullscreen);

while (window.isOpen())

{

sf::Event event;

while (window.pollEvent(event))

{

if (event.type == sf::Event::Closed) // это пока объяснять не буду, оно просто нужно нам, чтобы всё хорошо работало

window.close();

}

/*

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

Здесь будет ввод игрока

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

*/

if (Keyboard::isKeyPressed(Keyboard::Escape)) //если нажать ескейп, то окно закроется

{

window.close();

}

/*

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

обновление объектов

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

*/

/*

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

отрисовка объектов

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

*/

//очистка буфера с прошлого кадра

window.clear();

// здесь будем рисовать объекты

// передаём картинку из буфера на экран

window.display();

}

return 0;

}

Report Page