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; }
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; }