migrant a SDL3
This commit is contained in:
60
source/main.cpp
Normal file
60
source/main.cpp
Normal file
@@ -0,0 +1,60 @@
|
||||
// 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;
|
||||
}
|
||||
Reference in New Issue
Block a user