Cualquier optimización, por más peqieña que sea, me serviría.
Muchas gracias.
Código C++:
Ver original
#include <SFML/Graphics.hpp> #include <SFML/Audio.hpp> #include <SFML/System.hpp> int main() { // Ventana en la que se muestra todo el contenido del juego. sf::RenderWindow gameWindow(sf::VideoMode(1024, 600, 32), "Project Genesis", sf::Style::Fullscreen); // Se establece el límite de frames por segundo a 60 gameWindow.setFramerateLimit(60); enum Boton{NUEVO_JUEGO, CONTINUAR, OPCIONES, SALIR}; Boton boton = NUEVO_JUEGO; // Música sf::SoundBuffer buffer; buffer.loadFromFile("main.wav"); sf::SoundBuffer button; button.loadFromFile("button.wav"); sf::SoundBuffer selection; selection.loadFromFile("selection.wav"); sf::Sound sound; sound.setBuffer(buffer); sound.setLoop(true); sf::Sound buttons; buttons.setBuffer(button); sf::Sound selections; selections.setBuffer(selection); sf::Texture menu_i; if(!menu_i.loadFromFile("menu.png")) return EXIT_FAILURE; sf::Sprite menu_s; menu_s.setTexture(menu_i); sf::Texture nuevo_juego_i; if(!nuevo_juego_i.loadFromFile("nuevo_juego.png")) return EXIT_FAILURE; sf::Sprite nuevo_juego_s; nuevo_juego_s.setTexture(nuevo_juego_i); nuevo_juego_s.setPosition(700, 225); sf::Texture nuevo_juego2_i; if(!nuevo_juego2_i.loadFromFile("nuevo_juego2.png")) return EXIT_FAILURE; sf::Sprite nuevo_juego2_s; nuevo_juego2_s.setTexture(nuevo_juego2_i); nuevo_juego2_s.setPosition(700, 225); sf::Texture continuar_i; if(!continuar_i.loadFromFile("continuar.png")) return EXIT_FAILURE; sf::Sprite continuar_s; continuar_s.setTexture(continuar_i); continuar_s.setPosition(700, 275); sf::Texture continuar2_i; if(!continuar2_i.loadFromFile("continuar2.png")) return EXIT_FAILURE; sf::Sprite continuar2_s; continuar2_s.setTexture(continuar2_i); continuar2_s.setPosition(700, 275); sf::Texture opciones_i; if(!opciones_i.loadFromFile("opciones.png")) return EXIT_FAILURE; sf::Sprite opciones_s; opciones_s.setTexture(opciones_i); opciones_s.setPosition(700, 325); sf::Texture opciones2_i; if(!opciones2_i.loadFromFile("opciones2.png")) return EXIT_FAILURE; sf::Sprite opciones2_s; opciones2_s.setTexture(opciones2_i); opciones2_s.setPosition(700, 325); sf::Texture salir_i; if(!salir_i.loadFromFile("salir.png")) return EXIT_FAILURE; sf::Sprite salir_s; salir_s.setTexture(salir_i); salir_s.setPosition(700, 375); sf::Texture salir2_i; if(!salir2_i.loadFromFile("salir2.png")) return EXIT_FAILURE; sf::Sprite salir2_s; salir2_s.setTexture(salir2_i); salir2_s.setPosition(700, 375); gameWindow.draw(menu_s); gameWindow.draw(nuevo_juego2_s); gameWindow.draw(continuar_s); gameWindow.draw(opciones_s); gameWindow.draw(salir_s); gameWindow.display(); sf::Image captura; captura = gameWindow.capture(); captura.saveToFile("captura.png"); sound.play(); // Mientras la ventana esté abierta while(gameWindow.isOpen()) { // Ciclo para procesar eventos // Variable para almacenar los eventos sf::Event Event; while(gameWindow.pollEvent(Event)) { switch (Event.type) { case sf::Event::Closed: gameWindow.close(); break; case sf::Event::KeyPressed: if(Event.key.code == sf::Keyboard::Escape) gameWindow.close(); if(Event.key.code == sf::Keyboard::Up) { buttons.play(); switch(boton) { case NUEVO_JUEGO: boton = SALIR; break; case CONTINUAR: boton = NUEVO_JUEGO; break; case OPCIONES: boton = CONTINUAR; break; case SALIR: boton = OPCIONES; break; } } if(Event.key.code == sf::Keyboard::Down) { buttons.play(); switch(boton) { case NUEVO_JUEGO: boton = CONTINUAR; break; case CONTINUAR: boton = OPCIONES; break; case OPCIONES: boton = SALIR; break; case SALIR: boton = NUEVO_JUEGO; break; } } if(Event.key.code == sf::Keyboard::Return) { switch(boton) { case SALIR: selections.play(); while(selections.getStatus() == sf::SoundSource::Status::Playing) sf::sleep(sf::milliseconds(1)); gameWindow.close(); break; } } default: break; } // Limpia la pantalla gameWindow.clear(); switch(boton) { case NUEVO_JUEGO: gameWindow.draw(menu_s); gameWindow.draw(nuevo_juego2_s); gameWindow.draw(continuar_s); gameWindow.draw(opciones_s); gameWindow.draw(salir_s); break; case CONTINUAR: gameWindow.draw(menu_s); gameWindow.draw(nuevo_juego_s); gameWindow.draw(continuar2_s); gameWindow.draw(opciones_s); gameWindow.draw(salir_s); break; case OPCIONES: gameWindow.draw(menu_s); gameWindow.draw(nuevo_juego_s); gameWindow.draw(continuar_s); gameWindow.draw(opciones2_s); gameWindow.draw(salir_s); break; case SALIR: gameWindow.draw(menu_s); gameWindow.draw(nuevo_juego_s); gameWindow.draw(continuar_s); gameWindow.draw(opciones_s); gameWindow.draw(salir2_s); break; } // Redibuja la oantalla gameWindow.display(); } } }
Saludos.