// main.cpp - Punt d'entrada del joc Asteroides // © 1999 Visente i Sergi (versió Pascal) // © 2025 Port a C++20 amb SDL3 #include "sdl_manager.hpp" #include "joc_asteroides.hpp" int main(int argc, char* argv[]) { // Crear gestor SDL amb finestra de 640x480 SDLManager sdl(640, 480, "Asteroides - BETA 2.2"); // Crear instància del joc JocAsteroides joc(sdl.obte_renderer()); joc.inicialitzar(); // Loop principal del joc SDL_Event event; bool running = true; // Control de temps per delta_time Uint64 last_time = SDL_GetTicks(); while (running) { // Calcular delta_time real Uint64 current_time = SDL_GetTicks(); float delta_time = (current_time - last_time) / 1000.0f; // Convertir ms a segons last_time = current_time; // Limitar delta_time per evitar grans salts if (delta_time > 0.05f) { // Màxim 50ms (20 FPS mínim) delta_time = 0.05f; } // Processar events SDL while (SDL_PollEvent(&event)) { // Processar input del joc joc.processar_input(event); // Detectar tancament de finestra o ESC if (event.type == SDL_EVENT_QUIT || (event.type == SDL_EVENT_KEY_DOWN && event.key.key == SDLK_ESCAPE)) { running = false; } } // Actualitzar física del joc amb delta_time real joc.actualitzar(delta_time); // Netejar pantalla (negre) sdl.neteja(0, 0, 0); // Dibuixar joc joc.dibuixar(); // Presentar renderer (swap buffers) sdl.presenta(); } return 0; }