Пример #1
0
int WINAPI WinMain( HINSTANCE, HINSTANCE, LPSTR, int )
{	
	// Check for memory leaks if debug build
	#if defined( DEBUG ) | defined( _DEBUG )
		_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );	
	#endif
	
	hge = hgeCreate( HGE_VERSION );
		
	hge->System_SetState( HGE_FRAMEFUNC, FrameFunc );
	hge->System_SetState( HGE_RENDERFUNC, RenderFunc );
	hge->System_SetState( HGE_WINDOWED, true );	
	hge->System_SetState( HGE_SCREENWIDTH, GAME_WIDTH );
	hge->System_SetState( HGE_SCREENHEIGHT, GAME_HEIGHT );
	hge->System_SetState( HGE_SCREENBPP, 32 );
	hge->System_SetState( HGE_TITLE, "Maze" );

	// Prevent Multiple Instances
    if ( AnotherInstance( ) )
        return false;
	
	if( hge->System_Initiate( ) )
	{
		while( true )
		{
			try
			{
				scene = Scene::getInstance( toNextMap );
				objects = Objects::getInstance( );

				hge->System_Start();
			}
			catch( const game_errors& error )
			{
				ProcessGameErrors( error );
				return 0;
			}
			catch(...)
			{
				ShowErrorMessageIfAnyAndSafeExit( "Something goes wrong." );
				return 0;
			}		

			if( toExit )
			{
				break;
			}
			toExit = true;
			ReleaseGameSources();
		}
	}
	else
	{
		MessageBox( NULL, hge->System_GetErrorMessage( ), "Error", MB_OK | MB_ICONERROR | MB_SYSTEMMODAL );
	}

	ShowErrorMessageIfAnyAndSafeExit( ); 
	return 0;
}
Пример #2
0
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpCmdLine, int nCmdShow )
{

	MyGyouretuKeisan k;

	MYMATRIX mat;
	float matf[16];
	for (int i=0;i<16;i++) {
		mat.m[i/4][i%4] = rand() %30 + 1;
		matf[i] = mat.m[i/4][i%4];
	}
	float mat_out[16];
	float edayo[16];

	k.getMatrixInverse(matf,4,mat_out);
	k.getMatrixMultiply(4,4,matf,4,4,mat_out, edayo);

	MYMATRIX inv_mat;
	for (int i=0;i<16;i++) {
		inv_mat.m[i/4][i%4] = mat_out[i];
	}
//	MyMatrixMultiply(mat,inv_mat,mat);
	MyMatrixInverse(mat,NULL,mat);

	/*
	float matdayo[12*12];
	float matdayo2[12*12];
	float out_matdayo[12*12];
	for (int i=0;i<144;i++) {
		matdayo[i] = rand() % 30 + 1;
	}
	k.getMatrixInverse(matdayo,12,matdayo2);
	k.getMatrixMultiply(12,12,matdayo,12,12,matdayo2,out_matdayo);
	*/



	UNREFERENCED_PARAMETER(hPrevInstance);
	UNREFERENCED_PARAMETER(lpCmdLine);
#ifdef _DEBUG	
	_CrtSetDbgFlag ( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
#define D3D_DEBUG_INFO
#endif
	setlocale( LC_ALL, "Japanese" );

	if (AnotherInstance()) {
		return 0;
	}

	Input* input = new Input();
	MSG msg = {0};
	try {
	if(FAILED( InitWindow(hInstance, nCmdShow, input))){
		return 0;
	}
	} catch (KTROBO::GameError* err) {
		KTROBO::mylog::writelog(KTROBO::FATAL_ERROR, "init device failure");
		KTROBO::mylog::writelog(err->getErrorCode(),err->getMessage());
	//	MessageBoxA(g_hWnd,err->getMessage(),KTROBO::GameError::getErrorCodeString(err->getErrorCode()),MB_OK);
		delete err;
	
		goto ktrobo_error;
	} catch (...) {
		goto ktrobo_error;
	}
	
	

	game = new KTROBO::Game();
	
	try {
	
		game->Init(g_hWnd);
	} catch (KTROBO::GameError* err) {

		KTROBO::mylog::writelog(KTROBO::FATAL_ERROR, "init device failure");
		KTROBO::mylog::writelog(err->getErrorCode(),err->getMessage());
	//	MessageBoxA(g_hWnd,err->getMessage(),KTROBO::GameError::getErrorCodeString(err->getErrorCode()),MB_OK);
		delete err;
		

		goto ktrobo_error;
	} catch (...) {
		goto ktrobo_error;
	}

	// Main message loop
	//MSG msg = {0};
	try {
		
	
	while( WM_QUIT != msg.message ){
		if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) ){
			TranslateMessage( &msg );
			DispatchMessage( &msg );
		}else{
			Sleep(1);
			InputMessageDispatcher::messageMake();
		}
	}
	}catch (KTROBO::GameError& err) {
		KTROBO::mylog::writelog(err.getErrorCode(),err.getMessage());
//		MessageBoxA(g_hWnd,err.getMessage(),KTROBO::GameError::getErrorCodeString(err.getErrorCode()),MB_OK);
	} catch (...) {
//		MessageBoxW(g_hWnd,L"unknown error",L"ERROR",MB_OK);
	}

ktrobo_error:

	ClearMainWindow(hInstance);
	if (input) {
		delete input;
		input = 0;
	}
	if (game) {
		game->Del();
		delete game;
		game = 0;
	}
	KTROBO::CS::instance()->Del();

	return 0;//(int)msg.wParam;
}