GMBR
Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Entrar

Esqueci-me da senha

Últimos assuntos
» Problema ao entrar por uma porta e voltar por ela
por aminaro Seg 06 maio 2024, 10:08

» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43

» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16

» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45

» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18

» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30

» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07

» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45

» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51

» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31

» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11

» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39

» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27

» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30

» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17

» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18

» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34

» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13

» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18

» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12

» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02

» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55

» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42

» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56

» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21


Ajuda com SFML em C++

5 participantes

Ir para baixo

Ajuda com SFML em C++ Empty Ajuda com SFML em C++

Mensagem por janrie Ter 04 Set 2012, 22:13

Pessoal, tenho uma duvida, tenho um código em C++ com SFML, desenhei uma figuras na tela e fiz interação com o teclado para movimento das mesmas, mas gostaria de saber como eu faço para fazer cada figura de uma vez aumentar e diminuir de tamanho?
Se alguem puder me ajudar eu agradeço, segue o código:

Código:
#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
#include <iostream>

int main() {
    // Inicializacao da biblioteca
    sf::RenderWindow* app = new sf::RenderWindow(sf::VideoMode(800, 600, 32), "Teste de imput do teclado!");
    int xCircle = 300;
    int yCircle = 300;
    int xLine = 10;
    int yLine = 10;
    int x1Line = 100;
    int y1Line = 100;
    int xRect = 150;
    int yRect = 150;
    int x1Rect = 200;
    int y1Rect = 200;
    int xPolygon = 100;
    int yPolygon = 100;
    int x1Polygon = 150;
    int y1Polygon = 200;
    int x2Polygon = 80;
    int y2Polygon = 150;

    // Gamelooping
    while (app->IsOpened()) {
        // Process game input
        sf::Event* event = new sf::Event();
        while (app->GetEvent(*event)) {
            if (event->Type == sf::Event::Closed) {
                app->Close();
            }
        }
        if (app->GetInput().IsKeyDown(sf::Key::Escape)) {
            return EXIT_SUCCESS;
        }

        // Simulate Game World movimentation
        if (app->GetInput().IsKeyDown(sf::Key::Up)) yCircle--;
        else if (app->GetInput().IsKeyDown(sf::Key::Down)) yCircle++;
        else if (app->GetInput().IsKeyDown(sf::Key::Left)) xCircle--;
        else if (app->GetInput().IsKeyDown(sf::Key::Right)) xCircle++;

        if (app->GetInput().IsKeyDown(sf::Key::W)) yLine--;
        else if (app->GetInput().IsKeyDown(sf::Key::S)) yLine++;
        else if (app->GetInput().IsKeyDown(sf::Key::A)) xLine--;
        else if (app->GetInput().IsKeyDown(sf::Key::D)) xLine++;

        if (app->GetInput().IsKeyDown(sf::Key::W)) y1Line--;
        else if (app->GetInput().IsKeyDown(sf::Key::S)) y1Line++;
        else if (app->GetInput().IsKeyDown(sf::Key::A)) x1Line--;
        else if (app->GetInput().IsKeyDown(sf::Key::D)) x1Line++;

        if (app->GetInput().IsKeyDown(sf::Key::I)) yRect--;
        else if (app->GetInput().IsKeyDown(sf::Key::K)) yRect++;
        else if (app->GetInput().IsKeyDown(sf::Key::J)) xRect--;
        else if (app->GetInput().IsKeyDown(sf::Key::L)) xRect++;

        if (app->GetInput().IsKeyDown(sf::Key::I)) y1Rect--;
        else if (app->GetInput().IsKeyDown(sf::Key::K)) y1Rect++;
        else if (app->GetInput().IsKeyDown(sf::Key::J)) x1Rect--;
        else if (app->GetInput().IsKeyDown(sf::Key::L)) x1Rect++;

        if (app->GetInput().IsKeyDown(sf::Key::T)) yPolygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::G)) yPolygon++;
        else if (app->GetInput().IsKeyDown(sf::Key::F)) xPolygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::H)) xPolygon++;

        if (app->GetInput().IsKeyDown(sf::Key::T)) y1Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::G)) y1Polygon++;
        else if (app->GetInput().IsKeyDown(sf::Key::F)) x1Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::H)) x1Polygon++;

        if (app->GetInput().IsKeyDown(sf::Key::T)) y2Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::G)) y2Polygon++;
        else if (app->GetInput().IsKeyDown(sf::Key::F)) x2Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::H)) x2Polygon++;

        // Render
        app->Clear(sf::Color(255, 255, 255));

        sf::Shape Line = sf::Shape::Line(xLine, yLine, x1Line, y1Line, 3, sf::Color(0,0,0), 1, sf::Color(255, 255, 0));
        sf::Shape Circle = sf::Shape::Circle(xCircle, yCircle, 50, sf::Color(125, 200, 240), 1, sf::Color(0, 0, 0));
        sf::Shape Rect = sf::Shape::Rectangle(xRect, yRect, x1Rect, y1Rect, sf::Color(35, 200, 100), 1, sf::Color(0, 0, 0));

        sf::Shape Polygon;
        Polygon.AddPoint(xPolygon, yPolygon, sf::Color(255, 0, 0),    sf::Color(0, 128, 128));
        Polygon.AddPoint(x1Polygon, y1Polygon, sf::Color(255, 85, 85),  sf::Color(0, 128, 128));
        Polygon.AddPoint(x2Polygon, y2Polygon, sf::Color(255, 170, 170), sf::Color(0, 128, 128));

        app->Draw(Line);
        app->Draw(Circle);
        app->Draw(Rect);
        app->Draw(Polygon);
        app->Display();
    };
    return EXIT_SUCCESS;
}

Desde ja eu agradeço e peço desculpas se postei no lugar errado
janrie
janrie

Data de inscrição : 16/08/2012
Reputação : 0
Número de Mensagens : 15
Prêmios : Ajuda com SFML em C++ Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Ajuda com SFML em C++ Empty Re: Ajuda com SFML em C++

Mensagem por PedroX Ter 04 Set 2012, 22:44

Eu uso SFML, mas não entendi o que você quer fazer.
Além disso, área errada.
O tópico será movido.

Até mais!

_________________


Leia o Manual do Iniciante e a Lista de Tutoriais, para aprender bastante sobre o GM.
Recomendo o Manual completo das colisões, bem útil.
O exemplo Criar um chat (banir, kickar, etc) é interessante.

Para seu jogo ficar rápido e legal, aprenda a Aumentar o desempenho do seu jogo.

Aprenda a calcular a velocidade de suas animações


Entre para o Clube do Inglês:
PedroX
PedroX

Games Ranking : Nota B

Notas recebidas : C+B
Data de inscrição : 26/07/2008
Reputação : 311
Número de Mensagens : 6087
Prêmios : Ajuda com SFML em C++ Empty

Medalhas x 0 Tutoriais x 17 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://web.whatsapp.com/send?phone=5519995935953&text=Pedro

Ir para o topo Ir para baixo

Ajuda com SFML em C++ Empty Re: Ajuda com SFML em C++

Mensagem por janrie Ter 04 Set 2012, 22:47

Se executar esse código, ele vai mostrar 4 figuras em um determinado tamanho, gostaria de saber se alguém poderia me ajudar a fazer essas figuras aumentarem de tamanho através de entradas do teclado.
janrie
janrie

Data de inscrição : 16/08/2012
Reputação : 0
Número de Mensagens : 15
Prêmios : Ajuda com SFML em C++ Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Ajuda com SFML em C++ Empty Re: Ajuda com SFML em C++

Mensagem por Markituh Qua 05 Set 2012, 11:54

Não mexo com SFML, mas seguindo a lógica, seu código parece estar ok. Só encontrei uma coisa curiosa nessa parte:

Código:
while (app->GetEvent(*event)) {
    if (event->Type == sf::Event::Closed) {
        app->Close();
    }
}
Ao que parece, seu while vai continuar retornando verdadeiro até que o programa receba um evento de fechamento. Isso fará com que os códigos abaixo do loop não sejam executados. Você pretendia colocar um if para checar tal evento? Na boa, nos tempos que eu estava aprendendo a mexer na WinAPI, existia uma função específica que era chamada num loop while na entry point do programa, com o evento em questão e seus respectivos parâmetros como argumentos; fica bem organizado, e chega até a ser um padrão universal.

Dá uma olhada nisso aí, e diga-nos o resultado. Abraços!
Markituh
Markituh

Games Ranking : Sem avaliações

Data de inscrição : 11/10/2009
Reputação : 106
Número de Mensagens : 2184
Prêmios : Ajuda com SFML em C++ Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Ajuda com SFML em C++ Empty Re: Ajuda com SFML em C++

Mensagem por janrie Qua 05 Set 2012, 11:57

Isso serve para continuar executando o código até que seja pressionado esc para fechar a janela.

Tava querendo uma ajuda para ver como eu faço para aumentar uma determinada figura de tamanho, por exemplo, quando apertasse '+' no teclado a figura aumentava.
janrie
janrie

Data de inscrição : 16/08/2012
Reputação : 0
Número de Mensagens : 15
Prêmios : Ajuda com SFML em C++ Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Ajuda com SFML em C++ Empty Re: Ajuda com SFML em C++

Mensagem por Da Galáxia Qui 06 Set 2012, 13:46

Nunca mechi em SFML, mas vamos pela logica

Circle(xCircle, yCircle, 50, sf::Color(125, 200, 240)

xCircle = posição em x;
yCircle = posição em y;
50 = dimensão do circulo.

Para aumentar ou diminuir a dimensão, no lugar de 50 devera ter uma variavel de controle, ex:

//inicia com tamanho 50, deve ficar fora do laço (bloco de repetição)
int varTamanho = 50;
Circle(xCircle, yCircle, varTamanho, sf::Color(125, 200, 240)

Dentro de um bloco de repetição, faça com que ao precionar uma tecla, incremente a variavel assim:
varTamanho ++; o circulo aumentara.
Da Galáxia
Da Galáxia

Data de inscrição : 14/01/2010
Reputação : 1
Número de Mensagens : 348
Prêmios : Ajuda com SFML em C++ Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Ajuda com SFML em C++ Empty Re: Ajuda com SFML em C++

Mensagem por Jiraya Qui 06 Set 2012, 14:03

Código:

#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
#include <iostream>

int main() {
    // Inicializacao da biblioteca
    sf::RenderWindow* app = new sf::RenderWindow(sf::VideoMode(800, 600, 32), "Teste de imput do teclado!");
    int xCircle = 300;
    int yCircle = 300;
    int xLine = 10;
    int yLine = 10;
    int x1Line = 100;
    int y1Line = 100;
    int xRect = 150;
    int yRect = 150;
    int x1Rect = 200;
    int y1Rect = 200;
    int xPolygon = 100;
    int yPolygon = 100;
    int x1Polygon = 150;
    int y1Polygon = 200;
    int x2Polygon = 80;
    int y2Polygon = 150;

    // Gamelooping
    while (app->IsOpened()) {
        // Process game input
        sf::Event* event = new sf::Event();
        while (app->GetEvent(*event)) {
            if (event->Type == sf::Event::Closed) {
                app->Close();
            }
        }
        if (app->GetInput().IsKeyDown(sf::Key::Escape)) {
            return EXIT_SUCCESS;
        }

        // Simulate Game World movimentation
        if (app->GetInput().IsKeyDown(sf::Key::Up)) yCircle--;
        else if (app->GetInput().IsKeyDown(sf::Key::Down)) yCircle++;
        else if (app->GetInput().IsKeyDown(sf::Key::Left)) xCircle--;
        else if (app->GetInput().IsKeyDown(sf::Key::Right)) xCircle++;

        if (app->GetInput().IsKeyDown(sf::Key::W)) yLine--;
        else if (app->GetInput().IsKeyDown(sf::Key::S)) yLine++;
        else if (app->GetInput().IsKeyDown(sf::Key::A)) xLine--;
        else if (app->GetInput().IsKeyDown(sf::Key::D)) xLine++;

        if (app->GetInput().IsKeyDown(sf::Key::W)) y1Line--;
        else if (app->GetInput().IsKeyDown(sf::Key::S)) y1Line++;
        else if (app->GetInput().IsKeyDown(sf::Key::A)) x1Line--;
        else if (app->GetInput().IsKeyDown(sf::Key::D)) x1Line++;

        if (app->GetInput().IsKeyDown(sf::Key::I)) yRect--;
        else if (app->GetInput().IsKeyDown(sf::Key::K)) yRect++;
        else if (app->GetInput().IsKeyDown(sf::Key::J)) xRect--;
        else if (app->GetInput().IsKeyDown(sf::Key::L)) xRect++;

        if (app->GetInput().IsKeyDown(sf::Key::I)) y1Rect--;
        else if (app->GetInput().IsKeyDown(sf::Key::K)) y1Rect++;
        else if (app->GetInput().IsKeyDown(sf::Key::J)) x1Rect--;
        else if (app->GetInput().IsKeyDown(sf::Key::L)) x1Rect++;

        if (app->GetInput().IsKeyDown(sf::Key::T)) yPolygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::G)) yPolygon++;
        else if (app->GetInput().IsKeyDown(sf::Key::F)) xPolygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::H)) xPolygon++;

        if (app->GetInput().IsKeyDown(sf::Key::T)) y1Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::G)) y1Polygon++;
        else if (app->GetInput().IsKeyDown(sf::Key::F)) x1Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::H)) x1Polygon++;

        if (app->GetInput().IsKeyDown(sf::Key::T)) y2Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::G)) y2Polygon++;
        else if (app->GetInput().IsKeyDown(sf::Key::F)) x2Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::H)) x2Polygon++;

        // Render
        app->Clear(sf::Color(255, 255, 255));

        sf::Shape Line = sf::Shape::Line(xLine, yLine, x1Line, y1Line, 3, sf::Color(0,0,0), 1, sf::Color(255, 255, 0));
        sf::Shape Circle = sf::Shape::Circle(xCircle, yCircle, 50, sf::Color(125, 200, 240), 1, sf::Color(0, 0, 0));
        sf::Shape Rect = sf::Shape::Rectangle(xRect, yRect, x1Rect, y1Rect, sf::Color(35, 200, 100), 1, sf::Color(0, 0, 0));

        sf::Shape Polygon;
        Polygon.AddPoint(xPolygon, yPolygon, sf::Color(255, 0, 0),    sf::Color(0, 128, 128));
        Polygon.AddPoint(x1Polygon, y1Polygon, sf::Color(255, 85, 85),  sf::Color(0, 128, 128));
        Polygon.AddPoint(x2Polygon, y2Polygon, sf::Color(255, 170, 170), sf::Color(0, 128, 128));

        app->Draw(Line);
        app->Draw(Circle);
        app->Draw(Rect);
        app->Draw(Polygon);
        app->Display();
    };
    return EXIT_SUCCESS;
}

eu estava olhando seu código quando me vi isso


// Gamelooping
while (app->IsOpened()) {
// Process game input
sf::Event* event = new sf::Event();
realmente isso esta certo?
na minha opnião isso iria criar um memory leak bem fudidex na memoria ram
pois o objeto/class/strcut sf::Event seria criado a todo momento, pois os loops do c++ são extremamente rápidos.

quanto ao problema é como o Da Galaxia disse, basta criar uma variavel para guardar o tamanho do circulo

Código:

float fsize=50;
while(...)
{
if (app->GetInput().IsKeyDown(sf::Key::Space))fsize+=10;
sf::Shape Circle = sf::Shape::Circle(xCircle, yCircle, fsize, sf::Color(125, 200, 240), 1, sf::Color(0, 0, 0));
}
tente isso.
Jiraya
Jiraya

Games Ranking : Nota A

Notas recebidas : A+A
Data de inscrição : 20/03/2010
Reputação : 108
Número de Mensagens : 1134
Prêmios : Ajuda com SFML em C++ Empty

Medalhas x 0 Tutoriais x 1 Moedas x 0

Ouro x 1 Prata x 0 Bronze x 1

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

https://www.facebook.com/seito.washiro.7

Ir para o topo Ir para baixo

Ajuda com SFML em C++ Empty Re: Ajuda com SFML em C++

Mensagem por janrie Qui 06 Set 2012, 16:53

A parte de aumentar funcionou perfeitamente cara, valeu.
A questão daquele gamelooping não deu nenhum problema até agora.
Aquele while não sei fazer direito, por que sou muito iniciante ainda em programação.
janrie
janrie

Data de inscrição : 16/08/2012
Reputação : 0
Número de Mensagens : 15
Prêmios : Ajuda com SFML em C++ Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Ajuda com SFML em C++ Empty Re: Ajuda com SFML em C++

Mensagem por janrie Qui 06 Set 2012, 17:25

Para o circulo funcionou perfeitamente a modificação do tamanho, mas para o retângulo não está dando certo, pois ele não possui thickness( espessura) em sua linha de comando, procurei na documentação e la também não informa nada sobre como aumentar o tamanho dessas figuras.
janrie
janrie

Data de inscrição : 16/08/2012
Reputação : 0
Número de Mensagens : 15
Prêmios : Ajuda com SFML em C++ Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Ajuda com SFML em C++ Empty Re: Ajuda com SFML em C++

Mensagem por Da Galáxia Qui 06 Set 2012, 19:11

Cara, o retangulo não vai ter espessura, pois é um retangulo e não um cubo.

Para aumentar o retangulo é so fazer como no circulo, todavia possui um argumento a mais, veja.

Rectangle(xRect, yRect, x1Rect, y1Rect)

xRect = posição x
yRect = posição y

x1Rect = largura
y1Rect = altura

Faça como falei no circulo. Mas lembrando que agora podem ser 2 variaveis, uma para a largura e outra para a altura.

Em relação ao loop, como disse na postagem anterior não conheço esta biblioteca. Mas NÃO tem problema, pois, este loop é para dinamizar o jogo, ou seja, tudo ali deve ficar loopado.

Poderia ser assim tambem, veja:

while(! codigo da tecla ESC) { //enquanto NÃO teclar esc.

//codigos
}
Da Galáxia
Da Galáxia

Data de inscrição : 14/01/2010
Reputação : 1
Número de Mensagens : 348
Prêmios : Ajuda com SFML em C++ Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Ajuda com SFML em C++ Empty Re: Ajuda com SFML em C++

Mensagem por janrie Qui 06 Set 2012, 19:17

Entendi, entao no caso para aumentar um poligono, a quantidade de argumentos seria o numero de pontos do poligono?
janrie
janrie

Data de inscrição : 16/08/2012
Reputação : 0
Número de Mensagens : 15
Prêmios : Ajuda com SFML em C++ Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Ajuda com SFML em C++ Empty Re: Ajuda com SFML em C++

Mensagem por Da Galáxia Qui 06 Set 2012, 20:47

Veja bem;

digamos que a função que desenha o retangulo seja como segue abaixo:

Rectangle(x1, y1, x2, y2)

A forma de se designar com palavras é assim:
nome da função é Rectangle e possui 4 argumentos ou parametros (x1,y1,x2,y2)

Vc deve conhecer como funciona esta função. Pelo que vi acima, esta função tem mais parametros, pois um (ou 2 não sei) para as cores.

Um retangulo é uma figura bidimensional e NÃO tridimensional(cubo), para se desenhar um retangulo precisa-se para isto de 4 informações (5 no caso da cor), vamos nos ater aos parametros espaciais, então preciso de 4 informação para desenhar um retangulo, veja:

1 - posição x no espaço
2 - posição y no espaço
3 - largura
4 - altura

veja que a função retangulo lhe da esses parametros

retangulo(100, 300, 450, 550)

estarei desenhando o retangulo na posição x = 100 e na posiçao y = 400

a largura sera 450 ou dependendo de como a biblioteca trabalha sera 350 (450 - 100 do inicio x)

a altura sera 550 ou dependendo de como a biblioteca trabalha sera 250 (550 - 300 do inicio y)

Para manipular qualquer parametro faça uma variavel que incremente(++) ou decremente(--) veja:

fora do while declare
int x = 0, y = 0, larg = 100, alt = 100;

dentro do while

x++;
y-=2;
larg+=3;
alt -=2;
retangulo(x, larg, y, alt)

Bringue, teste e vai se acostumano e pegara o jeito.


OBS:
Quando estou falando de x e y no espaço, é o plano cartesiano, x horizontal e y vertical, lembrando que o plano cartesiano no computador o Y é invertido, ou seja, y++ vai descer e y-- vai subir.
Da Galáxia
Da Galáxia

Data de inscrição : 14/01/2010
Reputação : 1
Número de Mensagens : 348
Prêmios : Ajuda com SFML em C++ Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Ajuda com SFML em C++ Empty Re: Ajuda com SFML em C++

Mensagem por janrie Sex 07 Set 2012, 10:42

Eu não consegui fazer por que aqueles 4 valores sao os dois primeiros o valor x e o valor y do ponto 1 e os outros dois sao o valor do x e do y do ponto 2, faltando assim lugar para definir largura e altura, eu tinha tentado fazer semelhante aos ou dois, mas nao funcionou.
:/

Na documentação dessa bliblioteca também não fala nada de como aumentar o tamanho das figuras.
janrie
janrie

Data de inscrição : 16/08/2012
Reputação : 0
Número de Mensagens : 15
Prêmios : Ajuda com SFML em C++ Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Ajuda com SFML em C++ Empty Re: Ajuda com SFML em C++

Mensagem por Da Galáxia Seg 10 Set 2012, 11:26

Amigo, o x2 é a largura e o y2 é a altura.
A largura é a distancia do x1 ao x2, a altura a distancia de y1 a y2.
Se esta biblioteca segue as regras de todas as outras que conheço, o ponto zero/zero da figura é o primeiro pixel superior esquerdo da figura, entao se eu fizer assim:
retangulo(0, 0, 100, 100 mais parametros de cores), estarei desenhando o retangulo no topo esquerdo da tela (origem 0 x 0) e a figura tera tamanho 100 a direita e 100 pra baixo (largura e altura), formando então um quadrado criado nas coordenadas 0 x 0 com largura e altura 100.

Para aumentar em tempo de execução use variaveis como falei.
Da Galáxia
Da Galáxia

Data de inscrição : 14/01/2010
Reputação : 1
Número de Mensagens : 348
Prêmios : Ajuda com SFML em C++ Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Ajuda com SFML em C++ Empty Re: Ajuda com SFML em C++

Mensagem por janrie Sex 14 Set 2012, 16:53

Desculpa, é que sou iniciante e pra im ainda sao meio complicadas as logicas, mas finalmente consegui.
Uma outra duvida que tenho, criei uma função pra salvar a tela antes dela ser fechada, só que a imagem que fica salva fica de cabeça para baixo, vou postar o codigo aqui, se alguem puder me ajudar eu agradeço.

Código:
#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
#include <iostream>

void save(sf::RenderWindow *app) {
    sf::Image Screenshot;
    http://Screenshot.Create(800, 600, sf::Color(255,255,255));
    Screenshot.CopyScreen(*app);
    Screenshot.SaveToFile("fotoprojeto.png");
}

int main() {
    // Inicializacao da biblioteca

    sf::RenderWindow* app = new sf::RenderWindow(sf::VideoMode(800, 600, 32), "Teste de imput do teclado!");
    int xCircle = 300;
    int yCircle = 300;
    int xLine = 10;
    int yLine = 10;
    int x1Line = 100;
    int y1Line = 100;
    int xRect = 150;
    int yRect = 150;
    int x1Rect = 200;
    int y1Rect = 200;
    int xPolygon = 100;
    int yPolygon = 100;
    int x1Polygon = 150;
    int y1Polygon = 200;
    int x2Polygon = 80;
    int y2Polygon = 150;
    float dCircle = 50;
    float dLine = 3;
    float dRect = 4;
    float dPolygon = 5;
    float d1Polygon = 50;

    // Gamelooping


    while (app->IsOpened()) {
        // Process game input
        sf::Event* event = new sf::Event();
        while (app->GetEvent(*event)) {
            if (event->Type == sf::Event::Closed) {
                save(app);
                app->Close();
            }
        }
        if (app->GetInput().IsKeyDown(sf::Key::Escape)) {
            save(app);
            return EXIT_SUCCESS;
        }

        // Simulate Game World movimentation
        if (app->GetInput().IsKeyDown(sf::Key::Up)) yCircle--;
        else if (app->GetInput().IsKeyDown(sf::Key::Down)) yCircle++;
        else if (app->GetInput().IsKeyDown(sf::Key::Left)) xCircle--;
        else if (app->GetInput().IsKeyDown(sf::Key::Right)) xCircle++;
        else if (app->GetInput().IsKeyDown(sf::Key::Numpad1)) dCircle++;
        else if (app->GetInput().IsKeyDown(sf::Key::Numpad0)) dCircle--;

        if (app->GetInput().IsKeyDown(sf::Key::W)) yLine--;
        else if (app->GetInput().IsKeyDown(sf::Key::S)) yLine++;
        else if (app->GetInput().IsKeyDown(sf::Key::A)) xLine--;
        else if (app->GetInput().IsKeyDown(sf::Key::D)) xLine++;
        else if (app->GetInput().IsKeyDown(sf::Key::Q)) dLine++;
        else if (app->GetInput().IsKeyDown(sf::Key::E)) dLine--;

        if (app->GetInput().IsKeyDown(sf::Key::W)) y1Line--;
        else if (app->GetInput().IsKeyDown(sf::Key::S)) y1Line++;
        else if (app->GetInput().IsKeyDown(sf::Key::A)) x1Line--;
        else if (app->GetInput().IsKeyDown(sf::Key::D)) x1Line++;

        if (app->GetInput().IsKeyDown(sf::Key::I)) yRect--;
        else if (app->GetInput().IsKeyDown(sf::Key::K)) yRect++;
        else if (app->GetInput().IsKeyDown(sf::Key::J)) xRect--;
        else if (app->GetInput().IsKeyDown(sf::Key::L)) xRect++;
        else if (app->GetInput().IsKeyDown(sf::Key::U)) dRect++;
        else if (app->GetInput().IsKeyDown(sf::Key::O)) dRect--;

        if (app->GetInput().IsKeyDown(sf::Key::I)) y1Rect--;
        else if (app->GetInput().IsKeyDown(sf::Key::K)) y1Rect++;
        else if (app->GetInput().IsKeyDown(sf::Key::J)) x1Rect--;
        else if (app->GetInput().IsKeyDown(sf::Key::L)) x1Rect++;

        if (app->GetInput().IsKeyDown(sf::Key::T)) yPolygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::G)) yPolygon++;
        else if (app->GetInput().IsKeyDown(sf::Key::F)) xPolygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::H)) xPolygon++;
        else if (app->GetInput().IsKeyDown(sf::Key::Y)) dPolygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::R)) dPolygon++;

        if (app->GetInput().IsKeyDown(sf::Key::T)) y1Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::G)) y1Polygon++;
        else if (app->GetInput().IsKeyDown(sf::Key::F)) x1Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::H)) x1Polygon++;
        else if (app->GetInput().IsKeyDown(sf::Key::Y)) d1Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::R)) d1Polygon++;

        if (app->GetInput().IsKeyDown(sf::Key::T)) y2Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::G)) y2Polygon++;
        else if (app->GetInput().IsKeyDown(sf::Key::F)) x2Polygon--;
        else if (app->GetInput().IsKeyDown(sf::Key::H)) x2Polygon++;

        // Render
        app->Clear(sf::Color(255, 255, 255));

        sf::Shape Line = sf::Shape::Line(xLine, yLine, x1Line, y1Line, dLine, sf::Color(0,0,0), 1, sf::Color(255, 255, 0));
        http://Line.Rotate(lRotate);
        sf::Shape Circle = sf::Shape::Circle(xCircle, yCircle, dCircle, sf::Color(125, 200, 240), 1, sf::Color(0, 0, 0));
        sf::Shape Rect = sf::Shape::Rectangle(dRect, yRect, x1Rect, dRect,  sf::Color(35, 200, 100), 1, sf::Color(0, 0, 0));

        sf::Shape Polygon;
        Polygon.AddPoint(xPolygon, yPolygon, sf::Color(255, 0, 0),    sf::Color(0, 128, 128));
        Polygon.AddPoint(dPolygon, dPolygon, sf::Color(255, 85, 85),  sf::Color(0, 128, 128));
        Polygon.AddPoint(dPolygon, d1Polygon, sf::Color(255, 170, 170), sf::Color(0, 128, 128));

        app->Draw(Line);
        app->Draw(Circle);
        app->Draw(Rect);
        app->Draw(Polygon);
        app->Display();

    };

    return EXIT_SUCCESS;
}
janrie
janrie

Data de inscrição : 16/08/2012
Reputação : 0
Número de Mensagens : 15
Prêmios : Ajuda com SFML em C++ Empty

Medalhas x 0 Tutoriais x 0 Moedas x 0

Ouro x 0 Prata x 0 Bronze x 0

Insignia 1 x 0 Insignia 2 x 0 Insignia 3 x 0

Ir para o topo Ir para baixo

Ajuda com SFML em C++ Empty Re: Ajuda com SFML em C++

Mensagem por Conteúdo patrocinado


Conteúdo patrocinado


Ir para o topo Ir para baixo

Ir para o topo


 
Permissões neste sub-fórum
Não podes responder a tópicos