コード例 #1
0
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine,
                   int nCmdShow)
{

	b2Vec2 gravity(0.0f, -10.0f);


	// CREATE THE GAME
	Game *balloonEscapeGame = new Game();
	// FIRST WE'LL SETUP THE DATA LOADER, SINCE IT MAY NEED TO READ
	// IN DATA TO SETUP OTHER STUFF
	BalloonEscapeDataLoader *balloonEscapeDataLoader = new BalloonEscapeDataLoader();
	balloonEscapeDataLoader->initWinHandle(hInstance, nCmdShow);
	balloonEscapeGame->setDataLoader(balloonEscapeDataLoader);
	balloonEscapeDataLoader->loadGame(balloonEscapeGame, W_INIT_FILE);
	
	// WHAT WE SHOULD BE DOING HERE IS LOADING THE GAME DATA FROM FILES. THIS
	// MEANS THE GUIS THEMSELVES AS WELL AS THE LEVELS. THAT WILL BE LEFT
	// FOR BECHMARK HWS. FOR NOW WE WILL JUST HARD CODE THE LOADING OF THE GUI

	// LOAD THE GUI STUFF, AGAIN, NOTE THAT THIS SHOULD REALLY
	// BE DONE FROM A FILE, NOT HARD CODED
	balloonEscapeDataLoader->loadGUI(balloonEscapeGame, W_GUI_INIT_FILE);

	// SPECIFY WHO WILL HANDLE BUTTON EVENTS
	BalloonEscapeButtonEventHandler *balloonEscapeButtonHandler = new BalloonEscapeButtonEventHandler();
	GameGUI *gui = balloonEscapeGame->getGUI();
	gui->registerButtonEventHandler((ButtonEventHandler*)balloonEscapeButtonHandler);
	// SPECIFY WHO WILL HANDLE KEY EVENTS
	BalloonEscapeKeyEventHandler *balloonEscapeKeyHandler = new BalloonEscapeKeyEventHandler();
	balloonEscapeGame->getInput()->registerKeyHandler((KeyEventHandler*)balloonEscapeKeyHandler);

	// THIS WILL HANDLE PHYSICS COLLISION EVENTS
	BalloonEscapeCollisionListener *balloonEscapeCollisionListener = new BalloonEscapeCollisionListener();
	balloonEscapeGame->getGSM()->getPhysics()->setCollisionListener(balloonEscapeCollisionListener);

	// START THE GAME LOOP
	balloonEscapeGame->runGameLoop();

	// GAME'S OVER SHUTDOWN ALL THE STUFF WE CONSTRUCTED HERE
	delete (WindowsOS*)balloonEscapeGame->getOS();
	delete (WindowsInput*)balloonEscapeGame->getInput();
	delete (WindowsTimer*)balloonEscapeGame->getTimer();
	delete (DirectXGraphics*)balloonEscapeGame->getGraphics();
	delete (BalloonEscapeTextGenerator*)balloonEscapeGame->getText()->getTextGenerator();
	delete balloonEscapeButtonHandler;
	delete balloonEscapeKeyHandler;
	delete balloonEscapeGame;

	// AND RETURN
	return 0;
}
コード例 #2
0
/*
	WinMain - This is the application's starting point. In this method we will construct a Game object,
	then initialize all the platform-dependent technologies, then construct all the custom data for our
	game, and then initialize the Game with	our custom data. We'll then start the game loop.
*/
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine,
                   int nCmdShow)
{
    // CREATE THE GAME
    Game *dummyGame = new Game();

    // FIRST WE'LL SETUP THE DATA LOADER, SINCE IT MAY NEED TO READ
    // IN DATA TO SETUP OTHER STUFF
    GroupGameDataLoader *dummyDataLoader = new GroupGameDataLoader();
    dummyDataLoader->initWinHandle(hInstance, nCmdShow);
    dummyGame->setDataLoader(dummyDataLoader);
    dummyDataLoader->loadGame(dummyGame, GG_INIT_FILE);

    // WHAT WE SHOULD BE DOING HERE IS LOADING THE GAME DATA FROM FILES. THIS
    // MEANS THE GUIS THEMSELVES AS WELL AS THE LEVELS. THAT WILL BE LEFT
    // FOR BECHMARK HWS. FOR NOW WE WILL JUST HARD CODE THE LOADING OF THE GUI

    // LOAD THE GUI STUFF, AGAIN, NOTE THAT THIS SHOULD REALLY
    // BE DONE FROM A FILE, NOT HARD CODED
    dummyDataLoader->loadGUI(dummyGame, L"");

    // SPECIFY WHO WILL HANDLE BUTTON EVENTS
    GroupGameButtonEventHandler *dummyButtonHandler = new GroupGameButtonEventHandler();
    GameGUI *gui = dummyGame->getGUI();
    gui->registerButtonEventHandler((ButtonEventHandler*)dummyButtonHandler);

    // SPECIFY WHO WILL HANDLE KEY EVENTS
    GroupGameKeyEventHandler *dummyKeyHandler = new GroupGameKeyEventHandler();
    dummyGame->getInput()->registerKeyHandler((KeyEventHandler*)dummyKeyHandler);

    // START THE GAME LOOP
    dummyGame->runGameLoop();

    // GAME'S OVER SHUTDOWN ALL THE STUFF WE CONSTRUCTED HERE
    delete (WindowsOS*)dummyGame->getOS();
    delete (WindowsInput*)dummyGame->getInput();
    delete (WindowsTimer*)dummyGame->getTimer();
    delete (DirectXGraphics*)dummyGame->getGraphics();
    delete (GroupGameTextGenerator*)dummyGame->getText()->getTextGenerator();
    delete dummyButtonHandler;
    delete dummyKeyHandler;
    delete dummyGame;

    // AND RETURN
    return 0;
}
コード例 #3
0
/*
	WinMain - This is the application's starting point. In this
	method we will construct a Game object, then construct all the
	custom data for our game, and then initialize the Game with
	our custom data. We'll then start the game loop.
*/
int WINAPI WinMain(HINSTANCE hInstance,
                   HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine,
                   int nCmdShow)
{
	// USE WINDOWED MODE (ONE LESS HEADACHE)
	bool fullscreen = false;

	// CREATE A GAME
	file = "";
	Game *worldRenderingGame = new Game();
	

	// SPECIFY THE DIRECTORY WHERE ALL GAME DESIGN FILES
	// ARE TO BE LOADED FROM
	wchar_t *gameDataPathName = constructEmptyWCHAR_TArray(L"design/");

	// WE'RE USING THE WINDOWS PLATFORM, SO MAKE A CUSTOM
	// GameOS OBJECT (WindowsGameOS), FOR SOME WINDOWS
	// PLATFORM STUFF, INCLUDING A Window OF COURSE
	wchar_t *gameTitle = constructEmptyWCHAR_TArray(L"World Scrolling Game");
	WindowsGameOS *os = new WindowsGameOS(	hInstance, 
											nCmdShow,
											fullscreen,
											gameTitle,
											worldRenderingGame);

	// RENDERING WILL BE DONE USING DirectX
	DirectXGraphics *graphics = new DirectXGraphics(worldRenderingGame);
	graphics->init();
	graphics->initGraphics(os->getWindowHandle(), fullscreen);
	graphics->initTextFont(22);
	// SOUND STUFF FROM XACT	
	XactSound *sound= new XactSound(worldRenderingGame);
	sound->intiSound();
	// WE'LL USE WINDOWS PLATFORM METHODS FOR GETTING INPUT
	WindowsGameInput *input = new WindowsGameInput();

	// AND THE TIMER
	WindowsGameTimer *timer = new WindowsGameTimer();

	// NOW INITIALIZE THE Game WITH ALL THE
	// PLATFORM AND GAME SPECIFIC DATA WE JUST CREATED
	worldRenderingGame->init(	gameDataPathName,
						(GameGraphics*)graphics,
						(GameOS*)os,
						(GameInput*)input,
						(GameTimer*)timer);

	// LOAD OUR CUSTOM TEXT GENERATOR, WHICH DRAWS
	// TEXT ON THE SCREEN EACH FRAME
	WRTextGenerator *textGenerator = new WRTextGenerator();
	textGenerator->initText(worldRenderingGame);
	worldRenderingGame->getText()->setTextGenerator((TextGenerator*)textGenerator);

	// LOAD THE GUI STUFF, NOTE THAT THIS SHOULD REALLY
	// BE DONE FROM A FILE, NOT HARD CODED
	initWRgui(worldRenderingGame);

	// SPECIFY WHO WILL HANDLE BUTTON EVENTS
	WRButtonEventHandler *eventHandler = new WRButtonEventHandler();
	GameGUI *gui = worldRenderingGame->getGUI();
	gui->registerButtonEventHandler((ButtonEventHandler*)eventHandler);

	// SPECIFY WHO WILL HANDLE KEY EVENTS
	WRKeyEventHandler *keyHandler = new WRKeyEventHandler();
	input->registerKeyHandler((KeyEventHandler*)keyHandler);

	GameWorld *world = worldRenderingGame->getWorld();
	dataloader = worldRenderingGame->getDataLoader();

	// START THE GAME LOOP
	worldRenderingGame->runGameLoop();

	return 0;
}