Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - DeMoNcRaZy

#421
Buenas,

Tengo un problema con las colisiones en sfml, tengo un cuadrado que manejo con keyboard y quiero que no sobre pase la ventana creada, pero no me deja sigue transpasando los bordes.

Aquí el código:

Código (cpp) [Seleccionar]
#include <SFML/Graphics.hpp>

int main(){
    //Creamos la ventana
    sf::RenderWindow window(sf::VideoMode(800, 600), "Colision");

    //Rectangualo
    sf::RectangleShape rec(sf::Vector2f(50, 50));
    rec.setFillColor(sf::Color::Cyan);

    //Variables colisiones
    int pared_x = 1, pared_y = 1;
    int x_incremento = 2, y_incremento = 2;
    int pared_izq = 0, pared_der = 750;
    int pared_arriba = 0, pared_abajo = 550;

    window.setFramerateLimit(200);

    //Si la ventana está abierta
    while(window.isOpen()){
        //Creamos un evento
        sf::Event ventana;
        //Llamamos a los eventos
        while(window.pollEvent(ventana)){
            //Cerramos la ventana cuando se solicite
            if(ventana.type == sf::Event::Closed){
                window.close();
            }
        }

        //Movimiento rectangulo
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up)){
            rec.move(0, -1);
        }
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down)){
            rec.move(0, 1);
        }
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Left)){
            rec.move(-1, 0);
        }
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Right)){
            rec.move(1, 0);
        }

        //Colisiones
        if(pared_x <= pared_izq){
            x_incremento =- x_incremento;
        }
        if(pared_x >= pared_der){
            x_incremento =- x_incremento;
        }
        if(pared_y <= pared_arriba){
            y_incremento =- y_incremento;
        }
        if(pared_y >= pared_abajo){
            y_incremento =- y_incremento;
        }

        pared_x = pared_x + x_incremento;
        pared_y = pared_y + y_incremento;

        //Limpiamos ventana
        window.clear();

        //Dibujamos el rectangulo
        window.draw(rec);

        //Actualizamos ventana
        window.display();

    }
}


Sobre pasa el borde de la ventana:



Cuándo no debería pasar el borde de la ventana.

Si alguien tiene alguna de idea de por que puede ser agradecería su respuesta.
Gracias.

Saludos.
#422
Gracias por la respuesta, lo he probado y sirve correctamente.
También he encontrado una función para limitar los fotogramas y así también
tener una movilidad estable.

Código (cpp) [Seleccionar]
window.setFramerateLimit(50);

Gracias por la respuesta.

Tema resuelto.

Saludos.
#423
Buenas,

Tengo un pequeño problema con el movimiento de texturas, la textura se mueve bien, pero no su velocidad, solo pulsando una vez la tecla da un gran salto en vez de pequeño.

Aquí imagen del problema:

Ejecuto el programa y sale así bien:


Pulso una vez la flecha hacia abajo:


Aparece muy lejos cada paso, en vez de ser algo así:


El código:

Código (cpp) [Seleccionar]
#include <SFML/Graphics.hpp>

int main(){
    //Crea la ventana de 300x300
    sf::RenderWindow window(sf::VideoMode(300, 300), "Ventana SFML");

    //Creamos una textura en este caso un tom
    sf::Texture tom;
    //Cargamos la textura de un archivo
    if(!tom.loadFromFile("tom.png")){
        //Si hay un error salimos
        return EXIT_FAILURE;
    }

    sf::Sprite sprite;
    sprite.setTexture(tom);
    sprite.setTextureRect(sf::IntRect(0, 0, 32, 32));

    //Si la ventana esta abierta
    while(window.isOpen()){
        //Creamos un evento llamado ventana
        sf::Event ventana;
        //Llamamos al evento ventana
        while(window.pollEvent(ventana)){
            //Se cierra la ventana cuando lo pedimos
            if(ventana.type == sf::Event::Closed){
            //Cerramos la ventana
                window.close();
            }
        }

        //Movemos arriba
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Up)){
            sprite.move(0, -1);
        }
        //Movemos abajo
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Down)){
            sprite.move(0, 1);
        }
        //Movemos a la izquierda
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Left)){
            sprite.move(-1, 0);
        }
        //Movemos a la derecha
        if(sf::Keyboard::isKeyPressed(sf::Keyboard::Right)){
            sprite.move(1, 0);
        }

        //Limpiamos la ventana
        window.clear();

        //Dibujamos
        window.draw(sprite);
        //Actualizamos la ventana
        window.display();
    }


    return 0;
}


Estuve probando diferentes maneras que encontré pero ninguna logré adaptar, si supieran guiarme un poco lo agradecería.

Gracias.


Saludos!
#424
Gracias por las respuestas.
Problema solucionado.

Saludos.
#425
Si pongo:

#include <SDL.h>

Me salta esto:




Sí, dentro de dicha carpeta del SDL se encuentra SDL.h



Saludos.
#426
Buenas,

Tengo un problema al instalar SDL en Code:Blocks, he estado mirando vídeos de instalación y tal.. todo correcto pero el problema se viene acá:

fatal error: SDL/SDL.h: No such file or directory




Me señala el error al incluir:



#include <iostream>
#include <SDL/SDL.h>

SDL_Surface *screen = NULL;

int main(int argc, char* args[]) {
   SDL_Init(SDL_INIT_EVERYTHING);

   screen = SDL_SetVideoMode(480, 272, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);

   SDL_WM_SetCaption("Creacion de una ventana", NULL);

   SDL_Delay(5000);

   SDL_Flip(screen);

   return 0;
}



El proyecto lo tengo modificado así:

-lmingw32 -lSDL2main -lSDL2 -lSDL2_image -lSDL2_mixer










Dll en ejecutable:




Si alguien sabe al respecto agradecería una ayudita.
Gracias.

Saludos.
#427
Gracias por vuestras respuestas.
Opte por probar Code::Blocks entre uno de ellos.

Saludos.
#428
Buenas,

Tengo una consulta y es la siguiente:

¿Cuál sería el mejor IDE para programar en C++?

1.Netbeans

2.Eclipse

3.Visual

4.Code:Blocks

5.Dev C++

O alguno que ustedes conozcan a parte..
PD: trabajo bajo windows.

Por lo habitual uso Dev C++ ya que es fácil de usar solo escribir código y ejecutarlo.
Pero ya he escuchado un par de veces que Dev C++ está bastante abandonado y hay mejores IDE, pero me gustaría saber vuestras opiniones y cuál sería más adaptable.

Agradezco cualquier sugerencia.
Gracias.

Saludos!
#429
Buenas,

¿Alguien sabe alguna guía de como usar y bajarme las librerías de Qt sin su IDE para yo usarlo en Dev C++?

He estado mirando en la web oficial pero creo que viene con el IDE o así..

Si alguien podría aconsejarme lo agradecería.
Gracias.

Saludos.
#430
¿Recomiendan otra distribución que no sea ubuntu y sea más rápida en descarga y tal?

Acepto sugerencias.