el marcador fake ja es pinta correctament

This commit is contained in:
2025-12-01 23:47:42 +01:00
parent 5210448ac9
commit 67681e0f37
11 changed files with 128 additions and 120 deletions

View File

@@ -11,8 +11,9 @@
#include <ctime>
#include <iostream>
EscenaJoc::EscenaJoc(SDLManager& sdl)
: sdl_(sdl), nau_(sdl.obte_renderer()), itocado_(0), text_(sdl.obte_renderer()) {
EscenaJoc::EscenaJoc(SDLManager &sdl)
: sdl_(sdl), nau_(sdl.obte_renderer()), itocado_(0),
text_(sdl.obte_renderer()) {
// Inicialitzar bales amb renderer
for (auto &bala : bales_) {
bala = Bala(sdl.obte_renderer());
@@ -171,7 +172,7 @@ void EscenaJoc::tocado() {
void EscenaJoc::dibuixar_marges() const {
// Dibuixar rectangle de la zona de joc
const SDL_FRect& zona = Defaults::Zones::GAME;
const SDL_FRect &zona = Defaults::Zones::PLAYAREA;
// Coordenades dels cantons
int x1 = static_cast<int>(zona.x);
@@ -188,25 +189,22 @@ void EscenaJoc::dibuixar_marges() const {
void EscenaJoc::dibuixar_marcador() {
// Text estàtic (hardcoded)
const std::string text = "SCORE: 00000 LIFE: 3 LEVEL: 01";
const std::string text = "SCORE: 01000 LIFE: 3 LEVEL: 01";
// Escala ajustada per cabre en 640px d'amplada
// Zona marcador: width = 640 px, height = 64 px
// Text: 34 caràcters → necessitem ~487 px amb escala 1.2
// Altura caràcter: 20 * 1.2 = 24 px (37.5% de 64px)
const float escala = 1.2f;
const float spacing = 2.0f;
// Paràmetres de renderització
const float escala = 0.85f;
const float spacing = 0.0f;
// Calcular amplada total del text
// Calcular dimensions del text
float text_width = text_.get_text_width(text, escala, spacing);
float text_height = text_.get_text_height(escala);
// Centrat horitzontal
// Centrat horitzontal dins de la zona del marcador
float x = (Defaults::Zones::SCOREBOARD.w - text_width) / 2.0f;
// Centrat vertical
// Altura del caràcter escalat: 20 * 1.2 = 24 px
// Marge superior: (64 - 24) / 2 = 20 px
float y = Defaults::Zones::SCOREBOARD.y + 20.0f;
// Centrat vertical dins de la zona del marcador
float y = Defaults::Zones::SCOREBOARD.y +
(Defaults::Zones::SCOREBOARD.h - text_height) / 2.0f;
// Renderitzar
text_.render(text, {x, y}, escala, spacing);