When I run my program with out TTF it builds and show the screen until I click X to exit out, but lately when I used TTF functions I get the program build and run and the screen just comes on go right off even do it's post to be event driven.
Here is my code. Little messy so :P I'm just thinking about skipping lesson 7&8 but its going to come back and bite me I know it.
Code: Select all
#include "SDL/SDL.h"
#include "SDL/SDL_image.h"
#include "SDL/SDL_ttf.h"
#include <string>
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
const int SCREEN_BPP = 32;
SDL_Surface *white = NULL;
SDL_Surface *screen = NULL;
SDL_Surface *stick = NULL;
SDL_Surface *sheet = NULL;
SDL_Surface *message = NULL;
SDL_Surface *upMessage = NULL;
SDL_Surface *downMessage = NULL;
SDL_Surface *leftMessage = NULL;
SDL_Surface *rightMessage = NULL;
SDL_Event event;
TTF_Font *font = NULL;
SDL_Color textColor = {255, 255, 255};
SDL_Surface *load_image(std::string filename)
{
SDL_Surface* loadedImage = NULL;
SDL_Surface* optimizedImage = NULL;
loadedImage = SDL_LoadBMP(filename.c_str());
if( loadedImage != NULL)
{
optimizedImage = SDL_DisplayFormat(loadedImage);
SDL_FreeSurface(loadedImage);
if(optimizedImage != NULL);
}
{
Uint32 colorkey = SDL_MapRGB( optimizedImage->format, 0, 0xFF, 0xFF );
SDL_SetColorKey( optimizedImage, SDL_SRCCOLORKEY, colorkey );
}
return optimizedImage;
}
void apply_surface( int x, int y, SDL_Surface* source, SDL_Surface* destination)
{
SDL_Rect offset;
offset.x = x;
offset.y = y;
SDL_BlitSurface(source, NULL, destination, &offset);
}
bool init()
{
if(SDL_Init(SDL_INIT_EVERYTHING) == -1)
{
return false;
}
screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE);
if(screen == NULL)
{
return false;
}
if(TTF_Init() == -1)
{
return false;
}
SDL_WM_SetCaption("Project",NULL);
return true;
}
bool load_files()
{
sheet = load_image("result.bmp");
stick = load_image("stickblit.bmp");
white = load_image("white.bmp");
font = TTF_OpenFont( "lasy.ttf",28);
upMessage = TTF_RenderText_Solid(font,"Up", textColor);
if(white == NULL)
{
return false;
}
if (font == NULL)
{
return false;
}
return true;
}
void clean_up()
{
SDL_FreeSurface(white);
SDL_FreeSurface(sheet);
TTF_CloseFont(font);
TTF_Quit();
SDL_Quit();
}
int main(int argc, char* args[])
{
bool quit = false;
if( init() == false )
{
return 1;
}
if( load_files() == false)
upMessage = TTF_RenderText_Solid(font, "UP",textColor);
downMessage = TTF_RenderText_Solid(font, "Down", textColor);
leftMessage = TTF_RenderText_Solid(font ,"Left", textColor);
rightMessage = TTF_RenderText_Solid(font, "right", textColor);
if( upMessage == NULL)
if( downMessage == NULL)
if( leftMessage == NULL)
if( rightMessage == NULL)
{
return 1;
}
apply_surface(0,0, white, screen);
apply_surface(150,0, sheet, screen);
if(SDL_Flip( screen ) == -1)
{
return 1;
}
while( quit == false)
{
while(SDL_PollEvent( &event))
{
if(event.type == SDL_QUIT)
{
quit = true;
}
}
}
clean_up();
return 1;
}
-Premium