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