MeGameOne Temat założony przez niniejszego użytkownika |
wyświetlanie daty » 2013-01-02 13:07:44 Witam wszystkich . Zająłem sie nowym projektem, a mianowicie programem wyświetlającym date. Mam pewien problem z kodem i przypominam ze dopiero zacząłem pracę w SDL. PROBLEM TKWI TU : if( dd == 02 ) { SDL_BlitSurface( d1, & d1Dane, OBRAZ, & d1Cel ); }
if( mm == 01 ) { SDL_BlitSurface( m1, & m1Dane, OBRAZ, & m1Cel ); }
if( rr == 2013 ) { SDL_BlitSurface( r1, & r1Dane, OBRAZ, & r1Cel ); } A to cały kod: #include <SDL/SDL.h> #include <stdio.h> #include <GL/gl.h> #include <GL/glu.h> #include "Windows.h"
SDL_Surface * OBRAZ = NULL; SDL_Surface * d1 = NULL; SDL_Surface * m1 = NULL; SDL_Surface * r1 = NULL; SDL_Surface * tlo = NULL;
SDL_Event zdarzenie; SDL_Rect d1Dane; SDL_Rect d1Cel; SDL_Rect m1Dane; SDL_Rect m1Cel; SDL_Rect r1Dane; SDL_Rect r1Cel; SDL_Rect tloDane; SDL_Rect tloCel;
Uint8 * keystate = SDL_GetKeyState( NULL );
bool wyjscie = false;
int main( int argc, char * argv[] ) { SYSTEMTIME d, m, r; SetLocalTime( & d ); SetLocalTime( & m ); SetLocalTime( & r ); int dd, mm, rr; dd = d.wDay; mm = m.wMonth; rr = r.wYear; SDL_Init( SDL_INIT_EVERYTHING ); OBRAZ = SDL_SetVideoMode( 1440, 900, 32, SDL_SWSURFACE | SDL_FULLSCREEN ); SDL_WM_SetCaption( "MeGameOne", NULL ); tlo = SDL_LoadBMP( "tlo/megameone.bmp" ); d1 = SDL_LoadBMP( "ikony/02.bmp" ); m1 = SDL_LoadBMP( "ikony/01.bmp" ); r1 = SDL_LoadBMP( "ikony/2013.bmp" ); tloDane.w = 2000; tloDane.h = 2000; tloCel.x = 0; tloCel.y = 0; d1Dane.w = 200; d1Dane.h = 50; d1Cel.x = 300; d1Cel.y = 50; m1Dane.w = 200; m1Dane.h = 50; m1Cel.x = 300; m1Cel.y = 150; r1Dane.w = 200; r1Dane.h = 50; r1Cel.x = 300; r1Cel.y = 250; while( !wyjscie ) { SDL_BlitSurface( tlo, & tloDane, OBRAZ, & tloCel ); if( dd == 02 ) { SDL_BlitSurface( d1, & d1Dane, OBRAZ, & d1Cel ); } if( mm == 01 ) { SDL_BlitSurface( m1, & m1Dane, OBRAZ, & m1Cel ); } if( rr == 2013 ) { SDL_BlitSurface( r1, & r1Dane, OBRAZ, & r1Cel ); } while( SDL_PollEvent( & zdarzenie ) ) { if( zdarzenie.type == SDL_QUIT ) { wyjscie = false; } if( keystate[ SDLK_ESCAPE ] ) { wyjscie = true; } }; SDL_Flip( OBRAZ ); SDL_Flip( d1 ); SDL_Flip( m1 ); SDL_Flip( r1 ); SDL_Flip( tlo ); } SDL_Quit(); return 0; } Oczywiście to tylko początek. Z góry dzięki za odpowiedzi |
|
Mike148 |
» 2013-01-02 14:23:34 1. Jaki jest ten problem. Daj error 2. Kod w znacznikach cpp 3. Na pierwszy rzut oka : if( zdarzenie.type == SDL_QUIT ) { wyjscie = false; }
SDL_Flip();
4.Nie prościej jest ci datę renderować z TTF ? |
|
pekfos |
» 2013-01-02 14:24:31 |
|
MeGameOne Temat założony przez niniejszego użytkownika |
» 2013-01-02 14:35:13 Nie ma zadnego errora, błąd polega na tym ze warunki nie chcą sie spelnic |
|
Mike148 |
» 2013-01-02 14:41:03 MSDN nie gryzie : http://msdn.microsoft.com/en-us/library/windows/desktop/ms724950(v=vs.85).aspx Powinienieś użyć void WINAPI GetLocalTime( _Out_ LPSYSTEMTIME lpSystemTime ); #include <windows.h> #include <stdio.h>
void main() { SYSTEMTIME st, lt; GetSystemTime( & st ); GetLocalTime( & lt ); printf( "The system time is: %02d:%02d\n", st.wHour, st.wMinute ); printf( " The local time is: %02d:%02d\n", lt.wHour, lt.wMinute ); }
I popatrz sobie jakie wartości są zwracane do poszczególnych zmiennych i wtedy twórz warunki ;) Link do opisu funkcji na górze. |
|
MeGameOne Temat założony przez niniejszego użytkownika |
» 2013-01-02 14:48:14 Ja mam to zrobione na tej stronie pokazują .Poprobuje jeszcze . |
|
Mike148 |
» 2013-01-02 15:00:30 Ty ustawiasz datę, a nie pobierasz - Set, a Get to drobna różnica. Po co wywołujesz to 3 razy. Jakbyś popatrzył na budowę struktury to SYSTEMTIME to byś zobaczył, że masz tam i dzień, i rok, i miesiąc, i godzinę. |
|
MeGameOne Temat założony przez niniejszego użytkownika |
» 2013-01-02 15:07:01 Dzieki wielkie. Set i get mi sie pomyliło , bo z głowy pisałem:-) Temat do zamknięcia. Pozdro |
|
« 1 » |