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

SDL zamotany kod nie chce wyswietlic tekstu

Ostatnio zmodyfikowano 2010-12-28 18:39
Autor Wiadomość
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;
}
P-25711
malan
» 2010-12-28 00:28:42
C/C++
int TTF_Init();
...?
Wywołaj to normalnie, np. po
SDL_Init( SDL_INIT_EVERYTHING );
.
C/C++
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?
C/C++
//...
int TTF_Init();

SDL_Surface * TTF_RenderText_Solid( TTF_Font * czcionka, const char * text, SDL_Color kolor );
//...
P-25712
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...
P-25718
malan
» 2010-12-28 12:00:22
P-25732
ison
» 2010-12-28 12:06:55
kod z tej strony:
C/C++
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ć
P-25733
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)
P-25792
ison
» 2010-12-28 17:31:44
C/C++
int i = 42;
char str[ 12 ];
sprintf( str, "%d", i );
P-25795
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
P-25798
« 1 » 2
  Strona 1 z 2 Następna strona