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

SFML Poruszanie obiektów/aktywacja obiektów

Ostatnio zmodyfikowano 2015-03-15 21:25
Autor Wiadomość
miro741
Temat założony przez niniejszego użytkownika
» 2015-03-14 23:33:56
@Brunon3

To co powinno być jeszcze w nim aby był dokończony ?
C/C++
if( kw[ 0 ] == false ) {
    if( zdarzenie.type == sf::Event::MouseButtonReleased && zdarzenie.mouseButton.button == sf::Mouse::Left )
         kw[ 0 ] = !kw[ 0 ], kw[ 1 ] = false, kw[ 2 ] = false, kw[ 3 ] = false, kw[ 4 ] = false;
   
}
 

C/C++
if( sf::Keyboard::isKeyPressed( sf::Keyboard::Up ) && kw[ 0 ] )
{
    q.move( 0, - 1 );
    x.move( 0, - 1 );
    w.move( 0, - 1 );
    e.move( 0, - 1 );
    r.move( 0, - 1 );
}

Tak jak teraz ??

@Lora
a jak to sprawdzać ?
P-128424
Lora
» 2015-03-14 23:39:08
Przecież w moim drugim poście było:
q.getGlobalBounds().contains(( sf::Vector2f ) sf::Mouse::getPosition( okno ) )
 Miałeś tam zamienić tylko ten warunek:
sf::Mouse::isButtonPressed( sf::Mouse::Left ) )
 .
I jeszcze ten drugi if inaczej:
C/C++
if( sf::Keyboard::isKeyPressed( sf::Keyboard::Up ) )
{
    if( kw[ 0 ] )
         q.move( 0, - 1 );
   
    if( kw[ 1 ] )
         x.move( 0, - 1 );
    //itd.
}
P-128426
Brunon3
» 2015-03-14 23:41:35
Umghm... @miro141, chyba dalej nie rozumiesz.

Pseudokod ->


jeżeli gracz kliknął na kwadrat nr 0
  ustaw zmienną kw[0] na !kw[0] // Jeżeli true - false; jeżeli false - true

/*analogicznie dla kolejnych kwadratów*/

jeżeli zmienna kw[0] jest true && gracz klikną W
  porusz kwadrat nr 0 do góry

/*analogicznie dla A, S, D i kolejnych kwadratów*/

<- Pseudokod

Teraz rozumiesz?

-BD.
P-128428
Lora
» 2015-03-14 23:43:23
Wydaje mi się, że on chce, żeby tylko jeden kwadrat był zaznaczony naraz.
BTW
kw[ 0 ] = !kw[ 0 ], kw[ 1 ] = false, kw[ 2 ] = false, kw[ 3 ] = false, kw[ 4 ] = false;
tam powinny być średniki, a nie przecinki.
P-128429
Brunon3
» 2015-03-14 23:46:26
@up:
No to jaki problem?
Podczas zaznaczania np kwadratu nr 0 odznacza się wszystkie inne i analogicznie dla reszty.

...

Choć to trochę bez sensu bo fajnie jest sterować grupką. :D

-BD.
P-128430
Lora
» 2015-03-14 23:47:39
No żaden problem, tylko w twoim pseudokodzie tego nie było.
P-128431
Brunon3
» 2015-03-14 23:49:40
Wiem, bo nie wiedziałem że autor chce żeby tak było. :P

Pseudokod z tym:

jeżeli gracz kliknął na kwadrat nr 0
  ustaw zmienną kw[0] na !kw[0] // Jeżeli true - false; jeżeli false - true
  ustaw zmienne od kw[1] do kw[liczba_kwadratów] na false

/*analogicznie dla kolejnych kwadratów*/

jeżeli zmienna kw[0] jest true && gracz kliknął W
  porusz kwadrat nr 0 do góry

/*analogicznie dla A, S, D i kolejnych kwadratów*/
P-128432
miro741
Temat założony przez niniejszego użytkownika
» 2015-03-14 23:56:50
C/C++
if( kw[ 0 ] == false ) {
    if( q.getGlobalBounds().contains(( sf::Vector2f ) sf::Mouse::getPosition( okno ) ) && zdarzenie.type == sf::Event::MouseButtonReleased && zdarzenie.mouseButton.button == sf::Mouse::Left )
         kw[ 0 ] = !kw[ 0 ], kw[ 1 ] = false, kw[ 2 ] = false, kw[ 3 ] = false, kw[ 4 ] = false;
   
}
if( kw[ 1 ] == false )
{
    if( w.getGlobalBounds().contains(( sf::Vector2f ) sf::Mouse::getPosition( okno ) ) && zdarzenie.type == sf::Event::MouseButtonReleased && zdarzenie.mouseButton.button == sf::Mouse::Left )
         kw[ 0 ] = false, kw[ 1 ] = !kw[ 1 ], kw[ 2 ] = false, kw[ 3 ] = false, kw[ 4 ] = false;
   
}
if( kw[ 2 ] == false ) {
    if( e.getGlobalBounds().contains(( sf::Vector2f ) sf::Mouse::getPosition( okno ) ) && zdarzenie.type == sf::Event::MouseButtonReleased && zdarzenie.mouseButton.button == sf::Mouse::Left )
         kw[ 0 ] = false, kw[ 1 ] = false, kw[ 2 ] = !kw[ 2 ], kw[ 3 ] = false, kw[ 4 ] = false;
   
} if( kw[ 3 ] == false ) {
    if( r.getGlobalBounds().contains(( sf::Vector2f ) sf::Mouse::getPosition( okno ) ) && zdarzenie.type == sf::Event::MouseButtonReleased && zdarzenie.mouseButton.button == sf::Mouse::Left )
         kw[ 0 ] = false, kw[ 1 ] = false, kw[ 2 ] = false, kw[ 3 ] = !kw[ 3 ], kw[ 4 ] = false;
   
} if( kw[ 4 ] == false ) {
    if( x.getGlobalBounds().contains(( sf::Vector2f ) sf::Mouse::getPosition( okno ) ) && zdarzenie.type == sf::Event::MouseButtonReleased && zdarzenie.mouseButton.button == sf::Mouse::Left )
         kw[ 0 ] = false, kw[ 1 ] = false, kw[ 2 ] = false, kw[ 3 ] = false, kw[ 4 ] = !kw[ 4 ];
   
}

if( sf::Keyboard::isKeyPressed( sf::Keyboard::Up ) )
{ if( kw[ 0 ] );
   
    q.move( 0, - 1 );
    if( kw[ 1 ] );
   
    x.move( 0, - 1 );
    if( kw[ 2 ] );
   
    w.move( 0, - 1 );
    if( kw[ 3 ] );
   
    e.move( 0, - 1 );
    if( kw[ 4 ] );
   
    r.move( 0, - 1 );
}
if( sf::Keyboard::isKeyPressed( sf::Keyboard::Down ) )
{
    if( kw[ 0 ] );
   
    q.move( 0, 1 );
    if( kw[ 1 ] );
   
    x.move( 0, 1 );
    if( kw[ 2 ] );
   
    w.move( 0, 1 );
    if( kw[ 3 ] );
   
    e.move( 0, 1 );
    if( kw[ 4 ] );
   
    r.move( 0, 1 );
}
if( sf::Keyboard::isKeyPressed( sf::Keyboard::Left ) )
{
    if( kw[ 0 ] );
   
    q.move( - 1, 0 );
    if( kw[ 1 ] );
   
    x.move( - 1, 0 );
    if( kw[ 2 ] );
   
    w.move( - 1, 0 );
    if( kw[ 3 ] );
   
    e.move( - 1, 0 );
    if( kw[ 4 ] );
   
    r.move( - 1, 0 );
}
if( sf::Keyboard::isKeyPressed( sf::Keyboard::Right ) )
{
    if( kw[ 0 ] );
   
    q.move( 1, 0 );
    if( kw[ 1 ] );
   
    x.move( 1, 0 );
    if( kw[ 2 ] );
   
    w.move( 1, 0 );
    if( kw[ 3 ] );
   
    e.move( 1, 0 );
    if( kw[ 4 ] );
   
    r.move( 1, 0 );
}

Chcę że jak kliknę np na 1 to nim steruje a reszta się nie rusza potem żebym mógł kliknąć np sobie kolejnego i nim trochę posterował i tak z każdym. A i tak jak odpalę go to bez klikniecia myszą porusza wszystkie a jeśli kliknę to też porusza wszystkimi
P-128434
1 2 « 3 » 4 5 6
Poprzednia strona Strona 3 z 6 Następna strona