//Super Segd World
//Game.cpp
//Main Program
#include "DXHandle.h"
#include "Background.h"
#include "Player.h"
#include "Enemy.h"
#include "Controls.h"
#include "Items.h"
#include "HUD.h"
#include "GameStates.h"
#include "TitleScreen.h"
//title of app
const string APPTITLE = "Super Segd World";
//Game Initialisation
bool Game_Init(HWND window)
{
//set random number seed
srand(time(NULL));
//Initialise Direct 3D for use, return error message if something goes wrong
if (!Direct3D_Init(window, SCREENW, SCREENH, false))
{
MessageBox(0, "Error initialising Direct3D", "Error", 0);
return false;
}
//Initialise Direct Input for use, return error message if something goes wrong
if (!DirectInput_Init(window))
{
MessageBox(0, "Error initialising DirectInput", "Error", 0);
return false;
}
//Initialise Direct Sound for use, return error message if something goes wrong
if (!Init_DirectSound(window))
{
MessageBox(0, "Error initialising DirectSound", "Error", 0);
return false;
}
//load sprite textures
loadStartScreen();
//-----------------------------------------------------MARIO
Mario_obj = LoadTexture("marioimage.png", bgcolour);
errorWithLoad("marioimage.png", Mario_obj);
//-----------------------------------------------------ITEMS
ItemBlock_obj = LoadTexture("itemblock.png", bgcolour);
errorWithLoad("itemblock.png", ItemBlock_obj);
CoinBlock_obj = LoadTexture("coinblock.png", bgcolour); //also used for plain block
errorWithLoad("coinblock.png", CoinBlock_obj);
Items_obj = LoadTexture("items.png", bgcolour);
errorWithLoad("items.png", Items_obj);
Coins_obj = LoadTexture("coin.png", bgcolour);
errorWithLoad("coin.png", Coins_obj);
GoalPosts_obj = LoadTexture("goalposts.png", bgcolour);
errorWithLoad("goalposts.png", GoalPosts_obj);
GoalBar_obj = LoadTexture("goalbar.png", bgcolour);
errorWithLoad("goalbar.png", GoalBar_obj);
Fireball_obj = LoadTexture("fireball.png", bgcolour);
errorWithLoad("fireball.png", Fireball_obj);
//---------------------------------------------------ENEMIES
RedShell_obj = LoadTexture("spinredshell.png", bgcolour);
errorWithLoad("spinredshell.png", RedShell_obj);
RedTurtle_obj = LoadTexture("redturtle.png", bgcolour);
errorWithLoad("returtle.png", RedTurtle_obj);
Thwomp_obj = LoadTexture("thwomp.png", bgcolour);
errorWithLoad("thwomp.png", Thwomp_obj);
BulletBill_obj = LoadTexture("bulletbill.png", bgcolour);
errorWithLoad("bulletbill.png", BulletBill_obj);
ReznorBackground_obj = LoadTexture("reznorbackground.png", bgcolour);
errorWithLoad("reznorbackground.png", ReznorBackground_obj);
ReznorPlatform_obj = LoadTexture("reznorplatform.png", bgcolour);
errorWithLoad("reznorplatform.png", ReznorPlatform_obj);
Reznor_obj = LoadTexture("reznor.png", bgcolour);
errorWithLoad("reznor.png", Reznor_obj);
ReznorFireball_obj = LoadTexture("reznorfireball.png", bgcolour);
errorWithLoad("reznor.png", ReznorFireball_obj);
//-------------------------------------------------------HUD
HUD_obj = LoadTexture("huddisplay.png", bgcolour);
errorWithLoad("huddisplay.png", HUD_obj);
ItemBoxHUD_obj = LoadTexture("iteminbox_hud.png", bgcolour);
errorWithLoad("iteminbox_hud.png", ItemBoxHUD_obj);
//set properties for sprites
//-----------------------------------------------------MARIO
Mario.setValues(10, 465, 7, 16, 40, 60, 7, 15, 0, 2, 2, 1, 1, health1, 0);
createMarioRect();
//-------------------------------------------------------HUD
createHUDvalues();
//-----------------------------------------------------ITEMS
createItemBlocks();
createItems();
createCoinBlocks();
createPlainBlocks();
createCoinsForCoinBlocks();
createCoinsForPlainBlocks();
createGoalPosts();
//---------------------------------------------------ENEMIES
createRedShells();
createRedTurtles();
createThwomps();
createBulletBills();
createReznor();
//load background image
buildBackground();
//music
loadmusic();
//get the back buffer surface
d3ddev->GetBackBuffer(0, 0, D3DBACKBUFFER_TYPE_MONO, &backbuffer);
return true;
}
//Game Update
void Game_Run(HWND window)
{
//run gamestates
startGame();
//display back buffer on the screen
d3ddev->Present(NULL, NULL, NULL, NULL);
//escape key exits
if (Key_Down(DIK_ESCAPE))
gameover = true;
//controller back button also exits
if (controllers[0].wButtons & XINPUT_GAMEPAD_BACK)
gameover = true;
}
//Game Shutdown
void Game_End()
{
//free memory and shut down
HUDShutdown();
enemyObjShutdown();
itemObjShutdown();
playerObjShutdown();
backgroundShutdown();
DirectInput_Shutdown();
Direct3D_Shutdown();
}
Super SEGD World Main Game Loop
Written primarily in C++ (utilising C elements) this is the main game loop of my Super Mario World Clone, created for the second assignment of 2D Games Programming.