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

SFML - Nie wiem gdzie popełniłem błąd

VPS Starter Arubacloud
+1 głos
186 wizyt
pytanie zadane 6 września 2016 w C i C++ przez Gracjan Pasik Obywatel (1,810 p.)

Nie wiem gdzie popełniłem błąd, wyświetla się tylko jeden obiekt d[].dd, podczas gdy powinno 10.

#include <SFML/Graphics.hpp>
#include <windows.h>
#include <sstream>
#include <string>
#include <fstream>
#include "dzida.h"


using namespace std;

int main()
{
    sf::RenderWindow okno(sf::VideoMode(800, 600, 32), "Odbijacz");
    fstream plik ("ranking.txt", ios::in | ios::out);
    sf::Clock zegar;
    sf::Time CzasOdAktualizacji = sf::Time::Zero;
    const sf::Time KrokCzasowy = sf::seconds(1.f/100.f);
    sf::Texture tex_hero, tex_tlo;
    sf::Time Czas;
    tex_hero.loadFromFile("hero.png");
    tex_tlo.loadFromFile("tlo.png");
    Dzida d[10];
    for (int i=0; i<10; i++)
    {
        d[i].hi();
    }

    sf::Sprite hero, tlo;
    tlo.setTexture(tex_tlo);
    hero.setTexture(tex_hero);
    sf::Event zdarzenie;

//    bool prawo = 0, lewo = 0, gora = 0, dol = 0;

    while (okno.isOpen())
    {
        okno.clear();
        Czas = zegar.restart();
        CzasOdAktualizacji += Czas;


        while(CzasOdAktualizacji > KrokCzasowy) //jeśli COOA większe od kroku czasowego
        {
            CzasOdAktualizacji -= KrokCzasowy;
            while (okno.pollEvent(zdarzenie))
            {
                if (zdarzenie.type == sf::Event::Closed)
                    okno.close();

            }

            if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
            {
                hero.move(5,0);
            }
            if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
            {
                hero.move(-5,0);
            }
            if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
            {
                hero.move(0,-5);
            }
            if (sf::Keyboard::isKeyPressed(sf::Keyboard::Down))
            {
                hero.move(0,5);
            }
            hero.setTexture(tex_hero);
            tlo.setTexture(tex_tlo);
            for (int i=0; i<10; i++)
            {
                d[i].dd.move(0,2);
            }
        }
        okno.draw(tlo, sf::RenderStates::Default);
        okno.draw(hero);
        for (int i=0; i<10; i++)
        {
            okno.draw(d[i].dd);
        }

        okno.display();




    }
    return 0;
}

 

2 odpowiedzi

0 głosów
odpowiedź 6 września 2016 przez easytodo Mądrala (5,380 p.)
wybrane 6 września 2016 przez Gracjan Pasik
 
Najlepsza
Pokaż zawartość pliku "dzida.h" i "dzida.cpp"

+ opisz jak kod ma mniej więcej działać bo straszny chaos w nim masz ;)

Na razie to widzę tylko możliwość, że rysujesz na sobie 10 obiektów
komentarz 6 września 2016 przez Gracjan Pasik Obywatel (1,810 p.)
Teraz to zrozumiałem :) Faktycznie rysuję 10 obiektów 1 na drugim.
0 głosów
odpowiedź 6 września 2016 przez kacperdyba Gaduła (3,290 p.)

Jeżeli jest to biblioteka SFML wnioskuje, że gra jest 2D. Jesteś pewien, że wyświetla ci 1 obiekt a nie 10 położonych "na sobie"? 

ta pętla :

            for (int i=0; i<10; i++)
            {
                d[i].dd.move(0,2);
            }

 

Jeżeli dobrze rozumiem odpowiedzialna jest za położenie obiektu (Jeżeli się mylę, proszę poprawcie mnie) 

Czy tam zamiast 0 nie powinno być np i?

Podobne pytania

0 głosów
1 odpowiedź 187 wizyt
pytanie zadane 30 stycznia 2019 w JavaScript przez niezalogowany
0 głosów
2 odpowiedzi 198 wizyt
pytanie zadane 3 kwietnia 2018 w C i C++ przez Vicker9 Początkujący (250 p.)
0 głosów
1 odpowiedź 376 wizyt

92,957 zapytań

141,915 odpowiedzi

321,147 komentarzy

62,286 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.

Wprowadzenie do ITsec, tom 2

Można już zamawiać tom 2 książki "Wprowadzenie do bezpieczeństwa IT" - będzie to około 650 stron wiedzy o ITsec (17 rozdziałów, 14 autorów, kolorowy druk).

Planowana premiera: 30.09.2024, zaś planowana wysyłka nastąpi w drugim tygodniu października 2024.

Warto preorderować, tym bardziej, iż mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy dodatkowe 15% zniżki! Dziękujemy zaprzyjaźnionej ekipie Sekuraka za kod dla naszej Społeczności!

...