• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Dlaczego nie mogę ruszyć obiektem w SFML?

Object Storage Arubacloud
0 głosów
122 wizyt
pytanie zadane 20 sierpnia 2020 w C i C++ przez tonn204 Mądrala (7,440 p.)

Cześć. Nie mogę ruszyć obiektem w SFML. Próbowałem wstawić if'y z innych pierwszej pętli, ale to nic nie dało. Sprawdziłem tez czy nie ma takich małych błędów i też nic nie znalazłem? Jakieś pomysły dlaczego tak się dzieje?

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

int main()
{
    int screenWidth = 720;
    int screenHeight = 480;

    sf::RenderWindow window(sf::VideoMode(screenWidth, screenHeight), "SFML works!");
    sf::CircleShape shape(100.f);
    shape.setFillColor(sf::Color::Green);

    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
        {
            switch (event.type)
            {
            case sf::Event::Closed:
                window.close();
                break;
            case sf::Event::Resized:
                std::cout << "New window width: " << event.size.width << " New window height: " << event.size.height << std::endl;
                break;
            case sf::Event::TextEntered:
                std::cout << event.text.unicode << std::endl;
               
            }

            if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::A));
            {
                shape.move(-1.0f, 0.0f);
            }
            if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::D));
            {
                shape.move(1.0f, 0.0f);
            }
            if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::W));
            {
                shape.move(0.0f, 1.0f);
            }
            if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::S));
            {
                shape.move(0.0f, -1.0f);
            }
        }

        window.clear();
        window.draw(shape);
        window.display();
    }

    return 0;
}

 

komentarz 20 sierpnia 2020 przez jankustosz1 Nałogowiec (35,880 p.)
Daj te ify poziom wyżej(obok while'a), nie wiem czy to pomoże, ale możesz spróbować.

1 odpowiedź

+1 głos
odpowiedź 20 sierpnia 2020 przez Piotr Batko Stary wyjadacz (13,190 p.)
edycja 21 sierpnia 2020 przez Piotr Batko
// Linijka niżej nie powinna być zakończona średnikiem
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Key::A)); // <-- Tu masz zbędny średnik
{
  shape.move(-1.0f, 0.0f);
}

Obecnie to działa tak, że jak klawisz A jest wciśnięty, to wykonywana jest pusta instrukcja (jakby ten średnik). Następnie niezależnie od stanu przycisku shape jest przesuwany o jeden piksel w lewo. I tak zachowuje się każdy z Twoich ifów, przez co shape przesunięty jest o piksel w każdą stronę i wraca do pozycji startowej :)

Podobne pytania

0 głosów
0 odpowiedzi 102 wizyt
0 głosów
1 odpowiedź 311 wizyt
pytanie zadane 30 lipca 2021 w C i C++ przez tonn204 Mądrala (7,440 p.)
0 głosów
1 odpowiedź 363 wizyt
pytanie zadane 28 lipca 2021 w C i C++ przez tonn204 Mądrala (7,440 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...