Ajuda com SFML em C++

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Ajuda com SFML em C++

Mensagem por janrie em Sex 02 Nov 2012, 17:54

Tenho um codigo que faz a colisão entre 2 circulos, após a colisão eles retornam para lado oposto com o mesmo angulo e a mesma velocidade, mas tem um problema, os circulos sempre colidem no mesmo ponto, gostaria de saber se tem alguma forma deles colidirem em pontos aleatorios da tela?
O codigo é o seguinte:
Código:
#include <SFML/System.hpp>
#include <SFML/Graphics.hpp>
#include <iostream>
#include <sstream>

bool collision(sf::RenderWindow &Window, sf::Shape Circle1, sf::Shape &Circle2){//função de colisão entre os circulos
    if((abs(Circle1.GetPosition().x - Circle2.GetPosition().x)) +
            abs((Circle1.GetPosition().y - Circle2.GetPosition().y)) <= 100){
        return true;
    }else{
        return false;
    }
}

int main()
{
    int x = 350;
    int y = 100;
    int xVetor = 3;
    int yVetor = 3;
    int x2 = 300;
    int y2 = 300;
    int x2Vetor = -3;
    int y2Vetor = -3;
    bool collided = false;

    sf::Shape Circle1 = sf::Shape::Circle(0, 0, 50, sf::Color(0, 0, 0), 1, sf::Color(0, 0, 0));
    sf::Shape Circle2 = sf::Shape::Circle(0, 0, 50, sf::Color(0, 0, 0), 1, sf::Color(0, 0, 0));

    sf::RenderWindow Window(sf::VideoMode(800, 600, 32), "Colisão entre Circulos");

    //GAME LOOP
    while(Window.IsOpened()){
        sf::Event Event;
        while(Window.GetEvent(Event)){
            if(Event.Type == sf::Event::Closed || Event.Key.Code == sf::Key::Escape)
            Window.Close();
        }

        Circle1.SetPosition(x, y);
        Circle2.SetPosition(x2, y2);

        x += xVetor;
        if((x < 50) || (x > 750)){
            xVetor *= (-1);
        }

        y += yVetor;
        if ((y < 50) || (y > 550)){
            yVetor *= (-1);
        }

        x2 += x2Vetor;
        if((x2 < 50) || (x2 > 750)){
            x2Vetor *= (-1);
        }

        y2 += y2Vetor;
        if ((y2 < 50) || (y2 > 550)){
            y2Vetor *= (-1);
        }

        //CHAMADA DE FUNÇÔES
        if (collision(Window, Circle1, Circle2) && !collided){
            yVetor *= (-1);
            xVetor *= (-1);
            y2Vetor *= (-1);
            x2Vetor *= (-1);

            collided = true;
        }

        if (!collision(Window, Circle1, Circle2) && collided){
            //x2Vetor *= (-1);
            collided = false;
        }

        Window.Clear(sf::Color(255, 255, 255));
        Window.Draw(Circle1);
        Window.Draw(Circle2);
        Window.Display();
        sf::Sleep(0.01f);
    }
    return EXIT_SUCCESS;
}

janrie

Número de Mensagens : 15
Data de inscrição : 16/08/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Ajuda com SFML em C++

Mensagem por Alex FC em Sex 02 Nov 2012, 18:17

http://www.gamedev.com.br/forum/viewtopic.php?f=6&t=6153&p=21940#p21940

http://forum.imasters.com.br/topic/479117-ajuda-com-sfml-em-c/

Não há necessidade disso né amigo? Já postou em fóruns especializados, não precisava postar aqui onde o foco é o Game Maker.

Certo, pode haver programadores em C++ utilizando a SFML aqui (Como eu, mas sou iniciante). Mas não há motivo para postar isso nesse fórum já que você postou em um fórum especializado como o Game Dev Brasil.

Esse tópico está de certa forma escondendo os que realmente merecem atenção desse fórum.

Bom, essa é minha opinião. Não é proibido, mas não achei certo.

FLWS!

Alex FC

Ranking : Nota A
Número de Mensagens : 2503
Idade : 23
Data de inscrição : 20/12/2008
Notas recebidas : B A
Reputação : 174
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Re: Ajuda com SFML em C++

Mensagem por janrie em Sex 02 Nov 2012, 18:19

Postei em varios lugares por que varias pessoas poderiam me ajudar, e como são foruns diferentes não veo erro de postar aqui, se você for um ADM ou algum ADM achar que deve excluir meu tópico pode excluir.

janrie

Número de Mensagens : 15
Data de inscrição : 16/08/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Ajuda com SFML em C++

Mensagem por Alex FC em Sex 02 Nov 2012, 18:32

Entendo o objetivo. Não sou adm, só dei minha opinião.

Pode ser um capricho meu, mas tem tanta gente aqui que mal sabe GML, como vão resolver teu problema? Logo, só seria um tópico a mais.

FLWS!

Alex FC

Ranking : Nota A
Número de Mensagens : 2503
Idade : 23
Data de inscrição : 20/12/2008
Notas recebidas : B A
Reputação : 174
Insignia 1 x 1 Insignia 2 x 0 Insignia 3 x 0
Prêmios
   : 2
   : 1
   : 1

http://redscreensoft.blogspot.com

Voltar ao Topo Ir em baixo

Re: Ajuda com SFML em C++

Mensagem por janrie em Sex 02 Nov 2012, 18:34

blz

janrie

Número de Mensagens : 15
Data de inscrição : 16/08/2012
Reputação : 0
Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Voltar ao Topo Ir em baixo

Re: Ajuda com SFML em C++

Mensagem por Conteúdo patrocinado Hoje à(s) 11:53


Conteúdo patrocinado


Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum