Hej, mam przed sobą kod prostej gierki, a w zasadzie bardziej animacji w SFML, chcialem zapytać się o tworzenie obiektów. Pytanie pod kodem.
#include <SFML/Graphics.hpp>
#include <SFML/Window.hpp>
#include <SFML/System.hpp>
#include <iostream>
#include <vector>
#include <Windows.h>
using namespace sf;
using namespace std;
int main()
{
RenderWindow window(VideoMode(800, 600), "Example 03!", Style::Default);
window.setFramerateLimit(60);
//BALLS
CircleShape projectile;
projectile.setFillColor(Color::Red);
projectile.setRadius(5.f);
RectangleShape enemy;
enemy.setFillColor(Color::Magenta);
enemy.setSize(Vector2f(50.f, 50.f));
CircleShape player;
player.setFillColor(Color::White);
player.setRadius(50.f);
player.setPosition(window.getSize().x / 2 - player.getRadius(), window.getSize().y - player.getRadius() * 2 - 10.f);
Vector2f playerCenter;
int ShootTimer=0;
vector<CircleShape> projectiles;
vector<RectangleShape> enemies;
enemies.push_back(RectangleShape(enemy));
projectiles.push_back(CircleShape(projectile));
while (window.isOpen())
{
Event event;
while (window.pollEvent(event))
{
if (event.type == Event::Closed)
window.close();
}
//Update
playerCenter = Vector2f(player.getPosition().x + player.getRadius(), player.getPosition().y + player.getRadius());
if (ShootTimer < 5)
ShootTimer++;
if (Mouse::isButtonPressed(Mouse::Left) &&ShootTimer >=5) //Shoot
{
projectile.setPosition(playerCenter);
projectiles.push_back(CircleShape(projectile));
ShootTimer = 0;
}
for (size_t i = 0; i < projectiles.size(); i++)
{
projectiles[i].move(0.f, -10.f);
if (projectiles[i].getPosition().y <= 0)
projectiles.erase(projectiles.begin() + i);
}
//Draw everything
window.clear();
window.draw(player);
for (size_t i = 0; i < enemies.size(); i++)
{
window.draw(enemies[i]);
}
for (size_t i = 0; i < projectiles.size(); i++)
{
window.draw(projectiles[i]);
}
window.display();
}
return 0;
}
A szegolnie chodzi mi o ten kawałek kodu:
if (Mouse::isButtonPressed(Mouse::Left) &&ShootTimer >=5) //Shoot
{
projectile.setPosition(playerCenter);
projectiles.push_back(CircleShape(projectile));
ShootTimer = 0;
}
Mam pytanie konceptualne odnośnie tworzenia obiektów. Wiem ze to do vectora projectitles wysyłane są "obiekty"?? projecticle. W tym przypadku są tą strzały do przeciwnika. Czy to są wysyłane obiekty, czy jak to mam rozumieć. Jesli są to obiekty to dlaczego jakby mogą mieć tą samą nazwę? W sensie zawsze uczyłem sie ze tworząc kolejny obiekt nadaje mu nową nazwę i wtedy mogę się do niego dostać. Jak można zatem nazwać te elementy projecticle wysyłane do tablicy-vectora? Wiem ze pewnego rodzaju to jest ten sam obiekt, cały czas ta sama czerwona kulka lecąca do przeciwnika. Czyli co vector wypełniony jest takim samym obiektem w rożnej ilości, czy jak to rozumieć ? Mam nadzieje ze wiecie o co mi chodzi i ktoś mi to konceptualnie wytłumaczy. Z gory dziękuję