Jump to content

  • Log In with Google      Sign In   
  • Create Account

We're offering banner ads on our site from just $5!

1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


Lewis De Angelo

Member Since 23 Nov 2012
Offline Last Active Dec 17 2012 12:08 PM

Topics I've Started

Vectors

15 December 2012 - 09:29 PM

Hey guys, I've been having a little trouble with vectors recently. I've used this same code on another file, and it complies flawlessly. However, here it does compile but the program ends immediately.

#include"SDL/SDL.h"
#include"SDL/SDL_image.h"
#include<cstdlib>
#include<ctime>
#include<sstream>
#include"string"
#include<vector>
//Applies a sprite to the screen
int apply_sprite( SDL_Surface* src, SDL_Rect* offsets = NULL, SDL_Rect* clip = NULL )
{
	 //Directly applies the sprite to the screen and check for errors
	 if( SDL_BlitSurface( src, clip, SDL_GetVideoSurface(), offsets ) == -1 )
	 {
		 return 0;
	 }
	
	 return 1;
}
//Opens a sprite/spritesheet and returns it
SDL_Surface* open_sprite( std::string path )
{
			 //Opens the image and stores it in a temp surface
			 SDL_Surface* temp = IMG_Load( path.c_str() );
			
			 //If the image didn't load
			  if( temp == NULL )
			  {
				  return NULL;
			  }
			  
			   //Optimises the temp surface
			   SDL_Surface* optimized = SDL_DisplayFormat( temp );
			  
			   //Map the color key
			   Uint32 colorkey = SDL_MapRGB( optimized->format, 255, 0, 255 );
	
			   //Set all pixels of color R 0, G 0xFF, B 0xFF to be transparent
			   SDL_SetColorKey( optimized, SDL_SRCCOLORKEY, colorkey );
	
			  
			   //Free's the memory consumed by temp
			   SDL_FreeSurface( temp );
			  
			   return optimized;
		  
}

class present
{
	  private:
	
	  int x, y, w, h, yVel;
	
	  SDL_Rect offsets;
	
	  SDL_Surface* sprite;
	
	  public:
	
	  present();
	
	  ~present();
	
	  void move();
	
	  void show();
	
};
present::~present()
{
				   SDL_FreeSurface( sprite );
}
present::present():
w( 51 ),
h( 48 ),
yVel( 1 ),
x( rand() % SDL_GetVideoSurface()->clip_rect.w ),
y( 48 )

{
		  
		   std::stringstream temp;
		   temp << "Pres" << (rand() % 5) + 1 << ".bmp";
		  
		   sprite = open_sprite( temp.str().c_str() );
}

void present::move()
{
	  y += yVel;
	
	  if( (y + h) >= 589 )
	  {
		  y += -yVel;
	  }
}

void present::show()
{
	  offsets.x = x;
	  offsets.y = y;
	
	  apply_sprite( sprite, &amp;amp;offsets );
}


int main( int argv, char* argc[] )
{
	 srand( static_cast<unsigned int>(time(0)));
	
	 SDL_Init( SDL_INIT_EVERYTHING );  
	
	 SDL_Surface* screen = SDL_SetVideoMode( 500, 657, 32, SDL_SWSURFACE );
	
	 if( screen == NULL )
	 {
		 return 1;
	 }
	
	 SDL_Surface* backround = open_sprite( "Backround.bmp" );
	
	 if( backround == NULL )
	 {
		 return 1;
	 }
	
	 SDL_WM_SetCaption( "Merry Christmas!", NULL );
	
	 bool quit = false;
	
	 int maximum_presents = 2;
	
	 std::vector<present> presents;
	 std::vector<present>::iterator it;

// Begin OP's bolded code
	 for( int i = 0; i < maximum_presents; i++ )
	 {
		 present temp;
		 presents.push_back( temp );
	 }
// End OP's bolded code

	 SDL_Event event;
	
	 int time = SDL_GetTicks();
	
	 while( !quit )
	 {  
	

		 while( SDL_PollEvent(&amp;amp;event) )
		 {
				if( event.type == SDL_QUIT )
				{
					quit = true;
				}
		 }

		 SDL_FillRect( screen, &amp;amp;screen->clip_rect, SDL_MapRGB( screen->format, 255, 255, 255) );
		
		 if( !apply_sprite( backround ) )
		 {
			 return 1;
		 }
		
			  
		 for( it = presents.begin(); it != presents.end(); it++ )
		 {
			  it->move();
		 }
		
		
		 for( it = presents.begin(); it != presents.end(); it++ )
		 {
			it->show();
		 }	  
		
		 SDL_Flip( screen );		
	 }
	
	 SDL_Quit();
	 SDL_FreeSurface( backround );
	
	 return 0;
}
I've highlighted the problematic lines.
If you could help, I'd be grateful.

SDL Program problems

02 December 2012 - 09:53 AM

Hello, I'm relatively new to SDL and I'm having a pretty annoying issue right now. Whenever I initialise a Player object, the game instantly quits upon execution. However, if I don't, the game runs fine.

PLAYER.H - http://pastebin.com/4wACH9dj
PLAYER.CPP - http://pastebin.com/xuv51qBX
GAME.H - http://pastebin.com/0TnpFWp4
GAME.CPP - http://pastebin.com/2YdKJjmr
MAIN.CPP - http://pastebin.com/ttsn3bVY

I'd be grateful if someone skimmed what I've typed and would help. Thx.

How to tackle designing?

23 November 2012 - 04:38 PM

I'm an SDL newbie and I'm competent with the fundamentals of C++. How should I design a game prior? I've tried thinking of the objects I require but that resulted in incoherent spagetti code. Thanks Posted Image

PARTNERS