Hi peeps!
My program, which i'm about to post, doesn't work. Why is that?
It sais: 142 C:\Users\Fredrik\Desktop\Saker\Projekt\C++\SDL\Lea rn 1\main.cpp void value not ignored as it ought to be
And it's not the only error of that sort. There is like 4 errors of that sort, and thats the only errors. Why am i getting theese errors?
Code:
//The headers
#include "SDL/SDL.h"
#include <string>
//Screen attributes
const int SCREEN_WIDTH = 640;
const int SCREEN_HEIGHT = 480;
const int SCREEN_BPP = 32;
//The surfaces
SDL_Surface *background = NULL;
SDL_Surface *message = NULL;
SDL_Surface *screen = NULL;
SDL_Surface *piece = NULL;
SDL_Surface *up = NULL;
SDL_Surface *down = NULL;
SDL_Surface *left = NULL;
SDL_Surface *right = NULL;
//The event structure
SDL_Event event;
SDL_Surface *load_image( std::string filename )
{
//The image that's loaded
SDL_Surface* loadedImage = NULL;
//The optimized surface that will be used
SDL_Surface* optimizedImage = NULL;
//Load the image
loadedImage = SDL_LoadBMP( filename.c_str() );
//If the image loaded
if( loadedImage != NULL )
{
//Create an optimized surface
optimizedImage = SDL_DisplayFormat( loadedImage );
//Free the old surface
SDL_FreeSurface( loadedImage );
}
//Return the optimized surface
return optimizedImage;
}
void apply_surface( int x, int y, SDL_Surface* source, SDL_Surface* destination, SDL_Rect* clip = NULL )
{
//Holds offsets
SDL_Rect offset;
//Get offsets
offset.x = x;
offset.y = y;
//Blit
SDL_BlitSurface( source, clip, destination, &offset );
}
bool init()
{
//Initialize all SDL subsystems
if( SDL_Init( SDL_INIT_EVERYTHING ) == -1 )
{
return false;
}
//Set up the screen
screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE );
//If there was in error in setting up the screen
if( screen == NULL )
{
return false;
}
//Set the window caption
SDL_WM_SetCaption( "Walk-around-game", NULL );
//If everything initialized fine
return true;
}
bool load_files()
{
//Load the background image
background = load_image( "bg.bmp" );
piece = load_image( "piece.bmp" );
//If there was a problem in loading the background
if( background == NULL )
{
return false;
}
//If there was a problem in loading the background
if( piece == NULL )
{
return false;
}
//If everything loaded fine
return true;
}
void clean_up()
{
//Free the surfaces
SDL_FreeSurface( background );
SDL_FreeSurface( message );
SDL_FreeSurface( piece );
SDL_FreeSurface( up );
SDL_FreeSurface( down );
SDL_FreeSurface( left );
SDL_FreeSurface( right );
//Quit SDL
SDL_Quit();
}
int main( int argc, char* args[] )
{
//Quit flag
bool quit = false;
//Initialize
if( init() == false )
{
return 1;
}
//Load the files
if( load_files() == false )
{
return 1;
}
apply_surface( 10, 10, piece, screen );
//Generate the message surfaces
up = apply_surface( 10, 0, piece, screen );
down = apply_surface( 10, 20, piece, screen );
left = apply_surface( 0, 10, piece, screen );
right = apply_surface( 20, 10, piece, screen );
//Apply the background
apply_surface( 0, 0, background, screen );
//While the user hasn't quit
while( quit == false )
{
//If there's an event to handle
if( SDL_PollEvent( &event ) )
{
//If a key was pressed
if( event.type == SDL_KEYDOWN )
{
//Set the proper message surface
switch( event.key.keysym.sym )
{
case SDLK_UP: message = up; break;
case SDLK_DOWN: message = down; break;
case SDLK_LEFT: message = left; break;
case SDLK_RIGHT: message = right; break;
}
}
//If the user has Xed out the window
else if( event.type == SDL_QUIT )
{
//Quit the program
quit = true;
}
}
//If a message needs to be displayed
if( message != NULL )
{
//Apply the background to the screen
apply_surface( 0, 0, background, screen );
//Null the surface pointer
message = NULL;
}
//Update the screen
if( SDL_Flip( screen ) == -1 )
{
return 1;
}
}
//Clean up
clean_up();
return 0;
}
I think it has to do with the key thing.
Code:
up = apply_surface( 10, 0, piece, screen );
down = apply_surface( 10, 20, piece, screen );
left = apply_surface( 0, 10, piece, screen );
right = apply_surface( 20, 10, piece, screen );
I really(!) need help! Ty!