Разделение функции main() на отдельные функцииC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Разделение функции main() на отдельные функции

Сообщение Anonymous »


Я только что скопировал очень простой код анимации с YouTube, чтобы научиться создавать анимацию в raylib. Но весь код написан внутри функции main(). Я хочу, чтобы это было организовано и разделено.

Вот код:

#include "include/raylib.h" интервал основной() { const int screenWidth = 1200; const int screenHeight = 800; InitWindow(screenWidth, screenHeight, «2D-платформер»); SetTargetFPS (60); Texture2D run_sprite = LoadTexture("sprites/Fighter/Run.png"); Источник прямоугольника = {0.f, 0.f, (float)run_sprite.width / 8.0f, (float)run_sprite.height}; Позиция Vector2 = {0, screenHeight/2}; интервал кадра = 0; плавающее время выполнения {}; const float updateTime{1.f/12.f}; в то время как (WindowShouldClose() == false) { //ОБНОВЛЯЕМ ПЕРЕМЕННЫЕ float deltaTime = GetFrameTime(); время выполнения += дельтаВремя; если (время выполнения >= время обновления) { время выполнения = 0.f; source.x = (float)frame * source.width; рамка++; если (кадр > 8) { кадр = 0; } } //НАЧАТЬ РИСОВАТЬ Начать Рисование(); ClearBackground(RAYWHITE); DrawTextureRec(run_sprite, источник, позиция, БЕЛЫЙ); КонецРисования(); } Закрой окно(); } Я попытался разделить это на следующие функции:

Texture2D run_sprite; недействительный load_textures() { run_sprite = LoadTexture("спрайты/Fighter/Run.png"); } интервал кадра = 0; плавающее время выполнения {}; const float updateTime{1.f/12.f}; Источник прямоугольника = {0.f, 0.f, (float)run_sprite.width / 8.0f, (float)run_sprite.height}; void update_run_animation() { время выполнения += дельтаВремя; если (время выполнения >= время обновления) { время выполнения = 0.f; source.x = (float)frame * source.width; рамка++; если (кадр > 8) { кадр = 0; } } } Позиция Vector2 = {0, screenHeight/2}; void render_run_animation() { DrawTextureRec(run_sprite, источник, позиция, БЕЛЫЙ); } А вот обновленная версия кода внутри функции main():

int main() { const int screenWidth = 1200; const int screenHeight = 800; InitWindow(screenWidth, screenHeight, «2D-платформер»); SetTargetFPS (60); load_textures(); в то время как (WindowShouldClose() == false) { update_run_animation(); Начать Рисование(); ClearBackground(RAYWHITE); render_run_animation(); КонецРисования(); } Закрой окно(); } Но когда я запускаю это, оно просто создает окно, а не рисует текстуру.

Я пытался получить выходные данные из каждой переменной функции для ее отладки. Вывод: когда дело доходит до функции update_run_animation(), переменная source.width дает значение по умолчанию, равное 0.

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

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»