Урок 32 SFML C++, Перезапуск / рестарт игры

Сделаем рестарт игры:

Видеоверсия: http://www.youtube.com/watch?v=K1AXaQ4AWK4


Текстовая версия является продолжением урока 31 с менюшкой. Видеоверсия – рестарт для нашего толстого платформера с tmx картой.


 

Создадим файл Game.h, закинем в него ф-цию menu() (хотя лучше и для неё создать menu.h), а так же создадим ниже функцию startGame(). В функцию startGame закинем все содержимое int main() , а в int main() пока пусть будет пусто.

Рестарт сделать можно несколькими способами. Например вот так:

Если нажали на Tab, то выходим из ф-ции startGame и возвращаем true. Если нажали Escape, то выходим из ф-ции startGame и возвращаем false.

При этом когда мы выйдем из ф-ции startGame – все объекты удалятся, закроется sfml окно.

Чтобы реализовать выход и перезагрузку впилим в цикле “пока открыто окно” вот такой код:

Мы должны выйти из этой функции startGame(), иначе если мы сделаем рекурсию в ней, то мы создадим второе окно с игрой. return true это и есть досрочный выход из функции.




Ниже функции startGame напишем функцию gameRunning() , которая и будет перезагружать игру, если это необходимо:

 

Затем в int main напишем так:

Ну и не забудьте подключить в main.cpp наш новый заголовочный файл Game.h

 

Все объекты удалятся, т.к деструктор автоматически вызывается компилятором в тот момент, когда объект выходит из области видимости, в данном случае мы выходим return’ом из функции startGame(), в которой хранятся все объекты.

 

 

Буду благодарен, если поделитесь:
SFML вопросы, прошу, задавайте на форуме.

Добавить комментарий