void Result::showResultLose(int score){ int left = -320; int right = 320; int top = 240; int bot = -240; char strbuffer[64]; // L Point pol1(left+60,top-80); Point pol2(left+60,bot+220); Point pol3(left+180,bot+220); Point pol4(left+180,bot+270); Point pol5(left+110,bot+270); Point pol6(left+110,top-80); Point polc((pol1.x+pol3.x)/2,(pol1.y+pol3.y)/2); vector<Point> pol; pol.push_back(pol1); pol.push_back(pol2); pol.push_back(pol3); pol.push_back(pol4); pol.push_back(pol5); pol.push_back(pol6); if (firsttime){ pol_l.setCorner(pol); pol_l.setCenter(polc); Transform scale = createScale(0.1, 0.1); pol_l.applyTransform(scale); } // O Point poo1(left+190,top-80); Point poo2(left+190,bot+220); Point poo3(left+310,bot+220); Point poo4(left+310,top-80); Point poo5(left+230,top-120); Point poo6(left+230,bot+260); Point poo7(left+270,bot+260); Point poo8(left+270,top-120); Point pooc((poo1.x+poo3.x)/2,(poo1.y+poo3.y)/2); vector<Point> poo, poov; poo.push_back(poo1); poo.push_back(poo2); poo.push_back(poo3); poo.push_back(poo4); poov.push_back(poo5); poov.push_back(poo6); poov.push_back(poo7); poov.push_back(poo8); if (firsttime){ pol_o.setCorner(poo); pol_o.setCenter(pooc); pol_o1.setCorner(poov); pol_o1.setCenter(pooc); Transform scale = createScale(0.1, 0.1); pol_o.applyTransform(scale); pol_o1.applyTransform(scale); } // S Point pos1(left+320,top-80); Point pos2(left+320,top-190); Point pos3(left+410,top-190); Point pos4(left+410,top-220); Point pos5(left+320,top-220); Point pos6(left+320,top-260); Point pos7(left+450,top-260); Point pos8(left+450,top-150); Point pos9(left+360,top-150); Point pos10(left+360,top-120); Point pos11(left+450,top-120); Point pos12(left+450,top-80); Point posc((pos1.x+pos7.x)/2,(pos1.y+pos7.y)/2); vector<Point> pos; pos.push_back(pos1); pos.push_back(pos2); pos.push_back(pos3); pos.push_back(pos4); pos.push_back(pos5); pos.push_back(pos6); pos.push_back(pos7); pos.push_back(pos8); pos.push_back(pos9); pos.push_back(pos10); pos.push_back(pos11); pos.push_back(pos12); if (firsttime){ pol_s.setCorner(pos); pol_s.setCenter(posc); Transform scale = createScale(0.1, 0.1); pol_s.applyTransform(scale); } // E Point poe1(left+460,top-80); Point poe2(left+460,bot+220); Point poe3(left+580,bot+220); Point poe4(left+580,bot+260); Point poe5(left+510,bot+260); Point poe6(left+510,bot+290); Point poe7(left+580,bot+220+70); Point poe8(left+580,bot+260+70); Point poe9(left+510,bot+260+70); Point poe10(left+510,bot+290+70); Point poe11(left+580,bot+220+140); Point poe12(left+580,bot+260+140); Point poec((poe1.x+poe3.x)/2,(poe1.y+poe3.y)/2); vector<Point> poe; poe.push_back(poe1); poe.push_back(poe2); poe.push_back(poe3); poe.push_back(poe4); poe.push_back(poe5); poe.push_back(poe6); poe.push_back(poe7); poe.push_back(poe8); poe.push_back(poe9); poe.push_back(poe10); poe.push_back(poe11); poe.push_back(poe12); if (firsttime){ pol_e.setCorner(poe); pol_e.setCenter(poec); Transform scale = createScale(0.1, 0.1); pol_e.applyTransform(scale); } // Other Point pot1(left+60, top-40); Point pot2(right-60, top-40); Point pot3(right-60, top-60); Point pot4(left+60, top-60); Point potc((pot1.x+pot2.x)/2,(pot2.x+pot3.x)/2); vector<Point> pot; pot.push_back(pot1); pot.push_back(pot2); pot.push_back(pot3); pot.push_back(pot4); if (firsttime){ pol_pot1.setCorner(pot); pol_pot1.setCenter(potc); Transform scale = createScale(0.1, 0.1); pol_pot1.applyTransform(scale); } pot1.set(left+60, bot+180); pot2.set(right-60, bot+180); pot3.set(right-60, bot+200); pot4.set(left+60, bot+200); potc.set((pot1.x+pot2.x)/2,(pot2.x+pot3.x)/2); pot.clear(); pot.push_back(pot1); pot.push_back(pot2); pot.push_back(pot3); pot.push_back(pot4); if (firsttime){ pol_pot2.setCorner(pot); pol_pot2.setCenter(potc); Transform scale = createScale(0.1, 0.1); pol_pot2.applyTransform(scale); } resultframe++; if (resultframe >= 25) resultframe = 25; else { Transform scale = createScale(1.1, 1.1); pol_pot1.applyTransform(scale); pol_pot2.applyTransform(scale); pol_l.applyTransform(scale); pol_o.applyTransform(scale); pol_o1.applyTransform(scale); pol_s.applyTransform(scale); pol_e.applyTransform(scale); } pol_l.draw(WHITE); fill_polygon(pol_l[0].x, pol_l[2].y, pol_l[2].x, pol_l[0].y,WHITE,WHITE); pol_o.draw(WHITE); fill_polygon(pol_o[0].x, pol_o[2].y, pol_o[2].x, pol_o[0].y,WHITE,WHITE); pol_o1.draw(BLACK); fill_polygon(pol_o1[0].x, pol_o1[2].y, pol_o1[2].x, pol_o1[0].y,BLACK,BLACK); pol_s.draw(WHITE); fill_polygon(pol_s[0].x, pol_s[6].y, pol_s[6].x, pol_s[0].y,WHITE,WHITE); pol_e.draw(WHITE); fill_polygon(pol_e[0].x, pol_e[2].y, pol_e[2].x, pol_e[0].y,WHITE,WHITE); pol_pot1.draw(WHITE); pol_pot2.draw(WHITE); settextstyle(7,0,40); setcolor(WHITE); sprintf(strbuffer,"%d",score); outtextxy(getmaxx()/2-50, getmaxy()/2+100, strbuffer); firsttime = false; }
BOOL COSMCtrlAppApp::InitInstance() { //Initialize OLE if (!AfxOleInit()) { AfxMessageBox(IDS_OLE_INIT_FAILED, MB_OK | MB_ICONSTOP); return FALSE; } //Initialize GDI+ #ifdef COSMCTRL_NOD2D Gdiplus::GdiplusStartupInput gdiplusStartupInput; if (Gdiplus::GdiplusStartup(&m_GDIPlusToken, &gdiplusStartupInput, NULL) != Gdiplus::Ok) { AfxMessageBox(_T("Failed to initialize GDI+"), MB_OK | MB_ICONSTOP); return FALSE; } #endif INITCOMMONCONTROLSEX InitCtrls; InitCtrls.dwSize = sizeof(InitCtrls); InitCtrls.dwICC = ICC_WIN95_CLASSES; InitCommonControlsEx(&InitCtrls); #ifdef _DEBUG //Just some test code to exercise the various methods which implement Vincenty's algorithms COSMCtrlPosition pos1(-77.04978, 38.88922); double dEndBearing = 0; COSMCtrlPosition pos2 = COSMCtrlHelper::GetPosition(pos1, 51.7679, 6179016.13586, &dEndBearing); double dStartBearing; double dDistance = COSMCtrlHelper::DistanceBetweenPoints(pos1, pos2, &dStartBearing, &dEndBearing); dDistance; //Do the reverse test COSMCtrlPosition pos3(2.29583, 48.85889); double dStartBearing2; double dEndBearing2; double dDistance2 = COSMCtrlHelper::DistanceBetweenPoints(pos1, pos3, &dStartBearing2, &dEndBearing2); pos1 = COSMCtrlPosition(175.04978, 38.88922); pos2 = COSMCtrlHelper::GetPosition(pos1, 90, 8000, &dEndBearing); pos1 = COSMCtrlPosition(-77.04978, 38.88922); double dEndBearing3; COSMCtrlPosition pos4 = COSMCtrlHelper::GetPosition(pos1, dStartBearing2, dDistance2, &dEndBearing3); COSMCtrlPosition pos5(-180, 0); COSMCtrlPosition pos6(0, 0); double dStartBearing5; double dEndBearing5; double dDistance5 = COSMCtrlHelper::DistanceBetweenPoints(pos5, pos6, &dStartBearing5, &dEndBearing5); dDistance5; COSMCtrlPosition pos7(0, 0); COSMCtrlPosition pos8(-180, 0); double dStartBearing7; double dEndBearing7; double dDistance7 = COSMCtrlHelper::DistanceBetweenPoints(pos7, pos8, &dStartBearing7, &dEndBearing7); dDistance7; COSMCtrlPosition pos9(0, 90); COSMCtrlPosition pos10(0, -90); double dStartBearing9; double dEndBearing9; double dDistance9 = COSMCtrlHelper::DistanceBetweenPoints(pos9, pos10, &dStartBearing9, &dEndBearing9); dDistance9; COSMCtrlPosition pos11(0, -90); COSMCtrlPosition pos12(0, 90); double dStartBearing11; double dEndBearing11; double dDistance11 = COSMCtrlHelper::DistanceBetweenPoints(pos11, pos12, &dStartBearing11, &dEndBearing11); dDistance11; COSMCtrlPosition pos13(0, 60); COSMCtrlPosition pos14(180, -60); double dStartBearing13; double dEndBearing13; double dDistance13 = COSMCtrlHelper::DistanceBetweenPoints(pos13, pos14, &dStartBearing13, &dEndBearing13); dDistance13; COSMCtrlPosition pos15(180, -60); COSMCtrlPosition pos16(0, 60); double dStartBearing15; double dEndBearing15; double dDistance15 = COSMCtrlHelper::DistanceBetweenPoints(pos15, pos16, &dStartBearing15, &dEndBearing15); dDistance15; #endif CWinApp::InitInstance(); //Standard initialization SetRegistryKey(_T("Local AppWizard-Generated Applications")); LoadStdProfileSettings(4); // Load standard INI file options (including MRU) //Register the application's document templates. Document templates //serve as the connection between documents, frame windows and views CSingleDocTemplate* pDocTemplate; pDocTemplate = new CSingleDocTemplate( IDR_MAINFRAME, RUNTIME_CLASS(COSMCtrlAppDoc), RUNTIME_CLASS(CMainFrame), // main SDI frame window RUNTIME_CLASS(COSMCtrlAppView)); if (!pDocTemplate) return FALSE; AddDocTemplate(pDocTemplate); //Parse command line for standard shell commands, DDE, file open CCommandLineInfo cmdInfo; ParseCommandLine(cmdInfo); //Dispatch commands specified on the command line. Will return FALSE if //app was launched with /RegServer, /Register, /Unregserver or /Unregister. if (!ProcessShellCommand(cmdInfo)) return FALSE; //The one and only window has been initialized, so show and update it m_pMainWnd->ShowWindow(SW_SHOW); m_pMainWnd->UpdateWindow(); return TRUE; }