sábado, 25 de abril de 2015

Juego simple con figuras en SFML


#include SFML\Graphics.hpp

//declaramos una funcion donde iniciaremos las figuras, su posicion y su color
void iniciarFigura(sf::RectangleShape &figura, sf::Vector2f const &posicion, sf :: Color const &color);

int main()
{

 //########### MECANICAS DEL JUEGO ##############
 //Tendremos un jugador que sera el que controlemos, un obstaculo y un enemigo
 //moveremos el personaje solo de arriba y abajo, tendra un movimiento constante
 //si choca con el obstaculo se reiniciara
 //si choca con el enemigo ganamos y cerramos la aplicacion
 //##############################################

 //Creo mi ventana
 sf::RenderWindow window(sf::VideoMode(640 , 480), "Juego simple con figuras");
 window.setFramerateLimit(60);

 //establecemos la posicion inicial que tomara el jugador
 sf::Vector2f posicionInicial = sf::Vector2f(50, 50);

 //Creamos la figura que sera nuestro jugador
 sf::RectangleShape jugador(sf::Vector2f(50, 50));

 //mandamos a llamar a nuestra funcion para determinar la posicion y el color de nuestro jugador
 iniciarFigura(jugador, posicionInicial, sf::Color::Yellow);

 //Creamos la figura que sera nuestro enemigo
 sf::RectangleShape enemigo(sf::Vector2f(50, 50));

 //mandamos a llamar a nuestra funcion para determinar la posicion y el color de nuestro enemigo
 iniciarFigura(enemigo, sf::Vector2f(400, 50), sf::Color::Red);

 //Creamos la figura que sera nuestro obstaculo
 sf::RectangleShape obstaculo(sf::Vector2f(50, 100));

 //mandamos a llamar a nuestra funcion para determinar la posicion y el color de nuestro obstaculo
 iniciarFigura(obstaculo, sf::Vector2f(250, 50), sf::Color::Blue);

 //GameLoop
 while (window.isOpen())
 {
  window.clear();
  
  //Dibujamos en la escena nuestras figuras
  window.draw(jugador);
  window.draw(obstaculo);
  window.draw(enemigo);

  jugador.move(1, 0);

  //si mantienes presionada la tecla de direccion para abajo el personaje baja
  if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
  {
   jugador.move(0, 1);
  }

  //si mantienes presionada la tecla de direccion para arriba el personaje sube
  if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
  {
   jugador.move(0, -1);
  }

  //si chocamos o colisionamos con nuestro enemigo ganamos y salimos de la partida
  if (jugador.getGlobalBounds().intersects(enemigo.getGlobalBounds()))
  {
   window.close();
  }

  //si chocamos o colisionamos con nuestro obstaculo, regresamos a la posicion original
  if (jugador.getGlobalBounds().intersects(obstaculo.getGlobalBounds()))
  {
   jugador.setPosition(posicionInicial);
  }

  //Eventos
  sf::Event event;

  //Se manejan los eventos
  while (window.pollEvent(event))
  {
   //Creo una sentencia switch para controlar muchos eventos
   switch (event.type)
   {

   //Cierra la ventana
   case sf :: Event::EventType::Closed:
    window.close();
    break;

   default:
    break;
   }
  }

  window.display();
 }

 return 0;
}

//Realizamos nuestra funcion para inicializar nuestras figuras.
void iniciarFigura(sf::RectangleShape &figura, sf::Vector2f const &posicion, sf::Color const &color)
{
 figura.setFillColor(color);
 figura.setPosition(posicion);
 figura.setOrigin(figura.getSize() * 0.5f); //El centro del rectangulo
}


No hay comentarios:

Publicar un comentario