Jacahehe Temat założony przez niniejszego użytkownika |
SDL zamotany kod nie chce wyswietlic tekstu » 2010-12-28 00:11:58 Problem w tym, że tekst za nic w świecie nie chce się wyświetlić na ekranie...
Wszystko jest dobrze dołączone i podlinkowane, program się ładnie kompiluje ale tekstu niema :O
KOD:
#include <iostream>
#include <conio.h>
#include <SDL.h>
#include <SDL_ttf.h>
SDL_Surface *ekran = NULL;
SDL_Surface *arena = NULL;
SDL_Surface *kursor = NULL;
SDL_Surface *tlo = NULL;
SDL_Surface *kontrolka = NULL;
SDL_Surface *trening = NULL;
SDL_Surface *staty = NULL;
SDL_Rect ArenaDane;
SDL_Rect a;
SDL_Rect ArenaCel;
SDL_Rect TreningDane;
SDL_Rect TreningCel;
SDL_Rect StatyDane;
SDL_Rect StatyCel;
SDL_Rect KontrolkaDane;
SDL_Rect KontrolkaCel;
SDL_Rect kursorDane;
SDL_Rect TekstDane;
SDL_Event zdarzenie;
int myszkaX,myszkaY;
bool wyjscie = false;
int TTF_Init();
SDL_Surface *TTF_RenderText_Solid(TTF_Font *czcionka, const char *text, SDL_Color kolor);
TTF_Font *czcionka = TTF_OpenFont("font.ttf", 12);
SDL_Surface * text;
SDL_Color kolor={0,0,0};
int main(int argc, char **argv)
{
SDL_Init(SDL_INIT_EVERYTHING);
ekran = SDL_SetVideoMode(640,480,32,SDL_SWSURFACE );
arena = SDL_LoadBMP("parena.bmp");
tlo = SDL_LoadBMP("tlo.bmp");
kontrolka = SDL_LoadBMP("kontrolkax.bmp");
staty = SDL_LoadBMP("pstatystyki.bmp");
trening = SDL_LoadBMP("ptrening.bmp");
kursor = SDL_LoadBMP("kursor.bmp");
SDL_SetColorKey( kursor, SDL_SRCCOLORKEY, SDL_MapRGB(kursor->format,255,255,255));
ArenaDane.w = 100;
ArenaDane.h = 40;
ArenaCel.x = 50;
ArenaCel.y = 100;
TreningDane.w = 100;
TreningDane.h = 40;
TreningCel.x = 50;
TreningCel.y = 150;
StatyDane.w = 100;
StatyDane.h = 40;
StatyCel.x = 50;
StatyCel.y = 200;
KontrolkaDane.w = 40;
KontrolkaDane.h = 40;
KontrolkaCel.x = 585;
KontrolkaCel.y = 14;
kursorDane.x = 0;
kursorDane.y = 0;
a.x = 400;
a.y = 200;
while(!wyjscie)
{
SDL_FillRect(ekran,NULL,0);
SDL_ShowCursor(SDL_DISABLE);
SDL_BlitSurface(tlo,NULL,ekran,NULL);
SDL_BlitSurface(arena,&ArenaDane,ekran,&ArenaCel);
SDL_BlitSurface(trening,&TreningDane,ekran,&TreningCel);
SDL_BlitSurface(kontrolka,&KontrolkaDane,ekran,&KontrolkaCel);
SDL_BlitSurface(staty,&StatyDane,ekran,&StatyCel);
text = TTF_RenderText_Solid(czcionka,"AAAAAAAAA",kolor);
SDL_BlitSurface(text,NULL,ekran,&a);
SDL_BlitSurface(kursor,NULL,ekran,&kursorDane);
SDL_Flip(ekran);
while(SDL_PollEvent(&zdarzenie))
{
if(zdarzenie.type == SDL_MOUSEMOTION)
{
kursorDane.x = zdarzenie.motion.x;
kursorDane.y = zdarzenie.motion.y;
}
if(zdarzenie.type == SDL_MOUSEBUTTONDOWN)
{
if(zdarzenie.button.button == SDL_BUTTON_LEFT &&
(kursorDane.x >= ArenaCel.x && kursorDane.x <=
ArenaCel.x + ArenaDane.w) && (kursorDane.y >=
ArenaCel.y && kursorDane.y <= ArenaCel.y +
ArenaDane.h))
{
wyjscie = true;
}
if(zdarzenie.button.button == SDL_BUTTON_LEFT &&
(kursorDane.x >= TreningCel.x && kursorDane.x <=
TreningCel.x + TreningDane.w) && (kursorDane.y >=
TreningCel.y && kursorDane.y <= TreningCel.y +
TreningDane.h))
{
wyjscie = true;
}
if(zdarzenie.button.button == SDL_BUTTON_LEFT &&
(kursorDane.x >= StatyCel.x && kursorDane.x <=
StatyCel.x + StatyDane.w) && (kursorDane.y >=
StatyCel.y && kursorDane.y <= StatyCel.y +
StatyDane.h))
{
wyjscie = true;
}
if(zdarzenie.button.button == SDL_BUTTON_LEFT &&
(kursorDane.x >= KontrolkaCel.x && kursorDane.x <=
KontrolkaCel.x + KontrolkaDane.w) && (kursorDane.y >=
KontrolkaCel.y && kursorDane.y <= KontrolkaCel.y +
KontrolkaDane.h))
{
wyjscie = true;
}
}
if(zdarzenie.key.keysym.sym == SDLK_ESCAPE) wyjscie =
true;
}
}
SDL_FreeSurface(arena);
SDL_FreeSurface(text);
SDL_FreeSurface(kontrolka);
SDL_FreeSurface(tlo);
SDL_FreeSurface(trening);
SDL_FreeSurface(staty);
SDL_FreeSurface(kursor);
return 0;
}
|
|
malan |
» 2010-12-28 00:28:42 ...? Wywołaj to normalnie, np. po SDL_Init( SDL_INIT_EVERYTHING ); . int main( int argc, char ** argv ) { SDL_Init( SDL_INIT_EVERYTHING ); TTF_Init(); ekran = SDL_SetVideoMode( 640, 480, 32, SDL_SWSURFACE ); return 0; } /edit: W ogóle, to po co deklarujesz ponownie funkcje SDL_ttf? int TTF_Init();
SDL_Surface * TTF_RenderText_Solid( TTF_Font * czcionka, const char * text, SDL_Color kolor );
|
|
Jacahehe Temat założony przez niniejszego użytkownika |
» 2010-12-28 09:29:47 Ok, po wprowadzeniu porzadku dziala :)
Jeszcze jedno pytanko, jak moge wyswietlic zmienna typu int? Co kompilator sie buntuje i krzyczy ze moge tylko char... |
|
malan |
» 2010-12-28 12:00:22 |
|
ison |
» 2010-12-28 12:06:55 kod z tej strony: int i = 42; char * str; sprintf( str, "%d", i );
nie ma to jak modyfikowanie nie wiadomo czego ;p przecież str nie wskazuje na nowo utworzoną tablicę charów tylko na jakiś losowy śmieć |
|
Jacahehe Temat założony przez niniejszego użytkownika |
» 2010-12-28 17:13:10 Hmmm wszystkie kody z tej strony wywalają mi błędy wszelakiej maści mimo że robie wszystko jak pisze... Możesz mi to tak łopatologicznie wytłumaczyć? :D
Nie wiem czy moze to wina kompilatora, moze tamten kod jest pod jakis inny, choc to raczej bez roznicy :) (uzywam Visual C++ 2008 EE) |
|
ison |
» 2010-12-28 17:31:44 int i = 42; char str[ 12 ]; sprintf( str, "%d", i );
|
|
Jacahehe Temat założony przez niniejszego użytkownika |
» 2010-12-28 17:49:19 Łoo teraz to się cuda dzieją :)
Kompilator krzyczy, że funkcja może być niebezpieczna (This function or variable may be unsafe.). Żeby było weselej w trybie debugowania wszystko dziala :D |
|
« 1 » 2 |