Text Function funzt nicht



  • 🙂
    Kommst du auch aus dem DB Forum?
    cu max



  • Jo bin doch Jarek und muss meinen verwichsten feind TGGC ja mal feuer unterm Arsch machen, damit alle seine dunkle vergangenheit kennen. 🙂



  • SDL_Rect:

    typedef struct {
    Sint16 x, y;
    Uint16 w, h;
    } SDL_Rect;

    du musst aber SDL_Color verwenden:

    typedef struct {
    Uint8 r;
    Uint8 g;
    Uint8 b;
    Uint8 unused;
    } SDL_Color;

    cu



  • Hi,
    aha!Danke.
    cu max



  • @Master_Max:
    Du hast keine konkrete Frage gestellt, also was soll man antworten?

    Im DB Forum hiess ich auch TGGC, ich hatte noch nie ein anderes Pseudonym.

    BTW: Ich habe keinen Streit. Genies haben keinen Streit nötig.

    Bye, TGGC



  • Hi,
    meine Frage war wo der Fehler liegt, ich hatte ihn ja wie vermutet
    bei SDL_Rect, also nun SDL_Color.
    Meine Frage hätte aber doch eigentlich für ein "Genie" wie dich
    ersichtlich sein sollen. 😃

    PS:Habs noch nicht hinbekommen, muss mich ersmal mit einer Button erkennung
    beschäftigen.Vielen dank.

    cu max



  • sdlrect hat kein b schrieb:

    SDL_Rect:

    typedef struct {
    Sint16 x, y;
    Uint16 w, h;
    } SDL_Rect;

    du musst aber SDL_Color verwenden:

    typedef struct {
    Uint8 r;
    Uint8 g;
    Uint8 b;
    Uint8 unused;
    } SDL_Color;

    cu

    Tja. Das hätte ich Dir ja auch sagen können (auf mich selber sauer sei)...

    Mich hatte es auch gewundert, was ein Rectangle mit einer Farbeinstellung zu tun hat, aber da ich NULL Peil von SDL hab' hab' ich's mal lieber gelassen... 🙄



  • Master_Max schrieb:

    meine Frage war wo der Fehler liegt

    Warum hast du dann nicht einfach danach gefragt sondern behauptet "das ist die Fehlerquelle:".



  • Master_Max schrieb:

    TextSurface = TTF_RenderText_Solid(pFont, "Alles wird gut",&color);
    [/cpp]
    Vielen dank im vorraus.
    cu max

    das &color stimmt nicht, es sollte nur color heissen
    TTF_RenderText_Solid(pFont, "Alles wird besser", color);

    cu



  • Hi,
    vielen dank.
    Ich hatte mal wieder Zeit mich damit zu beschäftigen komme aber immer
    noch nicht auf den grünen Zweig. Ich hab bei Google und in vielen
    Foren gesucht finde aber kein Tutorial. Nun ja, ich habe immer noch einen
    Fehler und ich denke alles was ihr gesagt habt berücksichtigt zu haben.
    Naja, vielleicht könnt ihr mir ja helfen:
    Ein Bsp:

    #include <SDL.h>
    #include "SDL_ttf.h"
    
    //Präprozessor befehle die leider nötig sind damit SDL läuft.
    #ifdef _WIN32
    #undef main
    #endif
    
    int main(){
    	SDL_Init(SDL_INIT_VIDEO);
    	SDL_Surface *screen;
    	screen=SDL_SetVideoMode(1024,768,32,0);
        TTF_Init();
    	SDL_Surface *TextSurface;
    
    TTF_Font *pFont;
    
    typedef struct color{
    Uint8 r;
    Uint8 g;                                                            
    Uint8 b;
    Uint8 unused;
    }SDL_Color;
    
    pFont = TTF_OpenFont("Arial.ttf",12);
    TTF_CloseFont(pFont);
    TextSurface = TTF_RenderText_Solid(pFont,"Alles wird besser",&color); //es 
    //ist egal ob ich &color oder nur color schreibe,
    // ich erhalte bei beiden //den //Fehler.                                                                                                                
    
    SDL_BlitSurface(TextSurface,NULL,screen,0);
    SDL_UpdateRects(screen,1,0); 
    
    SDL_FreeSurface(TextSurface);
    
    TTF_Quit();
    
    	SDL_Delay(3000);
    	SDL_Quit();
    	return 0;
    }
    

    **
    //--------------------Konfiguration: TTF_Text - Win32 Debug--------------------
    Kompilierung läuft...
    codeTTF_Text.cpp
    C:\Programme\Microsoft Visual Studio\MyProjects\TTF_Text\codeTTF_Text.cpp(28) : error C2275: "color" : Ungültige Verwendung dieses Typs als Ausdruck
    C:\Programme\Microsoft Visual Studio\MyProjects\TTF_Text\codeTTF_Text.cpp(19) : Siehe Deklaration von 'color'
    Fehler beim Ausführen von cl.exe.

    TTF_Text.exe - 1 Fehler, 0 Warnung(en)
    **

    Ich habe doch color richtig definiert oder?
    Ich würde mich sehr über hilfe freuen.

    PS:Wegen den //´s komisch, aber die eingabe spinnt wenn ich sie schreibe,
    rücken die wörter der letzten zeile immer nach vorne.

    cu max



  • Solltest Du dann nicht SDL_Color statt color verwenden?!?



  • - du brauchst sdl_color nicht neu zu definieren, das gibts schon:) nur musst du noch eins mit deinen beliebigen werten füllen...
    - dann musst du ttf_closefont() erst nachdem du die schrift nicht mehr benötigst (ende des programms?) aufrufen.
    - es ist nicht egal ob du color oder &color übergibst.
    - mit "SDL_BlitSurface(TextSurface,NULL,screen,NULL);" blittest du dein textsurface in die linke obere ecke des bildschirms. besser wäre es, als letzten parameter ein SDL_Rect zu übergeben, in dem steht, wohin du die Schrift haben willst.

    #include <SDL.h> 
    #include "SDL_ttf.h" 
    
    //Präprozessor befehle die leider nötig sind damit SDL läuft. 
    #ifdef _WIN32 
    #undef main 
    #endif 
    
    int main(){ 
        SDL_Init(SDL_INIT_VIDEO); 
        SDL_Surface *screen; 
        screen=SDL_SetVideoMode(1024,768,32,0); 
        TTF_Init(); 
        SDL_Surface *TextSurface; 
    
    TTF_Font *pFont; 
    
    pFont = TTF_OpenFont("Arial.ttf",12); 
    SDL_Color color;
    color.r = color.g = color.b = 255; //schriftfarbe weiss
    
    TextSurface = TTF_RenderText_Solid(pFont,"Alles wird besser",color);                                                                                                          
    SDL_BlitSurface(TextSurface,NULL,screen,NULL); 
    SDL_UpdateRects(screen,1,0);  
    
    SDL_FreeSurface(TextSurface); 
    
    TTF_CloseFont(pFont);
    TTF_Quit(); 
    
        SDL_Delay(3000); 
        SDL_Quit(); 
        return 0; 
    }
    

    ich habe jetzt nicht alles ganz genau durchgesehen und auch nicht getestet, aber eigentlich sollte es so gehen.



  • Hi,
    vielen dank.
    Du bist wieder ein beweis das die unregistrierten sehr gut sind.
    @TGGC und nicht immer "Trollen"
    Nochmals danke.
    Sorry, aber ich blick nie bei der SDL Docu durch,
    vorallem eben nicht bei den Datentypen, da die nicht in
    der Deutschen Doku erklärt werden.

    cu max



  • Hi,
    leider geht es immer noch nicht.
    Er kompiliert linkt es und führt es aus,
    aber sofort nachdem er mit der Ausführung anfängt,
    gibt er einen schweren Fehler aus und tut debuggen.
    Naja ich linke alles was ich brauche, die header sind alle
    includiert ich weis nicht mehr an was es liegen sollte,
    ich werde wohl ne eigene Bmp font linie machen müssen.
    Ich will euch nicht mehr plagen.

    PS:Es hat irgendetwas mit der SDL.dll zu tuen, aber
    die ist auch im richtigen System Verzeichniss,
    Win Xp System32.

    cu max



  • Noch ein letztes Mal color und &color tauschen...!?? 😃



  • hallo

    evtl bracht die sdl_ttf double buffering? (kA obs wirklich so ist, bin auch noch sdl noob 😉 )

    #include <SDL.h>  
    #include "SDL_ttf.h"  
    
    //Präprozessor befehle die leider nötig sind damit SDL läuft.  
    #ifdef _WIN32  
    #undef main  
    #endif  
    
    int main(){  
        SDL_Init(SDL_INIT_VIDEO);  
        SDL_Surface *screen;  
        screen=SDL_SetVideoMode(1024,768,32,SDL_DOUBLEBUF);  //doublebuffering aktivieren
        TTF_Init();  
        SDL_Surface *TextSurface;   
    
    TTF_Font *pFont;  
    
    pFont = TTF_OpenFont("Arial.ttf",12);  
    SDL_Color color; 
    color.r = color.g = color.b = 255; //schriftfarbe weiss 
    
    TextSurface = TTF_RenderText_Solid(pFont,"Alles wird besser",color);                                                                                                           
    SDL_BlitSurface(TextSurface,NULL,screen,NULL);  
    SDL_Flip(screen); //'fertiges' screen anzeigen
    
    SDL_FreeSurface(TextSurface);  
    
    TTF_CloseFont(pFont); 
    TTF_Quit();  
    
        SDL_Delay(3000);  
        SDL_Quit();  
        return 0;  
    }
    


  • @max

    auch auf dei gefahr hin mir viele viele viele feinde zu machen, möchte ich einmal TGGC zitieren:

    LERN CODEN!



  • Hi,
    vielen dank aber Double Buffering bringt auch nichts.

    @gibbets2000
    bei mir magst du ja recht haben das meine Kentnisse nicht ausreichen
    (zumindestens was C++ angeht)aber ich finde es ein bisschen schade
    das du das ein bisschen oft behauptest.(Schau bitte mal in die Sammlung deiner Beiträge, die hier ist ok aber die im SDL Forum 👎 )du kannst das doch nicht
    zu jedem und dauernd sagen, bei mir hast du recht, dazu stehe ich.
    Ich lerne ja auch nebenher C++ es ist ja nicht so als ob ich damit aufgehört hätte 😃

    Hier ein paar schöne Zitate:

    wenn du keine bitmasken benutzen kannst und nicht weist, wie du an die pixel kommst, tut es mir leid. du musst dann noch ein wenig lernen, wenn du ein spiel programmieren willst... .
    PS: aufgrund de ...

    verdammt, da steht alles drin, was du wissen must. lies es noch mal richtig durch und benutze auch mal dein gehirn!

    Sorry, ich will dich nicht mobben aber kannst du auch freundlich mit
    Mit-Menschen reden? Wenn sie dir auf den Sack gehen, dann ignoriere sie!

    cu max



  • sorry, dass das grob wirkt. aber es ist wirklich nur halb so grob gemeint.

    es ist nur meine einstellung newbies und leuten die zu faul sind einfach mal selbst zu denken gleich die lösung zu zeigen. Grade, bei dem code den du postest sind fehler,die man eigentlich nicht machen kann, wenn man von der sprach ahnung hat und ich kann es einfach nicht begreifen, wie man ohne die sprache zu beherschen schon ein spiel proggen will. Zum Vergleich: ich hatte erst nach etwa einem jahr angefangen mir die ersten apis anzugucken. das ist jetzt auch ein wenig viel zeit. das liegt aber daran, das ich in diesem einem jahr sehr faul war... ;).
    Jedenfalls lege ich es dir und allen anfängern nahe erstmal die grundlagen zu lernen und zu beherschen bevor man sich an etwas komplexeres macht. Das ist für beide seiten besser und hebt gleich doch das niveau. Du könntest doch zum beispiel einmal versuchen ein textbasiertes quizzu proggen. Aus spaß könntest du es versuchen einmal in reinem c und einmal in reinem c++ zu schreiben. Dann hast du gleich eine der größten newbie frage für dich geklärt: was ist der unterschied zwischen c und c++. Zwar nicht komplett aber du hast ein dann ein gefühl dafür.

    ich lasse mich auch gerne auf eine disskusion im icq dazu ein.
    169133166

    cya



  • Hi,
    ich habe schon einen Quiz, ein Nimmspiel(Volkhard)
    und ne Menge weiteren Schrott gecodet der nie fertig wird.
    Ich halte es nun mal leider nicht so lange mit dem trockenen Standard
    C++ aus und bin deshalb mal auf Grafikprogrammierung umgestiegen.
    Ist mir klar das dass nicht einfach ist.
    Diskutieren will ich nich, ich weis das ich schlecht bin und icq
    (habe ich gar nicht).
    Ich werd nocheinmal C++ lernen (ein Buch habe ich ja durch)

    und dann mache ich weiter.

    Bis bald

    cu max


Anmelden zum Antworten