miércoles, 25 de marzo de 2015

Dibujar Rectangulo y Circulo en SFML


#include <SFML\Graphics.hpp>

int main()
{
 //Creo mi ventana
 sf::RenderWindow window(sf::VideoMode(800, 600), "Figuras SFML");
 window.setFramerateLimit(60);

 //creo el circulo en SFML
 sf::CircleShape circulo(100.f);
 circulo.setFillColor(sf::Color::Red);

 //creo el rectangulo en SFML
 sf::RectangleShape rectangulo(sf::Vector2f(200.f, 80.f));
 rectangulo.setFillColor(sf::Color::Cyan);

 //creo mi gameloop
 while (window.isOpen())
 {
  //limpio la ventana
  window.clear(sf::Color::White);

  //Establesco las posiciones de mis figuras
  circulo.setPosition( 100 , 100 );
  rectangulo.setPosition( 400 , 400 );

  //las dibujo en la escena
  window.draw(circulo);
  window.draw(rectangulo);

  //mostrar en pantalla
  window.display();

  sf::Event event;

  while (window.pollEvent(event))
  {
   if (event.type == sf::Event::Closed)
    window.close();
  }
 }

 return 0;
}


Practica siempre para ir mejorando, la repetición y la constancia nos ayudan a mejorar, recuerda cada vez lo harás mejor, si te equivocas esta bien, permitirse equivocarse es la clave de mejora continua, así que permítete equivocarte mas seguido.

Si te gusta este sitio y deseas que esto continué vivo tu apoyo sera importante, puedes dar clic en la publicidad si lo deseas o puedes donar algo en Patreon si puedes permitírtelo, con esto el proyecto empezara a tener un objetivo y dejara de navegar sin rumbo y empezara a convertirse en una comunidad que ayudara unos a los otros, saludos y excelente día.

Polygon Shape en Box2D


#include <SFML\Graphics.hpp>
#include <Box2D\Box2D.h>

#define RAD 0.0174532925199432957f

int main()
{
 //Creo mi ventana
 sf::RenderWindow window(sf::VideoMode(800, 600), "Polygon Shape");
 window.setFramerateLimit( 60 );
 
 //para empezar la simulacion del mundo con esto simula la fisica
 float32 timeStep = 1.0f / 60.f;
 int32 velocityIterations = 8;
 int32 positionIterations = 3;

 //defino mi vector de gravedad
 b2Vec2 gravity( 0.f , 10.f );

 //creo mi mundo
 b2World world( gravity );

 //definimos un bodydef para dynamicbody
 b2BodyDef bodyDefDynamic;
 bodyDefDynamic.type = b2_dynamicBody;
 bodyDefDynamic.position.Set(150.f, 50.f);

 //definimos un bodydef para dynamicbody
 b2BodyDef bodyDefDynamic1;
 bodyDefDynamic1.type = b2_dynamicBody;
 bodyDefDynamic1.position.Set(150.f, 400.f);

 //creamos los body
 b2Body *dynamicBody = world.CreateBody(&bodyDefDynamic);
 b2Body *dynamicBody1 = world.CreateBody(&bodyDefDynamic1);

 //se crea un circleshape
 b2CircleShape circle;
 circle.m_p.Set(0, 0);
 circle.m_radius = 1;

 //Se crea el polygonshape
 b2PolygonShape rect;
 rect.SetAsBox(2, 1);

 //Creamos un fixture para darle mas dinamismo
 b2FixtureDef fixtureDefDynamic;
 fixtureDefDynamic.shape = &circle;

 //Creamos un fixture para darle mas dinamismo
 b2FixtureDef fixtureDefDynamic1;
 fixtureDefDynamic1.shape = &rect;

 //Creamos la fixture
 dynamicBody->CreateFixture(&fixtureDefDynamic);
 dynamicBody1->CreateFixture(&fixtureDefDynamic1);

 //creo el circulo en SFML
 sf::CircleShape circulo(100.f);
 circulo.setFillColor(sf::Color::Red);

 //creo el rectangulo en SFML
 sf::RectangleShape rectangulo( sf :: Vector2f( 200.f , 80.f ) );
 rectangulo.setFillColor(sf::Color::Cyan);
 
 //creo mi gameloop
 while (window.isOpen())
 { 

  //lo inicio en el gameloop.
  world.Step(timeStep, velocityIterations, positionIterations);

  //limpio la ventana
  window.clear(sf::Color::White);

  circulo.setPosition(dynamicBody->GetPosition().x, dynamicBody->GetPosition().y);
  rectangulo.setPosition(dynamicBody1->GetPosition().x, dynamicBody1->GetPosition().y);

  window.draw(circulo);
  window.draw( rectangulo );

  //mostrar en pantalla
  window.display();

  sf::Event event;

  while (window.pollEvent(event))
  {
   if (event.type == sf::Event::Closed)
    window.close();
  }
 }

 return 0;
}

Circle Shape en Box2D


#include <SFML\Graphics.hpp>
#include <Box2D\Box2D.h>

#define RAD 0.0174532925199432957f

int main()
{
 //Creo mi ventana
 sf::RenderWindow window(sf::VideoMode(800, 600), "Circle Shape");
 window.setFramerateLimit( 60 );
 
 //para empezar la simulacion del mundo con esto simula la fisica
 float32 timeStep = 1.0f / 60.f;
 int32 velocityIterations = 8;
 int32 positionIterations = 3;

 //defino mi vector de gravedad
 b2Vec2 gravity( 0.f , 10.f );

 //creo mi mundo
 b2World world( gravity );

 //definimos un bodydef para dynamicbody
 b2BodyDef bodyDefDynamic;
 bodyDefDynamic.type = b2_dynamicBody;
 bodyDefDynamic.position.Set(150.f, 50.f);

 //creamos los body
 b2Body *dynamicBody = world.CreateBody(&bodyDefDynamic);

 //se crea un circleshape
 b2CircleShape circle;
 circle.m_p.Set(0, 0);
 circle.m_radius = 1;

 //Creamos un fixture para darle mas dinamismo
 b2FixtureDef fixtureDefDynamic;
 fixtureDefDynamic.shape = &circle;

 //Creamos la fixture
 dynamicBody->CreateFixture(&fixtureDefDynamic);

 sf::CircleShape circulo(100.f);
 circulo.setFillColor(sf::Color::Red);
 
 //creo mi gameloop
 while (window.isOpen())
 { 

  //lo inicio en el gameloop.
  world.Step(timeStep, velocityIterations, positionIterations);

  //limpio la ventana
  window.clear(sf::Color::White);

  circulo.setPosition(dynamicBody->GetPosition().x, dynamicBody->GetPosition().y);

  window.draw(circulo);
  //mostrar en pantalla
  window.display();

  sf::Event event;

  while (window.pollEvent(event))
  {
   if (event.type == sf::Event::Closed)
    window.close();
  }
 }

 return 0;
}