int main(int argc, char *argv[]) { if( SDL_Init(SDL_INIT_AUDIO|SDL_INIT_VIDEO) < 0 ){ printf("Unable to initialize SDL: %s\n", SDL_GetError()); exit(1); } atexit(SDL_Quit); screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, 32, SDL_HWSURFACE|SDL_HWPALETTE|SDL_DOUBLEBUF); // screen = SDL_SetVideoMode(800, 600, 32, SDL_SWSURFACE|SDL_HWPALETTE); //Slow if(screen == NULL) { printf("Unable to set 0x0 video: %s\n", SDL_GetError()); exit(1); } Initialize(); NewGame(); Scorpion.DrawStaticScene(); SDL_Event event; int done = 0; while(done == 0) { while(SDL_PollEvent(&event)) { switch(event.type) { case SDL_QUIT: return 0; case SDL_KEYDOWN: if(event.key.keysym.sym == SDLK_ESCAPE) { done = 1; } HandleKeyDownEvent(event); break; case SDL_MOUSEBUTTONDOWN: HandleMouseDownEvent(event); break; case SDL_MOUSEMOTION: HandleMouseMoveEvent(event); break; case SDL_MOUSEBUTTONUP: HandleMouseUpEvent(event); break; } } } // perform cleaning up in here freeFont(font1); freeFont(font2); return 0; }
void HandleMouseUpEvent(SDL_Event &event) { if(startdrag){ startdrag = false; Scorpion.DoDrop(); SDL_WM_GrabInput(SDL_GRAB_OFF); } if(Scorpion[0].Empty()){ Scorpion[0].SetSymbol(1); Scorpion.DrawStaticScene(); } //Victory: When we have 4 stacks from King to Ace of the same suit int ordered_stacks = 0; for(int i = 1; i < 8; i++){ if(Scorpion[i].SuitBuilt()){ ordered_stacks++; } if(ordered_stacks == 4){ AnimateCards(); NewGame(); Scorpion.DrawStaticScene(); } } }
void HandleKeyDownEvent(SDL_Event &event) { if(event.key.keysym.sym == SDLK_n) { NewGame(); Scorpion.DrawStaticScene(); } if(event.key.keysym.sym == SDLK_a) { AnimateCards(); }; // Test animation if(event.key.keysym.sym == SDLK_r) { Scorpion.DrawStaticScene(); }; // Refresh }