void Game::Run()//游戏运行 { //界面元素的创建 static FullScrAni outline; static Text texlevel(675,217,20,20); static Text texfood(675,300,20,20); static Text texscore(675,387,20,20); static Button butpause(628,500,100,50); static Button butret(740,40,50,50); //界面元素动画的设置 butpause.SetAni(ANI_BUTTON,pPanel->IsPause()?ANI_BUTTON_RECOVER:ANI_BUTTON_PAUSE); butret.SetAni(ANI_BUTTON,ANI_BUTTON_RETURN); outline.SetAni(ANI_OUTLINE); //响应 butpause.Deal(); butret.Deal(); if(butpause.MousePressed()) {//是否暂停 butpause.Recover(); pPanel->SetPause(!pPanel->IsPause()); } outline.Draw(); pPanel->DoFrame(); //绘制 butpause.Draw(); butret.Draw(); texlevel.SetText(level,RGB(255,255,255)); texscore.SetText(pPanel->Score(),RGB(255,255,255)); texfood.SetText(pPanel->RestFood(),RGB(255,255,255)); texlevel.Draw(); texscore.Draw(); texfood.Draw(); if(pPanel->Overed()) { if(pPanel->Won())state=GAME_WIN; else state=GAME_FAIL; manager.Stop(); } if(butret.MousePressed()) { butret.Recover(); Destroy(); state=GAME_SHOWMENU; } roundtime+=1000/FPS; if(roundtime%1000<1000/FPS)//每秒储存一次 SaveArchive(); }
int main(int argc, char* args[]) { //initialize SDL_ttf if (TTF_Init() == -1) { cerr << "TTF_Init: " << TTF_GetError() << endl; //exit(2); } SDL_Texture* backGroundTexture; // the new SDL_Texture variable SDL_Texture* backimageTexture; // ***************** SDL_Init( SDL_INIT_EVERYTHING); //Create window g_pWindow = SDL_CreateWindow("Easy_Rider", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); //Create Renderer g_pRenderer = SDL_CreateRenderer(g_pWindow, -1, SDL_RENDERER_ACCELERATED); //Load image from specified path SDL_Surface* loadedSurface = IMG_Load("image/background.png"); //Create texture from surface pixels backGroundTexture = SDL_CreateTextureFromSurface(g_pRenderer, loadedSurface); SDL_Surface* riderSurface = SDL_LoadBMP("image/rider.bmp"); //Color key image SDL_SetColorKey(riderSurface, SDL_TRUE, SDL_MapRGB(riderSurface->format, 102, 204, 255)); //Create texture from surface pixels backimageTexture = SDL_CreateTextureFromSurface(g_pRenderer, riderSurface); //SDL_Rect rectRider = {320, 0, riderSurface->w}; // flipping a image Text txt; txt.Init(g_pRenderer); SDL_RenderClear(g_pRenderer); bool gamerunning = true; SDL_Event event; // game loop while (gamerunning) { if (SDL_PollEvent(&event)!= 0) { if (event.type == SDL_QUIT) gamerunning = false; } SDL_RenderClear(g_pRenderer); SDL_RenderCopy(g_pRenderer, backGroundTexture, 0, 0); txt.Draw(g_pRenderer); txt.UpDate(event); SDL_RenderPresent(g_pRenderer); } SDL_RenderPresent(g_pRenderer); //SDL_Delay(2000); return 0; }