BEGINNING C++ GAME PROGRAMMING

By F. KAUNY

THE GAMES WE WILL BUILD TIMBER!!! PONG ZOMBIE ARENA THOMAS WAS LATE SPACE INVADERS ++ MEET C++ MICROSOFT VISUAL STUDIO SFML SETTING UP THE DEVELOPMENT ENVIRONMENT WHAT ABOUT MAC AND LINUX? INSTALLING VISUAL STUDIO 2019 COMMUNITY EDITION SETTING UP SFML CREATING A NEW PROJECT CONFIGURING THE PROJECT PROPERTIES PLANNING TIMBER!!! THE PROJECT ASSETS OUTSOURCING THE ASSETS MAKING YOUR OWN SOUND FX ADDING THE ASSETS TO THE PROJECT EXPLORING THE ASSETS UNDERSTANDING SCREEN AND INTERNAL COORDINATES GETTING STARTED WITH CODING THE GAME MAKING CODE CLEARER WITH COMMENTS THE MAIN FUNCTION PRESENTATION AND SYNTAX RETURNING VALUES FROM A FUNCTION RUNNING THE GAME OPENING A WINDOW USING SFML #INCLUDING SFML FEATURES OOP, CLASSES, AND OBJECTS USING NAMESPACE SF SFML VIDEOMODE AND RENDERWINDOW THE MAIN GAME LOOP WHILE LOOPS C-STYLE CODE COMMENTS INPUT, UPDATE, DRAW, REPEAT DETECTING A KEY PRESS CLEARING AND DRAWING THE SCENE DRAWING THE GAME'S BACKGROUND PREPARING THE SPRITE USING A TEXTURE DOUBLE BUFFERING THE BACKGROUND SPRITE HANDLING ERRORS CONFIGURATION ERRORS COMPILE ERRORS LINK ERRORS BUGS SUMMARY FAQ CHAPTER 2: VARIABLES, OPERATORS, AND DECISIONS – ANIMATING SPRITES C++ VARIABLES TYPES OF VARIABLES USER-DEFINED TYPES DECLARING AND INITIALIZING VARIABLES DECLARING VARIABLES INITIALIZING VARIABLES DECLARING AND INITIALIZING IN ONE STEP CONSTANTS DECLARING AND INITIALIZING USER-DEFINED TYPES MANIPULATING VARIABLES C++ ARITHMETIC AND ASSIGNMENT OPERATORS GETTING THINGS DONE WITH EXPRESSIONS ADDING CLOUDS, A TREE, AND A BUZZING BEE PREPARING THE TREE PREPARING THE BEE PREPARING THE CLOUDS DRAWING THE TREE, THE BEE, AND THE CLOUDS RANDOM NUMBERS GENERATING RANDOM NUMBERS IN C++ MAKING DECISIONS WITH IF AND ELSE LOGICAL OPERATORS C++ IF AND ELSE IF THEY COME OVER THE BRIDGE, SHOOT THEM! SHOOT THEM … OR ELSE DO THIS INSTEAD READER CHALLENGE TIMING THE FRAME RATE PROBLEM THE SFML FRAME RATE SOLUTION MOVING THE CLOUDS AND THE BEE GIVING LIFE TO THE BEE BLOWING THE CLOUDS CHAPTER 3: C++ STRINGS AND SFML TIME – PLAYER INPUT AND HUD PAUSING AND RESTARTING THE GAME C++ STRINGS DECLARING STRINGS ASSIGNING A VALUE TO A STRING MANIPULATING STRINGS SFML'S TEXT AND FONT CLASSES IMPLEMENTING THE HUD ADDING A TIME-BAR CHAPTER 4: LOOPS, ARRAYS, SWITCHES, ENUMERATIONS, AND FUNCTIONS – IMPLEMENTING GAME MECHANICS LOOPS WHILE LOOPS BREAKING OUT OF A WHILE LOOP FOR LOOPS ARRAYS DECLARING AN ARRAY INITIALIZING THE ELEMENTS OF AN ARRAY QUICKLY INITIALIZING THE ELEMENTS OF AN ARRAY WHAT DO THESE ARRAYS REALLY DO FOR OUR GAMES? MAKING DECISIONS WITH SWITCH CLASS ENUMERATIONS GETTING STARTED WITH FUNCTIONS FUNCTION RETURN TYPES FUNCTION NAMES FUNCTION PARAMETERS THE FUNCTION BODY FUNCTION PROTOTYPES ORGANIZING FUNCTIONS FUNCTION GOTCHA! MORE ON FUNCTIONS AN ABSOLUTE FINAL WORD ON FUNCTIONS – FOR NOW GROWING THE BRANCHES PREPARING THE BRANCHES UPDATING THE BRANCH SPRITES EACH FRAME DRAWING THE BRANCHES MOVING THE BRANCHES CHAPTER 5: COLLISIONS, SOUND, AND END CONDITIONS – MAKING THE GAME PLAYABLE PREPARING THE PLAYER (AND OTHER SPRITES) DRAWING THE PLAYER AND OTHER SPRITES HANDLING THE PLAYER'S INPUT HANDLING SETTING UP A NEW GAME DETECTING THE PLAYER CHOPPING DETECTING A KEY BEING RELEASED ANIMATING THE CHOPPED LOGS AND THE AXE HANDLING DEATH SIMPLE SOUND FX HOW SFML SOUND WORKS WHEN TO PLAY THE SOUNDS ADDING THE SOUND CODE IMPROVING THE GAME AND THE CODE CHAPTER 6: OBJECT-ORIENTED PROGRAMMING – STARTING THE PONG GAME OOP ENCAPSULATION POLYMORPHISM INHERITANCE WHY USE OOP? WHAT EXACTLY IS A CLASS? THE THEORY OF A PONG BAT THE CLASS VARIABLE AND FUNCTION DECLARATIONS THE CLASS FUNCTION DEFINITIONS USING AN INSTANCE OF A CLASS CREATING THE PONG PROJECT CODING THE BAT CLASS CODING BAT H CONSTRUCTOR FUNCTIONS CONTINUING WITH THE BAT H EXPLANATION CODING BAT CPP USING THE BAT CLASS AND CODING THE MAIN FUNCTION CHAPTER 7: DYNAMIC COLLISION DETECTION AND PHYSICS – FINISHING THE PONG GAME CODING THE BALL CLASS USING THE BALL CLASS COLLISION DETECTION AND SCORING CHAPTER 8: SFML VIEWS – STARTING THE ZOMBIE SHOOTER GAME PLANNING AND STARTING THE ZOMBIE ARENA GAME OOP AND THE ZOMBIE ARENA PROJECT BUILDING THE PLAYER – THE FIRST CLASS CODING THE PLAYER CLASS HEADER FILE CODING THE PLAYER CLASS FUNCTION DEFINITIONS CONTROLLING THE GAME CAMERA WITH SFML VIEW STARTING THE ZOMBIE ARENA GAME ENGINE MANAGING THE CODE FILES STARTING TO CODE THE MAIN GAME LOOP CHAPTER 9: C++ REFERENCES, SPRITE SHEETS, AND VERTEX ARRAYS C++ REFERENCES REFERENCES SUMMARY SFML VERTEX ARRAYS AND SPRITE SHEETS WHAT IS A SPRITE SHEET? WHAT IS A VERTEX ARRAY? BUILDING A BACKGROUND FROM TILES BUILDING A VERTEX ARRAY USING THE VERTEX ARRAY TO DRAW CREATING A RANDOMLY GENERATED SCROLLING BACKGROUND USING THE BACKGROUND CHAPTER 10: POINTERS, THE STANDARD TEMPLATE LIBRARY, AND TEXTURE MANAGEMENT LEARNING ABOUT POINTERS POINTER SYNTAX DECLARING A POINTER INITIALIZING A POINTER REINITIALIZING POINTERS DEREFERENCING A POINTER POINTERS ARE VERSATILE AND POWERFUL DYNAMICALLY ALLOCATED MEMORY PASSING A POINTER TO A FUNCTION DECLARING AND USING A POINTER TO AN OBJECT POINTERS AND ARRAYS SUMMARY OF POINTERS THE STANDARD TEMPLATE LIBRARY WHAT IS A MAP? DECLARING A MAP ADDING DATA TO A MAP FINDING DATA IN A MAP REMOVING DATA FROM A MAP CHECKING THE SIZE OF A MAP CHECKING FOR KEYS IN A MAP LOOPING/ITERATING THROUGH THE KEY-VALUE PAIRS OF A MAP THE AUTO KEYWORD STL SUMMARY THE TEXTUREHOLDER CLASS CODING THE TEXTUREHOLDER HEADER FILE CODING THE TEXTUREHOLDER FUNCTION DEFINITIONS WHAT HAVE WE ACHIEVED WITH TEXTUREHOLDER? BUILDING A HORDE OF ZOMBIES CODING THE ZOMBIE H FILE CODING THE ZOMBIE CPP FILE USING THE ZOMBIE CLASS TO CREATE A HORDE BRINGING THE HORDE TO LIFE (BACK TO LIFE) USING THE TEXTUREHOLDER CLASS FOR ALL TEXTURES CHANGING THE WAY THE BACKGROUND GETS ITS TEXTURES CHANGING THE WAY THE PLAYER GETS ITS TEXTURE CHAPTER 11: COLLISION DETECTION, PICKUPS, AND BULLETS CODING THE BULLET CLASS CODING THE BULLET HEADER FILE CODING THE BULLET SOURCE FILE MAKING THE BULLETS FLY INCLUDING THE BULLET CLASS CONTROL VARIABLES AND THE BULLET ARRAY RELOADING THE GUN SHOOTING A BULLET UPDATING THE BULLETS EACH FRAME DRAWING THE BULLETS EACH FRAME GIVING THE PLAYER A CROSSHAIR CODING A CLASS FOR PICKUPS CODING THE PICKUP HEADER FILE CODING THE PICKUP CLASS FUNCTION DEFINITIONS USING THE PICKUP CLASS DETECTING COLLISIONS HAS A ZOMBIE BEEN SHOT? HAS THE PLAYER BEEN TOUCHED BY A ZOMBIE? HAS THE PLAYER TOUCHED A PICKUP? CHAPTER 12: LAYERING VIEWS AND IMPLEMENTING THE HUD ADDING ALL THE TEXT AND HUD OBJECTS UPDATING THE HUD DRAWING THE HUD, HOME, AND LEVEL-UP SCREENS CHAPTER 13: SOUND EFFECTS, FILE I/O, AND FINISHING THE GAME SAVING AND LOADING THE HIGH SCORE PREPARING SOUND EFFECTS LEVELING UP RESTARTING THE GAME PLAYING THE REST OF THE SOUNDS ADDING SOUND EFFECTS WHILE THE PLAYER IS RELOADING MAKING A SHOOTING SOUND PLAYING A SOUND WHEN THE PLAYER IS HIT PLAYING A SOUND WHEN GETTING A PICKUP MAKING A SPLAT SOUND WHEN A ZOMBIE IS SHOT CHAPTER 14: ABSTRACTION AND CODE MANAGEMENT – MAKING BETTER USE OF OOP THE THOMAS WAS LATE GAME FEATURES OF THOMAS WAS LATE CREATING THE PROJECT THE PROJECT'S ASSETS GAME LEVEL DESIGNS GLSL SHADERS THE GRAPHICAL ASSETS CLOSE UP THE SOUND ASSETS CLOSE UP STRUCTURING THE THOMAS WAS LATE CODE BUILDING THE GAME ENGINE REUSING THE TEXTUREHOLDER CLASS CODING ENGINE H CODING ENGINE CPP CODING THE ENGINE CLASS CONSTRUCTOR DEFINITION CODING THE RUN FUNCTION DEFINITION CODING THE INPUT FUNCTION DEFINITION CODING THE UPDATE FUNCTION DEFINITION CODING THE DRAW FUNCTION DEFINITION THE ENGINE CLASS SO FAR CODING THE MAIN FUNCTION CHAPTER 15: ADVANCED OOP – INHERITANCE AND POLYMORPHISM EXTENDING A CLASS ABSTRACT CLASSES – VIRTUAL AND PURE VIRTUAL FUNCTIONS BUILDING THE PLAYABLECHARACTER CLASS CODING PLAYABLECHARACTER H CODING PLAYABLECHARACTER CPP BUILDING THE THOMAS AND BOB CLASSES CODING THOMAS H CODING THOMAS CPP CODING BOB H CODING BOB CPP UPDATING THE GAME ENGINE TO USE THOMAS AND BOB UPDATING ENGINE H TO ADD AN INSTANCE OF BOB AND THOMAS UPDATING THE INPUT FUNCTION TO CONTROL THOMAS AND BOB UPDATING THE UPDATE FUNCTION TO SPAWN AND UPDATE THE PLAYABLECHARACTER INSTANCES SPAWNING THOMAS AND BOB UPDATING THOMAS AND BOB EACH FRAME DRAWING BOB AND THOMAS CHAPTER 16: BUILDING PLAYABLE LEVELS AND COLLISION DETECTION DESIGNING SOME LEVELS BUILDING THE LEVELMANAGER CLASS CODING LEVELMANAGER H CODING THE LEVELMANAGER CPP FILE CODING THE LOADLEVEL FUNCTION UPDATING THE ENGINE COLLISION DETECTION CODING THE DETECTCOLLISIONS FUNCTION MORE COLLISION DETECTION CHAPTER 17: SOUND SPATIALIZATION AND THE HUD WHAT IS SPATIALIZATION? EMITTERS, ATTENUATION, AND LISTENERS HANDLING SPATIALIZATION USING SFML BUILDING THE SOUNDMANAGER CLASS CODING SOUNDMANAGER H CODING THE SOUNDMANAGER CPP FILE CODING THE CONSTRUCTOR CODING THE PLAYFIRE FUNCTION CODING THE REST OF THE SOUNDMANAGER FUNCTIONS ADDING SOUNDMANAGER TO THE GAME ENGINE POPULATING THE SOUND EMITTERS CODING THE POPULATEEMITTERS FUNCTION PLAYING SOUNDS IMPLEMENTING THE HUD CLASS CODING HUD H CODING THE HUD CPP FILE USING THE HUD CLASS CHAPTER 18: PARTICLE SYSTEMS AND SHADERS BUILDING A PARTICLE SYSTEM CODING THE PARTICLE CLASS CODING PARTICLE H CODING THE PARTICLE CPP FILE CODING THE PARTICLESYSTEM CLASS EXPLORING SFML'S DRAWABLE CLASS AND OOP AN ALTERNATIVE TO INHERITING FROM DRAWABLE CODING PARTICLESYSTEM H CODING THE PARTICLESYSTEM CPP FILE USING THE PARTICLESYSTEM OBJECT ADDING A PARTICLESYSTEM OBJECT TO THE ENGINE CLASS INITIALIZING PARTICLESYSTEM UPDATING THE PARTICLE SYSTEM EACH FRAME STARTING THE PARTICLE SYSTEM DRAWING THE PARTICLE SYSTEM OPENGL, SHADERS, AND GLSL THE PROGRAMMABLE PIPELINE AND SHADERS CODING A FRAGMENT SHADER CODING A VERTEX SHADER ADDING SHADERS TO THE ENGINE CLASS LOADING THE SHADERS UPDATING AND DRAWING THE SHADER CHAPTER 19: GAME PROGRAMMING DESIGN PATTERNS – STARTING THE SPACE INVADERS ++ GAME WHY SPACE INVADERS ++? DESIGN PATTERNS SCREEN, INPUTHANDLER, UIPANEL, AND BUTTON ENTITY-COMPONENT PATTERN WHY LOTS OF DIVERSE OBJECT TYPES ARE HARD TO MANAGE USING A GENERIC GAMEOBJECT FOR BETTER CODE STRUCTURE PREFER COMPOSITION OVER INHERITANCE FACTORY PATTERN C++ SMART POINTERS SHARED POINTERS UNIQUE POINTERS CASTING SMART POINTERS C++ ASSERTIONS CREATING THE SPACE INVADERS ++ PROJECT ORGANIZING CODE FILES WITH FILTERS ADDING A DEVELOPSTATE FILE CODING SPACEINVADERS ++ CPP CODING THE GAMEENGINE CLASS CODING THE SOUNDENGINE CLASS CODING THE SCREENMANAGER CLASS CODING THE BITMAPSTORE CLASS CODING THE SCREENMANAGERREMOTECONTROL CLASS WHERE ARE WE NOW? CODING THE SCREEN CLASS AND ITS DEPENDENTS CODING THE BUTTON CLASS CODING THE UIPANEL CLASS CODING THE INPUTHANDLER CLASS CODING THE SCREEN CLASS ADDING THE WORLDSTATE H FILE CODING THE DERIVED CLASSES FOR THE SELECT SCREEN CODING THE SELECTSCREEN CLASS CODING THE SELECTINPUTHANDLER CLASS CODING THE SELECTUIPANEL CLASS CODING THE DERIVED CLASSES FOR THE GAME SCREEN CODING THE GAMESCREEN CLASS CODING THE GAMEINPUTHANDLER CLASS CODING THE GAMEUIPANEL CLASS CODING THE GAMEOVERINPUTHANDLER CLASS CODING THE GAMEOVERUIPANEL CLASS CHAPTER 20: GAME OBJECTS AND COMPONENTS PREPARING TO CODE THE COMPONENTS CODING THE COMPONENT BASE CLASS CODING THE COLLIDER COMPONENTS CODING THE COLLIDERCOMPONENT CLASS CODING THE RECTCOLLIDERCOMPONENT CLASS CODING THE GRAPHICS COMPONENTS CODING THE GRAPHICSCOMPONENT CLASS CODING THE STANDARDGRAPHICSCOMPONENT CLASS CODING THE TRANSFORMCOMPONENT CLASS CODING UPDATE COMPONENTS CODING THE UPDATECOMPONENT CLASS CODING THE BULLETUPDATECOMPONENT CLASS CODING THE INVADERUPDATECOMPONENT CLASS EXPLAINING THE UPDATE FUNCTION EXPLAINING THE DROPDOWNANDREVERSE FUNCTION EXPLAINING THE ISMOVINGRIGHT FUNCTION EXPLAINING THE INITIALIZEBULLETSPAWNER FUNCTION CODING THE PLAYERUPDATECOMPONENT CLASS CODING THE GAMEOBJECT CLASS EXPLAINING THE GAMEOBJECT CLASS EXPLAINING THE DRAW FUNCTION EXPLAINING THE GETGRAPHICSCOMPONENT FUNCTION EXPLAINING THE GETTRANSFORMCOMPONENT FUNCTION EXPLAINING THE ADDCOMPONENT FUNCTION EXPLAINING THE GETTER AND SETTER FUNCTIONS EXPLAINING THE START FUNCTION EXPLAINING THE GETCOMPONENTBYTYPEANDSPECIFICTYPE FUNCTION EXPLAINING THE GETENCOMPASSINGRECTCOLLIDER FUNCTION EXPLAINING THE GETENCOMPASSINGRECTCOLLIDERTAG FUNCTION EXPLAINING THE GETFIRSTUPDATECOMPONENT FUNCTION EXPLAINING THE FINAL GETTER FUNCTIONS CHAPTER 21: FILE I/O AND THE GAME OBJECT FACTORY THE STRUCTURE OF THE FILE I/O AND FACTORY CLASSES DESCRIBING AN OBJECT IN THE WORLD CODING THE GAMEOBJECTBLUEPRINT CLASS CODING THE OBJECTTAGS CLASS CODING THE BLUEPRINTOBJECTPARSER CLASS CODING THE PLAYMODEOBJECTLOADER CLASS CODING THE GAMEOBJECTFACTORYPLAYMODE CLASS CODING THE GAMEOBJECTSHARER CLASS CODING THE LEVELMANAGER CLASS UPDATING THE SCREENMANAGER AND SCREENMANAGERREMOTECONTROL CLASSES CHAPTER 22: USING GAME OBJECTS AND BUILDING A GAME SPAWNING BULLETS CODING THE BULLETSPAWNER CLASS UPDATING GAMESCREEN H USING A GAMEPAD CODING THE PHYSICSENGINEPLAYMODE CLASS MAKING THE GAME UNDERSTANDING THE FLOW OF EXECUTION AND DEBUGGING REUSING THE CODE TO MAKE A DIFFERENT GAME AND BUILDING A DESIGN MODE CHAPTER 23: BEFORE YOU GO THANKS!

ISBN978-93-7738-333-6
Copyright Year2027
Pages719
Price$265.99
LanguageEnglish
FormatPDF