All pastes #974251 Raw Edit

Anonymous

public cpp v1 · immutable
·published 2008-04-06 17:58 UTC
rendered paste body
#include "SDL/SDL.h" #include <string>#include "math.h"#include "SDL/SDL_ttf.h"#include "SDL/SDL_image.h"#include "iostream"//The attributes of the screen const int SCREEN_WIDTH = 640; const int SCREEN_HEIGHT = 400; const int SCREEN_BPP = 32;using std::cout;//The surfaces that will be used SDL_Surface *message = NULL; SDL_Surface *background = NULL; SDL_Surface *screen = NULL;SDL_Surface *point = NULL;SDL_Surface *text = NULL;TTF_Font *font = NULL;SDL_Color textColor = { 255, 255, 255 };SDL_Event event;SDL_Surface *load_image( std::string filename ) {	SDL_Surface* loadedImage = NULL;	//The optimized image that will be used 	SDL_Surface* optimizedImage = NULL;		//Load the image 	loadedImage = SDL_LoadBMP( filename.c_str() );	//If nothing went wrong in loading the image 	if( loadedImage != NULL ) 	{ 		//Create an optimized image 		optimizedImage = SDL_DisplayFormat( loadedImage ); 		//Free the old image 		SDL_FreeSurface( loadedImage ); 	}		//Return the optimized image 	return optimizedImage;		}void apply_surface( int x, int y, SDL_Surface* source, SDL_Surface* destination ){	//Make a temporary rectangle to hold the offsets	SDL_Rect offset;		//Give the offsets to the rectangle	offset.x = x;	offset.y = y;		//Blit the surface	SDL_BlitSurface( source, NULL, destination, &offset );	}//moveint move(int direction,int length, int wormX[], int wormY[], int speed){}int main( int argc, char* args[] ){	//Initialize all SDL subsystems	if( SDL_Init( SDL_INIT_EVERYTHING ) == -1 ) 	{		return 1; 	}	//Set up the screen	screen = SDL_SetVideoMode( SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_BPP, SDL_SWSURFACE );		//If there was an error in setting up the screen	if( screen == NULL )	{		return 1;	}	if( TTF_Init() == -1 ) 	{ 		return false; 	}	font = TTF_OpenFont( "VeraMono.ttf", 12 );	if( font == NULL ) 	{ 		cout << "Could not find font...";				return false; 	}	//Set the window caption	SDL_WM_SetCaption( "LeSnake", NULL );		//Load the images	message = load_image( "square.bmp" );	background = load_image( "background.bmp" );	point = load_image("point.bmp");	text = TTF_RenderText_Solid( font, "Points:", textColor );				//Apply the background to the screen			int wormX[100];		int wormY[100];				wormX[0] = 100;		wormY[0] = 100;				int speed = 50;		int jump = 10;		int length = 6;			int pointx = rand() % 64;	int pointy = rand() % 40;		int new_direction;	int direction = 1;	int bounces = 2;	int runs;		int quit=0;	 	while(!quit)	{			//If there's an event to handle		if( SDL_PollEvent( &event ) )		{			if( event.type == SDL_KEYDOWN )			{								switch( event.key.keysym.sym ) 				{ 					case SDLK_ESCAPE:quit=1;break;					case SDLK_UP: new_direction=0; break; 					case SDLK_DOWN: new_direction=1; break; 					case SDLK_LEFT: new_direction=2; break; 					case SDLK_RIGHT: new_direction=3; break; }							}								if(direction == 0 && new_direction == 1)				{					direction = 0;				}				else if (direction == 1 && new_direction == 0)				{					direction = 1;				}				else if (direction == 2 && new_direction == 3)				{					direction = 2;				}				else if (direction == 3 && new_direction == 2)				{					direction = 3;				}				else				{					direction = new_direction;				}					}			else if( event.type == SDL_QUIT )		{			quit = 1;		}		for(int counter=length; counter>0; counter--)	{		wormX[counter] = wormX[counter-1];		wormY[counter] = wormY[counter-1];					}	if(direction == 1)		{									wormY[0]+=jump;		}				else if(direction == 0)		{			wormY[0]-=jump;		}				else if(direction == 2)		{			wormX[0]-=jump;		}		else		{			wormX[0]+=jump;		}		if(wormX[0] < 0 || wormX[0] > 640)		{			quit=1;		}		if(wormY[0] < 0 || wormY[0] > 400)		{			quit=1;		}				apply_surface( 0, 0, background, screen );		//Apply the message to the screen			//move(direction,length,&wormX[],&wormY[],speed);				for(int counter=0; counter<length; counter++)		{					if(wormX[0] == wormX[counter] && wormY[0] == wormY[counter] && counter != 0)			{				quit=1;			}					apply_surface( wormX[counter], 	wormY[counter], message, screen );			}				if(wormX[0] == pointx*10 && wormY[0] == pointy*10)		{			pointx = rand() % 64;			pointy = rand() % 40;			length++;			speed-=0.5;						char *pointsout; 			sprintf(pointsout, "Points: %i",length-6);			text = TTF_RenderText_Solid( font,pointsout , textColor );									}			apply_surface(pointx*10,pointy*10,point,screen);				apply_surface( 0, 20, text, screen );	//Update the screen		if( SDL_Flip( screen ) == -1 )		{			return 1;		}			SDL_Delay( speed );		}				//Free the surfaces	SDL_FreeSurface( message );	SDL_FreeSurface( background );		//Quit SDL	SDL_Quit();		return 0;}