#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <SDL/SDL.h>
#include <SDL/SFont.h>
#include <SDL/SDL_image.h>
SDL_Surface *screen;
void init_SDL()
{
if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) {
fprintf(stderr,
"Couldn't initialize SDL: %s\n", SDL_GetError());
exit(1);
}
atexit(SDL_Quit); /* Clean up on exit */
/* Initialize the display */
screen = SDL_SetVideoMode(640, 480, 0, 0);
if ( screen == NULL ) {
fprintf(stderr, "Couldn't set %dx%dx%d video mode: %s\n",
640, 480, 16, SDL_GetError());
exit(1);
}
/* Set the window manager title bar */
SDL_WM_SetCaption("SFont Test", "SFont");
}
int main(int argc, char *argv[])
{
SFont_Font* Font;
init_SDL();
// Load and Prepare the font - You don't have to use the IMGlib for this
Font = SFont_InitFont(IMG_Load("24P_Copperplate_Blue.png"));
if(!Font) {
fprintf(stderr, "An error occured while loading the font.");
exit(1);
}
// a simple text blit to (0/0)
SFont_Write (screen, Font, 0,0,"Welcome to SFontTest1!");
// Update the screen
SDL_UpdateRect(screen, 0, 0, 0, 0);
// Let the user time to look at the font
SDL_Delay(4000);
// Don't forget to free our font
SFont_FreeFont(Font);
// Bye
exit(0);
}
Hi all, I downloaded this example from linux games, but it doesn't work.
this is the source:
and I get these errors:
[Linker error] undefined reference to `SFont_InitFont'
[Linker error] undefined reference to `SFont_Write'
[Linker error] undefined reference to `SFont_FreeFont'
Hope you can help me out,
Joshua
-----------------------------Sismondi GamesStarted c++ in October 2004...
nope, and thanks :D
-----------------------------Sismondi GamesStarted c++ in October 2004...
One more question. I now have this function:
but everytime I push "up" or "down", I want the old "highlighted" font to be destroyed. How do I do that?. atm, all this function does is when I hit "down", he draws on top of the other fonts. How can I change that?
void MainMenu(){ bool running = true; int highlight = 1; while(running) { SDL_Event event; while(SDL_PollEvent(&event)) { switch(event.type) { case SDL_KEYDOWN: switch(event.key.keysym.sym) { case SDLK_UP: if(highlight > 1) highlight--; break; case SDLK_DOWN: if(highlight < 3) highlight++; break; case SDLK_ESCAPE: running = false; break; } break; case SDL_QUIT: running = false; break; } } DrawMenu(highlight); }} void DrawMenu(int highlight){ SFont_Font* font; font = SFont_InitFont(IMG_Load("24P_Copperplate_Blue.png")); if(!font) cout<< "Error Initiating Font\n"; if(highlight == 1) font = SFont_InitFont(IMG_Load("24P_Arial_NeonYellow.png")); SFont_Write(screen, font, screen->w/2-SFont_TextWidth(font, "New Game")/2, 100, "New Game"); font = SFont_InitFont(IMG_Load("24P_Copperplate_Blue.png")); if(highlight == 2) font = SFont_InitFont(IMG_Load("24P_Arial_NeonYellow.png")); SFont_Write(screen, font, screen->w/2-SFont_TextWidth(font, "Change Screen Mode")/2, 150, "Change Screen Mode"); font = SFont_InitFont(IMG_Load("24P_Copperplate_Blue.png")); if(highlight == 3) font = SFont_InitFont(IMG_Load("24P_Arial_NeonYellow.png")); SFont_Write(screen, font, screen->w/2-SFont_TextWidth(font, "View Highscores")/2, 200, "View Highscores"); SDL_Flip(screen); SFont_FreeFont(font);}
but everytime I push "up" or "down", I want the old "highlighted" font to be destroyed. How do I do that?. atm, all this function does is when I hit "down", he draws on top of the other fonts. How can I change that?
-----------------------------Sismondi GamesStarted c++ in October 2004...
As far as I can tell, you never clear the screen. One way to do that is to use SDL_FillRect to draw an opaque rectangle on the surface before doing anything else. ex:
SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0)); // black
SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0)); // black
That works, thanks again
Joshua
Joshua
-----------------------------Sismondi GamesStarted c++ in October 2004...
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement