Game Object Creator

Add a 2D Sprite

  • Add a 2D Sprite

Written by: Andy Odle
Date: May 02, 2010

1.) Download the Ball.zip file from here.

2.) Extract Ball.png and copy it into your game's "./debug/images/" folder.

3.) Open GOC.h in CodeLite.

4.) Add the includes for Sprite.h and MathGOC.h (See Code Example 1:).

Code Example 1:

			        /*
				        File Name: GOC.h
			        */
			
			        /* Add new include files here */

			        #include "./source/PlatformSpecific/inc/Sprite.h"
			        #include "./source/inc/MathGOC.h"
			
			        

5.) Add a private Sprite pointer called ball_m to GOC.h (See Code Example 2:).

Code Example 2:

			        /*
				        File Name: GOC.h
			        */
			
			        private:

				        /* Add private variables here. */

				        Sprite *ball_m;
			        };
			
			        #endif							
			        

6.) Save the changes to GOC.h.

7.) Open main.cpp in CodeLite.

       Add the following code to the inside of GOC::Initialize() function.

A.) Create a PointGOC cordinate structure and name it ballPosition_l
     (See Example Code 3:).

B.) Initilize ballPosition_l's x-cordinate to half of the window's width, y-cordinate to
     half of the window's height and the z-cordinate to 0.0f (See Example Code 3:).

Example Code 3:

				        /*
					        File Name: main.cpp
				        */

				        /*
					        Initialize your game scene, and game variables here.
				        */

				        // Fill out the sprite's x-cor, y-cor and z-cor
				        // structure.
				        PointGOC ballPosition_l = {GetWindowWidth() / 2, 
										           GetWindowHeight() / 2,
										           0.0f};							
			        

C.) Create a new Sprite instance for ball_m (See Example Code 4:).

D.) Set ball_m's starting position, width and height (See Example Code 4:).

E.) Load and apply a texture to ball_m (See Example Code 4:).

F.) Set the default visibility flag for ball_m (See Example Code 4:).

Code Example 4:

				        // Create a new instance of your sprite.
				        ball_m = new Sprite();

				        // Change the position of your sprite by passing
				        // in a filled out PointGOC structrue and the
				        // sprite's with and height.
				        ball_m->Set2DPosition(ballPosition_l,
									          24,                     
									          24);                    

				        // Apply a texture to your sprite.
				        ball_m->GetTexture()->LoadTexture("./images/Ball.png");

				        // Make your sprite visible or invisible.
				        ball_m->SetVisible(true);
				        }								
			        

       Add the following code to the inside of GOC::Destroy() function.

A.) Delete the ball_m instance (See Example Code 5:).

Code Example 5:

				        /*
					        Clean up after your game here.
				        */

				        // Destroy your sprite when you are done with it.
				        delete ball_m;			
			        

8.) Click Build > Build and Run Project if there were no errors you should see
     a sprite drawn to the center of the screen (See Figure 1:).

Figure 1: First sprite on the screen.
First sprite on the screen

(Click to Enlarge)

(Back to "Windows" or "Ubuntu" Tutorials)

2D Sprite Complete Example:


       You can get the complete example source code here.
			        /*
				        File Name: GOC.h
				        Created By: Andy Odle
				        Date: July 27, 2009
			        */

			        #ifndef GOC_h
			        #define GOC_h

			        #include "./source/PlatformSpecific/inc/ErrorReport.h"
			        #include "./source/inc/TimeGOC.h"
			        #include "./source/inc/InputEngine.h"

			        /* Add new include files here */

			        #include "./source/PlatformSpecific/inc/Sprite.h"
			        #include "./source/inc/MathGOC.h"

			        class GOC
			        {
				        public:

					        // Initilizes the developer's game.
					        virtual void Initialize();

					        // Updates the developer's game state.
					        virtual void Update(TimeGOC *timeGOC_p, 
					                            InputEngine *input_p);
										
					        virtual void IndepedentUpdate(TimeGOC *timeGOC_p, 
					                                   InputEngine *input_p);

					        // Ceans up the developer's game.
					        virtual void Destroy();

					        // This is how you interact with the GOC.
					        // 
					        // Output:
					        //         Returns the Game Object Creator instance 
					        //         pointer.
					        static GOC *goc_i();

					        // Get the window's width and height.
					        int GetWindowWidth();
					        int GetWindowHeight();

					        // Start the setup of the Game Object Creator.
					        #ifdef _WIN32
						        void LoadGOC(HINSTANCE &hinstance_p);
					        #else
						        void LoadGOC();
					        #endif

					        // Clean up the Game Object Creator.
					        void UnloadGOC();

					        ErrorReport *GetErrorReport();        

				        private:

					        GOC();
					        ~GOC();
					        GOC(GOC const&){};
					        GOC &operator=(GOC const&){};
        
				        private:

					        /* Add private variables here. */

					        Sprite *ball_m;
			        };

			        #endif

			        

                    
				        /* 
				            Date Created: Apr 29, 2010
					        FileName: main.cpp

					        First Sprite Example 
				        */
                    
				        #include "./source/PlatformSpecific/inc/GOC.h"
                    
				        void GOC::Initialize()
				        {
					        /* 
						        Initialize your game scene, and game 
                                variables here. 
					        */

					        // Fill out the sprite's x-cor, y-cor and z-cor 
					        // structure.
					        PointGOC ballPosition_l = {GetWindowWidth() / 2,  
											           GetWindowHeight() / 2, 
											           0.0f};                 
                            
					        // Create a new instance of your sprite.
					        ball_m = new Sprite(); 
					
					        // Change the position of your sprite by passing
					        // in a filled out PointGOC structrue and the
					        // sprite's with and height.
					        ball_m->Set2DPosition(ballPosition_l,
										          24,                      
										          24);                     
					
					        // Apply a texture to your sprite.
                            ball_m->GetTexture()->LoadTexture("./images/Ball.png");
					
					        // Make your sprite visible or invisible.
                            ball_m->SetVisible(true); 
                        }
                    
				        void GOC::Update(TimeGOC *timeGOC_p, InputEngine *input_p)
				        {
					        /*
						        Update your game scenes, check for collisions, 
						        check for input and play sounds here.
					        */
				        }
                        
				        void GOC::IndepedentUpdate(TimeGOC* timeGOC_p, InputEngine* input_p)
                        {
					        /* 
						        Update your game scenes, check for collisions, 
						        check for input	and play sounds here.
					        */
				        }
				
				        void GOC::Destroy()
				        {
					        /* 
						        Clean up after your game here.
					        */
					
					        // Destroy your sprite when you are done with it.
					        delete ball_m;
				        }
                    
				        #ifdef _WIN32
                    
					        // Define the windows main funciton.
					        int WINAPI WinMain(HINSTANCE hInstance, 
									           HINSTANCE hPrevInstance, 
									           LPSTR lpCmdLine, 
									           int nCmdShow)
                                           
				        #else
                    
					        // Define the ubutnu main function.
					        int main(int argc, char **argv)
                        
				        #endif
                    
					        {
						        #ifdef _WIN32
							        // Start the GOC on windows.
							        GOC::goc_i()->LoadGOC(hInstance);
						        #else
							        // Start the GOC on ubuntu.
							        GOC::goc_i()->LoadGOC();
						        #endif
                            
						        // Destroy and cleanup GOC.
						        GOC::goc_i()->UnloadGOC();
                            
						        return 0;
					        }
                        
		            



Legal Info  About GOC  Contact Us