Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[SDL] Rysowanie bardzo prostego menu

Ostatnio zmodyfikowano 2013-05-22 17:15
Autor Wiadomość
fers334
Temat założony przez niniejszego użytkownika
[SDL] Rysowanie bardzo prostego menu
» 2013-03-27 18:23:37
Siemka mam kłopot a mianowicie mam strukture odpowiedzialna za wczytywanie struktury oraz strukture menu przechowujaca obrazy z menu ich rozmiar itd. Oto kod :



Plik menu.h

C/C++
#include <SDL.h>
#include <SDL_ttf.h>
#include "SDL_laduj_bmp.h"

struct menu
{
    SDL_Surface * mnu[ 5 ];
    SDL_Rect mnu_dane[ 5 ];
   
    int nr;
   
    menu()
        : nr( 0 )
    {
        SLB.laduj_bmp( mnu[ 0 ], "Menu/Menu.bmp" );
        SLB.laduj_bmp( mnu[ 1 ], "Menu/Menu_wyswietl.bmp" );
        SLB.laduj_bmp( mnu[ 2 ], "Menu/Menu_Autor.bmp" );
        SLB.laduj_bmp( mnu[ 3 ], "Menu/Menu_cofnij.bmp" );
        SLB.laduj_bmp( mnu[ 4 ], "Menu/Menu_Exit.bmp" );
       
        mnu_dane[ 0 ].x = 0;
        mnu_dane[ 0 ].y = 0;
        mnu_dane[ 0 ].w = 800;
        mnu_dane[ 0 ].h = 600;
    }
   
    void rysuj_menu()
    {
        SDL_BlitSurface( mnu[ nr ], & mnu_dane[ nr ], init.ekran, & init.ekran_dane );
    }
   
};

Plik SDL_laduj_bmp.h

C/C++
#ifndef SDL_laduj_bmp_H
#define SDL_laduj_bmp_H

#include <SDL.h>
#include <SDL_ttf.h>

struct SDL_laduj_bmp
{
    void laduj_bmp( SDL_Surface *& obraz, char * nazwa_pliku );
};
SDL_laduj_bmp SLB;

void SDL_laduj_bmp::laduj_bmp( SDL_Surface *& obraz, char * nazwa_pliku )
{
    obraz = SDL_LoadBMP( nazwa_pliku );
}

#endif


Mam taki problem ze w klasie menu mam zmienna o nazwie nr przechowujaca aktualny nr. obrazka z menu
problem polega na tym ze gdy do funkcji :

C/C++
void rysuj_menu()
{
    SDL_BlitSurface( mnu[ nr ], & mnu_dane[ nr ], init.ekran, & init.ekran_dane );
}

jaka pierwszy argument podam mnu[i] to wszystko jest dobrze lecz gdy posluze sie zapisem jak wyzej
to nie zmienia sie obrazek menu mimo ze zmienna przyjmuje inne wartosci. Obrazek menu jest taki sam caly czas a mianowicie jest to obrazek nr 0.
Nie wiem czego to wina bo sama zmienna podlega zmianie prosze o pomoc :)  .

Z góry dzieki Fers !
P-79487
DejaVu
» 2013-05-22 17:15:57
C/C++
mnu_dane[ 0 ].x = 0;
mnu_dane[ 0 ].y = 0;
mnu_dane[ 0 ].w = 800;
mnu_dane[ 0 ].h = 600;
Nie inicjalizujesz wszystkich zmiennych, więc w pamięci pozostałych obiektów od 1 do 4 włącznie są śmieci, zatem obraz w najlepszym wypadku rysuje się poza ekranem.
P-83603
« 1 »
  Strona 1 z 1