int main ( int argc, char** argv ) { Setup setup1; //cerr << "address of Setup: " << &setup1 << '\n'; ImageManager im1; SoundManager sm1; Dot myDot; World world1; cout << "rest of main \n"; if(setup1.init() == false) { return 1; } //newScreen = setup1.getScreen(); if(im1.loadFont() == false) { return 1; } if(im1.getFiles() == false) { cout << "error loading images" << endl; return 1; } if(sm1.soundFiles() == false) { cout << "error loading sounds \n"; return 1; } if(world1.set_tiles() == false) { cout << "error loading map \n"; return 1; } //Mix_Music* bgm = sm1.getTrack(0); // make sure SDL cleans up before exit atexit(SDL_Quit); // centre the bitmap on screen //SDL_Rect dstrect; //dstrect.x = (screen->w - bmp->w) / 2; //dstrect.y = (screen->h - bmp->h) / 2; Timer frames1; Timer delta; delta.start(); // program main loop bool done = false; while (done == false) { frames1.start(); // message processing loop SDL_Event event; while (SDL_PollEvent(&event)) { //cout << &event << endl; //SDL_Event *e = &event; myDot.change_heading(event); myDot.handle_input(event); if(event.type == SDL_QUIT) { done = true; } // get keystates //Uint8 *keystates = SDL_GetKeyState(NULL); if(event.type == SDL_KEYDOWN) { if(event.key.keysym.sym == SDLK_p) { if(Mix_PlayingMusic() == 0) { sm1.playAll(); } else { if(Mix_PausedMusic() == 1) { Mix_ResumeMusic(); } else { Mix_PauseMusic(); } } } if(event.key.keysym.sym == SDLK_ESCAPE) { done = true; } } } myDot.move(setup1, world1, delta.get_ticks()); myDot.shoot(setup1); delta.start(); myDot.setCamera(setup1); im1.drawAll(myDot, setup1, world1); myDot.showParticleD(im1, setup1); im1.drawPlayer(setup1, myDot); myDot.showBulletD(im1, setup1); /** Uint8 *keystates = SDL_GetKeyState(NULL); if(keystates[SDLK_p]) { // key state template } **/ //SDL_Surface* test = TTF_RenderText_Solid(im1.getFont(), "test", im1.getColour()); //im1.applySurface(10, 10, test, newScreen); if(SDL_Flip(setup1.getScreen()) == -1) { return 1; } //framecount++; //cout << "frames" << SDL_GetTicks() << endl; if(frames1.get_ticks() < 1000 / setup1.getFPS()) { SDL_Delay((1000 / setup1.getFPS()) - frames1.get_ticks()); //cout << "delay" << 1000 / setup1.getFPS() - frames1.get_ticks(); } }// end main loop //Mix_FreeMusic(bgm); setup1.freeScreen(); im1.clean(); sm1.cleanSound(); // all is well ;) printf("Exited cleanly\n"); return 0; }
/*Foo::Foo() { offSet = 0; velocity = 0; frame = 0; status = FOO_RIGHT; } void Foo::move() { offSet += velocity; if( ( offSet < 0 ) || ( offSet + FOO_WIDTH > SCREEN_WIDTH ) ) offSet -= velocity; } void Foo::show() { if( velocity < 0 ) { status = FOO_LEFT; frame++; } else if( velocity > 0 ) { status = FOO_RIGHT; frame++; } else frame = 0; if( frame >= 4 ) frame = 0; if( status == FOO_RIGHT ) apply_surface( offSet, SCREEN_HEIGHT - FOO_HEIGHT, foo, screen, &clipsRight[frame] ); else if( status == FOO_LEFT ) apply_surface( offSet, SCREEN_HEIGHT - FOO_HEIGHT, foo, screen, &clipsLeft[frame] ); } void Foo::handle_events() { //If a key was pressed if( event.type == SDL_KEYDOWN ) { //Set the velocity switch( event.key.keysym.sym ) { case SDLK_RIGHT: velocity += FOO_WIDTH / 4; break; case SDLK_LEFT: velocity -= FOO_WIDTH / 4; break; } } //If a key was released else if( event.type == SDL_KEYUP ) { //Set the velocity switch( event.key.keysym.sym ) { case SDLK_RIGHT: velocity -= FOO_WIDTH / 4; break; case SDLK_LEFT: velocity += FOO_WIDTH / 4; break; } } } void set_clips() { //clip the sprite sheet clipsRight[0].x = 0; clipsRight[0].y = 0; clipsRight[0].w = FOO_WIDTH; clipsRight[0].h = FOO_HEIGHT; clipsRight[1].x = FOO_WIDTH; clipsRight[1].y = 0; clipsRight[1].w = FOO_WIDTH; clipsRight[1].h = FOO_HEIGHT; clipsRight[2].x = FOO_WIDTH * 2; clipsRight[2].y = 0; clipsRight[2].w = FOO_WIDTH; clipsRight[2].h = FOO_HEIGHT; clipsRight[3].x = FOO_WIDTH * 3; clipsRight[3].y = 0; clipsRight[3].w = FOO_WIDTH; clipsRight[3].h = FOO_HEIGHT; clipsLeft[0].x = 0; clipsLeft[0].y = FOO_HEIGHT; clipsLeft[0].w = FOO_WIDTH; clipsLeft[0].h = FOO_HEIGHT; clipsLeft[1].x = FOO_WIDTH; clipsLeft[1].y = FOO_HEIGHT; clipsLeft[1].w = FOO_WIDTH; clipsLeft[1].h = FOO_HEIGHT; clipsLeft[2].x = FOO_WIDTH * 2; clipsLeft[2].y = FOO_HEIGHT; clipsLeft[2].w = FOO_WIDTH; clipsLeft[2].h = FOO_HEIGHT; clipsLeft[3].x = FOO_WIDTH * 3; clipsLeft[3].y = FOO_HEIGHT; clipsLeft[3].w = FOO_WIDTH; clipsLeft[3].h = FOO_HEIGHT; }*/ int main( int argc, char* args[] ) { bool quit = false; int frame = 0; bool cap = true; Timer fps; Timer update; if( init() == false ) return 1; if( load_files() == false ) return 1; //set_clips(); Dot myDot; update.start(); while( quit == false) { fps.start(); while( SDL_PollEvent(&event) ) { myDot.handle_input(); if( event.type == SDL_QUIT ) quit = true; } myDot.move(); myDot.set_camera(); //std::stringstream fpsm; //fpsm << "FPS: " << frame / ( fps.get_ticks() / 1000.f ); apply_surface( 0, 0, background, screen, &camera ); //SDL_FillRect( screen, &screen->clip_rect, SDL_MapRGB( screen->format, 0xFF, 0xFF, 0xFF ) ); myDot.show(); if( update.get_ticks() > 1000.f ) { std::stringstream fpsm; fpsm << "FPS: " << ( frame ); fpsmessage = TTF_RenderText_Solid(font, fpsm.str().c_str(), textColor ); frame = 0; update.start(); } apply_surface( 10, 10, fpsmessage, screen); if( SDL_Flip( screen ) == -1 ) return 1; frame++; if( ( ( fps.get_ticks() ) < 1000 / FRAMES_PER_SECOND ) ) SDL_Delay( ( 1000 / FRAMES_PER_SECOND ) - ( fps.get_ticks() ) ); } clean_up(); return 0; }
int main(int argc, char* args[]) { //Quit flag bool quit = false; //Make the dot Dot myDot; //The frame rate regulator Timer fps; //Initialize if (init() == false) { return 1; } //Load the files if (load_files() == false) { return 1; } //While the user hasn't quit while (quit == false) { //Start the frame timer fps.start(); //While there's events to handle while (SDL_PollEvent(&event)) { //Handle events for the dot myDot.handle_input(); //If the user has Xed out the window if (event.type == SDL_QUIT) { //Quit the program quit = true; } } //Move the dot myDot.move(); //Fill the screen white SDL_FillRect(screen, &screen->clip_rect, SDL_MapRGB(screen->format, 0xFF, 0xFF, 0xFF)); //Show the dot on the screen myDot.show(); //Update the screen if (SDL_Flip(screen) == -1) { return 1; } //Cap the frame rate if (fps.get_ticks() < 1000 / FRAMES_PER_SECOND) { SDL_Delay((1000 / FRAMES_PER_SECOND) - fps.get_ticks()); } } //Clean up clean_up(); return 0; }
int main( int argc, char* args[] ) { //Quit flag bool quit = false; //The dot that will be used Dot myDot; //Keeps track of time since last rendering Timer delta; //Initialize if( init() == false ) { return 1; } //Load the files if( load_files() == false ) { return 1; } //Start delta timer delta.start(); //While the user hasn't quit while( quit == false ) { //While there's events to handle while( SDL_PollEvent( &event ) ) { //Handle events for the dot myDot.handle_input(); //If the user has Xed out the window if( event.type == SDL_QUIT ) { //Quit the program quit = true; } } //Move the dot myDot.move( delta.get_ticks() ); //Restart delta timer delta.start(); //Fill the screen white SDL_FillRect( screen, &screen->clip_rect, SDL_MapRGB( screen->format, 0xFF, 0xFF, 0xFF ) ); //Show the dot on the screen myDot.show(); //Update the screen if( SDL_Flip( screen ) == -1 ) { return 1; } } //Clean up clean_up(); return 0; }
int main( int argc, char* args[] ) { //Quit flag bool quit = false; //The dot Dot myDot; //The tiles that will be used Tile *tiles[ TOTAL_TILES ]; //The frame rate regulator Timer fps; //Initialize if( init() == false ) { return 1; } //Load the files if( load_files() == false ) { return 1; } //Clip the tile sheet clip_tiles(); //Set the tiles if( set_tiles( tiles ) == false ) { return 1; } //While the user hasn't quit while( quit == false ) { //Start the frame timer fps.start(); //While there's events to handle while( SDL_PollEvent( &event ) ) { //Handle events for the dot myDot.handle_input(); //If the user has Xed out the window if( event.type == SDL_QUIT ) { //Quit the program quit = true; } } //Move the dot myDot.move( tiles ); //Set the camera myDot.set_camera(); //Show the tiles for( int t = 0; t < TOTAL_TILES; t++ ) { tiles[ t ]->show(); } //Show the dot on the screen myDot.show(); //Update the screen if( SDL_Flip( screen ) == -1 ) { return 1; } //Cap the frame rate if( fps.get_ticks() < 1000 / FRAMES_PER_SECOND ) { SDL_Delay( ( 1000 / FRAMES_PER_SECOND ) - fps.get_ticks() ); } } //Clean up clean_up( tiles ); return 0; }
int main( int argc, char* args[] ) { //Quit flag bool quit = false; //The dot Dot myDot; //The frame rate regulator Timer fps; //Initialize if( init() == false ) { return 1; } //Load the files if( load_files() == false ) { return 1; } //While the user hasn't quit while( quit == false ) { //Start the frame timer fps.start(); //While there's events to handle while( SDL_PollEvent( &event ) ) { //Handle events for the dot myDot.handle_input(); //If the user has Xed out the window if( event.type == SDL_QUIT ) { //Quit the program quit = true; } } //Move the dot myDot.move(); //Set the camera myDot.set_camera(); //Show the background apply_surface( 0, 0, background, screen, &camera ); //Show the dot on the screen myDot.show(); //Update the screen if( SDL_Flip( screen ) == -1 ) { return 1; } //Cap the frame rate if( fps.get_ticks() < 1000 / FRAMES_PER_SECOND ) { SDL_Delay( ( 1000 / FRAMES_PER_SECOND ) - fps.get_ticks() ); } } //Clean up clean_up(); return 0; }