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

Ocena kodu + pare pytań

Object Storage Arubacloud
0 głosów
208 wizyt
pytanie zadane 28 grudnia 2017 w C i C++ przez noel1402 Użytkownik (630 p.)

Proszę o ocenę kodu.

To mój pierwszy projekt w sfml - grawitacja. Kod jest krótki więc wstawię go w bloczek.

#include <SFML/Graphics.hpp>

int main()
{
    //----------zmienne-------------------------------

    const int width = 500, height = 400, groundHeight = height - (height / 8);
    sf::Vector2f velocity(0,0);
    float moveSpeed = 1.0f, jumpSpeed = 1.0f;

    //----------tworzenie-okna-------------------------

    sf::RenderWindow app(sf::VideoMode(width, height), "Grawitacja");

    //----------tworzenie-obiektów----------------------

    sf::RectangleShape ground(sf::Vector2f(width,height / 20));
    ground.setFillColor(sf::Color::Black);
    ground.setPosition(0,groundHeight);

    sf::RectangleShape player(sf::Vector2f(20,40));
    player.setFillColor(sf::Color(255,255,255));
    player.setPosition(width / 10,groundHeight-player.getSize().y);

    sf::RectangleShape ground2(sf::Vector2f(200,20));
    ground2.setFillColor(sf::Color::Black);
    ground2.setPosition(200,groundHeight + 200);

    //-----------pętla-główna-------------------------

    while (app.isOpen())
    {
        //--------kontrola-eventów-------------------

        sf::Event event;

        while (app.pollEvent(event))
        {
            if (event.type == sf::Event::Closed)
                app.close();
        }

        //--------czyszczenie-ekranu-------------------

        app.clear(sf::Color::Blue);

        //--------poruszanie-i-grawitacja------------------

        if (sf::Keyboard::isKeyPressed(sf::Keyboard::Left))
        {
            velocity.x = -moveSpeed;
        }
        else if (sf::Keyboard::isKeyPressed(sf::Keyboard::Right))
        {
            velocity.x = moveSpeed;
        }
        else
        {
            velocity.x= 0;
        }
        if (sf::Keyboard::isKeyPressed(sf::Keyboard::Up))
        {
            velocity.y = -jumpSpeed;
        }
        else if (player.getPosition().y + player.getSize().y == groundHeight)
        {
            velocity.y = 0;
        }
        else
        {
            velocity.y = jumpSpeed;
        }

        //-----------kontrola-wyjScia-poza-okno-----------

        if (player.getPosition().x == 0)
        {
            velocity.x = 0;
            player.move(1,0);
        }
        if (player.getPosition().x == width - player.getSize().x)
        {
            velocity.x = 0;
            player.move(-1,0);
        }
        if (player.getPosition().y == 0)
        {
            velocity.y = 0;
            player.move(0,1);
        }

        //-----------rysowanie-obiektów-----------

        app.draw(ground);
        app.draw(ground2);
        app.draw(player);

        player.move(velocity.x,velocity.y);

        app.display();
    }

    return EXIT_SUCCESS;
}

A teraz pytania:

1. Nie mam pojęcia w jaki sposób stworzyć klasę rysując platformę. Coś w rodzaju:

Platforama p1;
p1.rysujPlarworme(szerokosc,wysokosc);

2. Jak zrobić by kamera przesuwała się za graczem, gdy wychodzi poza ekran to ona z nim?

3. W jaki sposób automatycznie tworzyć obiekty np. jak w zbieraczu, lecą bez końca z góry, więc muszą być na bieżąco tworzone?

4. Znacie może jakąś dobrą stronę lub film na YT gdzie wytłumaczona jest zaawansowana grawitacja tzn. inna prędkość przy spadaniu itd.?

komentarz 28 grudnia 2017 przez noel1402 Użytkownik (630 p.)

Mam też plik wykonywalny, ale z linuxa. Jak ktoś chce przetestować Pobierz

1 odpowiedź

0 głosów
odpowiedź 28 grudnia 2017 przez Milesq Nałogowiec (32,020 p.)

1 możesz zrobić klasę dziedziczącą od sf::drawable i sf::rectangleShape na dokumenacji sfml znajdziesz materiały

 

2 sf::viev

3 opertory new i delete do dynamicznego zarządzania pamięcią

4 zainteresuj się biblioteką Box2D

komentarz 28 grudnia 2017 przez noel1402 Użytkownik (630 p.)

Znam new i delete, ale w jaki sposób generować ich nazwy na przykład jak w zbieraczu:

for (int i = 0; i > 10; i++)
{
   Platjorma /*?*/;
   /*?*/.setPosition(wylosowanaLiczba, 0);
   window.draw(/*?*/);
}

 

komentarz 28 grudnia 2017 przez the_danger Gaduła (4,800 p.)

opertory new i delete do dynamicznego zarządzania pamięcią

Zaraz będzie 2018 a ty polecasz używanie new i delete?  

komentarz 28 grudnia 2017 przez Milesq Nałogowiec (32,020 p.)
a co ty byś polecił?

można użyć też vectora itp.

ale tutaj new i delete sprawdziłyby się
komentarz 28 grudnia 2017 przez noel1402 Użytkownik (630 p.)
Jak więc rozwiązać problem umieszczony w pierwszym komentarzu do tej odpowiedzi?

Jeśli jest jakiś tutorial który to tłumaczy to też podajcie linka. (może być po angielsku)

Podobne pytania

+2 głosów
0 odpowiedzi 613 wizyt
pytanie zadane 5 października 2017 w Nasze projekty przez L33TT12 Gaduła (3,950 p.)
0 głosów
1 odpowiedź 397 wizyt
pytanie zadane 15 maja 2017 w C i C++ przez neos Początkujący (320 p.)
+9 głosów
4 odpowiedzi 960 wizyt
pytanie zadane 23 czerwca 2015 w Nasze projekty przez DiZZie Gaduła (3,170 p.)

92,563 zapytań

141,413 odpowiedzi

319,590 komentarzy

61,948 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!

...