Cześć, robię sobie prostą gierkę, która polega na zbieraniu bananów kulką - jeżeli kulka dotknie banana on znika, kulka się powiększa i gdzieś na mapie losowo powstaje nowy banan. Całość działa, ale nie wydaje mi się, że jest to odpowiednio zrobione i mógłby mi ktoś doradzić jak ulepszyć ten system, gdyż teraz operuje na 1 obiekcie wektora, gdzie raz go tworze i potem usuwam i tak w kółko ;D
Kod:
#include <SFML/Graphics.hpp>
#include"Ball.h"
#include"banana.h"
#include<cstdlib>
std::vector<banana> banany;
int main()
{
srand(time(NULL));
sf::RenderWindow window{ sf::VideoMode(800,600),"Pick-up" };
window.setFramerateLimit(60);
banany.emplace_back("banan.png", rand() % 768 + 32, rand() % 568 + 32); // tworzy banana losowo na mapie
Ball ball(400, 300);
sf::Event event;
while (true)
{
window.pollEvent(event);
window.clear();
if (event.type == event.Closed)
{
window.close();
break;
}
if (banany[0].bound().intersects(ball.globalb())) //funkcja sprawdzajaca czy kulka i sprite sie przecinaja
{
ball.zwieksz_rozmiar(ball);
banany.pop_back();
banany.emplace_back("banan.png", rand()%768+32, rand()%568+32); //znowu tworzy nowego banana
}
ball.upgrade();
banany[0].printbanana(window);//wyswietla banana
window.draw(ball);
window.display();
}
return 0;
}
I jeszcze jedno pytanie z innej beczki, czy jest sposób, żeby kulka nie poruszała się po mapie ukosem, a tylko pionowo i poziomo?
Teraz to działa tak, jakby przy szybkiej zmianie klawisza np: z "D" na "W" kulka jedzie na pod katem 45* do obu osi ;)