• 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?

VPS Starter Arubacloud
0 głosów
118 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 96 wizyt
0 głosów
1 odpowiedź 302 wizyt
pytanie zadane 30 lipca 2021 w C i C++ przez tonn204 Mądrala (7,440 p.)
0 głosów
1 odpowiedź 344 wizyt
pytanie zadane 28 lipca 2021 w C i C++ przez tonn204 Mądrala (7,440 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 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

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 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!

...