Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[sfml]Jak zwrócić aktualna pozycje wierzchołków?

Ostatnio zmodyfikowano 2012-12-31 19:35
Autor Wiadomość
DanielSC
Temat założony przez niniejszego użytkownika
[sfml]Jak zwrócić aktualna pozycje wierzchołków?
» 2012-12-30 20:34:40
Jak można by zwrócić aktualna pozycje wierzchołków jak bym ruszył kwadrat2
C/C++
#include <SFML/Graphics.hpp>
#include <iostream>
using namespace sf;
using namespace std;
int main()
{
    RenderWindow Aplikacja( VideoMode( 400, 400, 32 ), "Aplikacja", Style::Fullscreen );
    Shape kwadrat1, kwadrat2;
    int poz1 = 100, poz2 = 200; //pozycja 1 , pozycja2-pozostałośći zapomniałem usunać
   
   
    kwadrat1.AddPoint( 400, 400, Color::Red, Color::Red );
    kwadrat1.AddPoint( 400, 800, Color::Red, Color::Red );
    kwadrat1.AddPoint( 800, 800, Color::Red, Color::Red );
    kwadrat1.AddPoint( 800, 400, Color::Red, Color::Red );
   
    kwadrat2.AddPoint( poz1, poz1, Color::Green, Color::Green ); //pozycje zamiast 100,100
    kwadrat2.AddPoint( poz1, poz2, Color::Green, Color::Green ); //pozycje zamiast 100,200
    kwadrat2.AddPoint( poz2, poz2, Color::Green, Color::Green ); //pozycje zamiast 200,200
    kwadrat2.AddPoint( poz2, poz1, Color::Green, Color::Green ); //pozycje zamiast 200,100
   
    while( Aplikacja.IsOpened() )
    {
        Event zdarzenie;
        while( Aplikacja.GetEvent( zdarzenie ) )
        {
            if( zdarzenie.Type == Event::Closed )
                 Aplikacja.Close();
           
            if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::Escape )
                 Aplikacja.Close();
           
        }
        const Input & sterowanie = Aplikacja.GetInput();
       
       
       
        if( sterowanie.IsKeyDown( Key::Left ) )
             kwadrat2.Move( - 0.2, 0 );
       
        if( sterowanie.IsKeyDown( Key::Right ) )
             kwadrat2.Move( 0.2, 0 );
       
        if( sterowanie.IsKeyDown( Key::Down ) )
             kwadrat2.Move( 0, 0.2 );
       
        if( sterowanie.IsKeyDown( Key::Up ) )
             kwadrat2.Move( 0, - 0.2 );
       
       
       
       
       
       
       
       
       
       
        Aplikacja.Clear( Color( 0, 0, 0 ) );
        Aplikacja.Draw( kwadrat1 );
        Aplikacja.Draw( kwadrat2 );
        Aplikacja.Display();
       
    }
    return 0;
}
P-72441
Nevea
» 2012-12-30 20:53:02
C/C++
#include <SFML/Graphics.hpp>
#include <iostream>
using namespace sf;
using namespace std;
int main()
{
    RenderWindow Aplikacja( VideoMode( 400, 400, 32 ), "Aplikacja", Style::Fullscreen );
    Shape kwadrat1, kwadrat2;
    int poz1 = 100, poz2 = 200; //pozycja 1 , pozycja2-pozostałośći zapomniałem usunać
    float kwadrat_x = 100, kwadrat_y = 200; //dodane
   
    kwadrat1.AddPoint( 400, 400, Color::Red, Color::Red );
    kwadrat1.AddPoint( 400, 800, Color::Red, Color::Red );
    kwadrat1.AddPoint( 800, 800, Color::Red, Color::Red );
    kwadrat1.AddPoint( 800, 400, Color::Red, Color::Red );
   
    kwadrat2.AddPoint( poz1, poz1, Color::Green, Color::Green ); //pozycje zamiast 100,100
    kwadrat2.AddPoint( poz1, poz2, Color::Green, Color::Green ); //pozycje zamiast 100,200
    kwadrat2.AddPoint( poz2, poz2, Color::Green, Color::Green ); //pozycje zamiast 200,200
    kwadrat2.AddPoint( poz2, poz1, Color::Green, Color::Green ); //pozycje zamiast 200,100
   
    while( Aplikacja.IsOpened() )
    {
        Event zdarzenie;
        while( Aplikacja.GetEvent( zdarzenie ) )
        {
            if( zdarzenie.Type == Event::Closed )
                 Aplikacja.Close();
           
            if( zdarzenie.Type == sf::Event::KeyPressed && zdarzenie.Key.Code == sf::Key::Escape )
                 Aplikacja.Close();
           
        }
        const Input & sterowanie = Aplikacja.GetInput();
       
       
       
        if( sterowanie.IsKeyDown( Key::Left ) )
        {
            kwadrat2.Move( - 0.2, 0 );
            kwadrat_x -= 0.2; // dodane
        }
        if( sterowanie.IsKeyDown( Key::Right ) )
        {
            kwadrat2.Move( 0.2, 0 );
            kwadrat_x += 0.2; // dodane
        }
        if( sterowanie.IsKeyDown( Key::Down ) )
        {
            kwadrat2.Move( 0, 0.2 );
            kwadrat_y += 0.2; // dodane
        }
        if( sterowanie.IsKeyDown( Key::Up ) )
        {
            kwadrat2.Move( 0, - 0.2 );
            kwadrat_y -= 0.2; // dodane
        }
       
       
        cout << "X: " << kwadrat_x << endl;
        cout << "Y: " << kwadrat_y << endl;
       
       
       
       
       
       
       
       
       
        Aplikacja.Clear( Color( 0, 0, 0 ) );
        Aplikacja.Draw( kwadrat1 );
        Aplikacja.Draw( kwadrat2 );
        Aplikacja.Display();
       
    }
    return 0;
}

Zobacz czy tak zadziała, i czy o to chodziło.
P-72447
DanielSC
Temat założony przez niniejszego użytkownika
» 2012-12-30 20:59:13
Nom mniej wiecej o to ale czy nie ma jakies klasy zeby zwracala polozenie wierzcholkow kwadratu ?


P-72448
DejaVu
» 2012-12-30 21:21:42
Próbowałeś zapoznać się z dokumentacją klasy sf::Shape?
P-72453
DanielSC
Temat założony przez niniejszego użytkownika
» 2012-12-31 15:52:37
tak ale jest ona dla mnie troche niezrzumiała

P-72526
DejaVu
» 2012-12-31 16:00:18
To dla wprawy przeczytaj ze zrozumieniem opis każdej metody w klasie sf::Shape. Umiejętność czytania dokumentacji ze zrozumieniem jest chyba najważniejszym elementem dla każdego programisty.
P-72531
DanielSC
Temat założony przez niniejszego użytkownika
» 2012-12-31 16:53:31
a klasa GetPointPosition zdala by sie?

@
Wymajstrowałem coś takiego :

kwadrat2.GetPointPosition( 1 );

i chciałbym wypisac to do konsoli

cout << kwadrat2.GetPointPosition( 1 )

aby sprawdzić jaką przyjmuje wartość ale się dzieje coś takiego:
std::char_traits<char>]
e:\cod blocks\codeblocks\mingw\bin\../lib/gcc/mingw32/4.4.1/include/c++/bits/ostream.tcc:119: note:                 std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_streambuf<_CharT, _Traits>*) [with _CharT = char, _Traits = std::char_traits<char>]
Process terminated with status 1 (0 minutes, 0 seconds)
1 errors, 0 warnings
P-72539
DejaVu
» 2012-12-31 17:20:18
No... to teraz jeszcze sprawdź jaki typ zwraca wspomniana metoda i jesteś w domu.
P-72547
« 1 » 2
  Strona 1 z 2 Następna strona