Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
#ifndef ENTITY_H #define ENTITY_H #include <SFML\Graphics.hpp> #include <core\Resource.h> #include <iostream> class Entity : public sf::Transformable, public sf::Drawable { public: Entity(); virtual void update(sf::RenderWindow& rw, float deltatime) = 0; virtual void handle(sf::Event& ev) = 0; void setSize(sf::Vector2f size); sf::Vector2f getSize() const; private: sf::Vector2f _size; }; #endif // !ENTITY_H |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
#ifndef BRICK_H #define BRICK_H #include <game\Entity.h> #include <SFML\Graphics.hpp> class Brick : public Entity { public: Brick(sf::Color color=sf::Color::Red); void update(sf::RenderWindow& rw, float deltatime) override; void handle(sf::Event& ev) override; void setAlive(bool alive); void setColor(sf::Color color); void draw(sf::RenderTarget &target, sf::RenderStates states) const; bool getAlive(); private: sf::Vector2f _size; sf::Sprite _sprite; bool _alive; }; #endif |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
#include <game\Brick.h> /////////////////////////////////////////////////////////////////////////////////////////////// Brick::Brick(sf::Color color) : _size(Resource::getTexture("brick.png").getSize()) , _alive(true) { setSize(_size); _sprite.setTexture(Resource::getTexture("brick.png")); _sprite.setColor(color); } /////////////////////////////////////////////////////////////////////////////////////////////// void Brick::update(sf::RenderWindow & rw, float deltatime) { } /////////////////////////////////////////////////////////////////////////////////////////////// void Brick::handle(sf::Event & ev) { } /////////////////////////////////////////////////////////////////////////////////////////////// void Brick::setAlive(bool alive) { _alive = alive; } /////////////////////////////////////////////////////////////////////////////////////////////// void Brick::setColor(sf::Color color) { _sprite.setColor(color); } /////////////////////////////////////////////////////////////////////////////////////////////// void Brick::draw(sf::RenderTarget & target, sf::RenderStates states) const { target.draw(_sprite); } /////////////////////////////////////////////////////////////////////////////////////////////// bool Brick::getAlive() { return _alive; } /////////////////////////////////////////////////////////////////////////////////////////////// |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
#ifndef BRICKMANAGER_H #define BRICKMANAGER_H #include <SFML\Graphics.hpp> #include <game\Brick.h> #include <vector> #include <memory> class Brickmanager : public sf::Drawable, public sf::Transformable { public: Brickmanager(); ~Brickmanager(); void addBrick(); void deleteBrick(Brick &brick); private: void draw(sf::RenderTarget &target, sf::RenderStates states) const; private: std::vector<std::shared_ptr<Brick>> _bricks; sf::Color _brickColors[4]; }; #endif |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
#include <game\Brickmanager.h> /////////////////////////////////////////////////////////////////////////////////////////////// Brickmanager::Brickmanager() { _brickColors[0] = sf::Color::Blue; _brickColors[1] = sf::Color::Red; _brickColors[2] = sf::Color::Green; _brickColors[3] = sf::Color::Yellow; } /////////////////////////////////////////////////////////////////////////////////////////////// Brickmanager::~Brickmanager() { _bricks.clear(); } /////////////////////////////////////////////////////////////////////////////////////////////// void Brickmanager::addBrick() { std::shared_ptr<Brick> brickptr; brickptr->setColor(_brickColors[std::rand() + 0 % 4]); _bricks.push_back(brickptr); } /////////////////////////////////////////////////////////////////////////////////////////////// void Brickmanager::deleteBrick(Brick &brick) { for (int it = 0; it < _bricks.size(); it++) { _bricks.erase(_bricks.begin() + it); } } /////////////////////////////////////////////////////////////////////////////////////////////// void Brickmanager::draw(sf::RenderTarget & target, sf::RenderStates states) const { for (int it = 0; it < _bricks.size(); it++) { //////////////////////////// // HIER IST DER FEHLER !! // //////////////////////////// target.draw(_bricks.at(it)); } } /////////////////////////////////////////////////////////////////////////////////////////////// |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »cojo2015« (26.08.2016, 18:45)
Alter Hase
Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Diese Aussage strotzt vor Unsinn. Bitte ordne deine Gedanken noch einmal und fang nochmal an.Entity ist abstrakt und erbt von public sf::Transformable und public sf:rawable. Deshalb kann ich keine Instanzen der Klasse Brick erstellen, sondern nur zb. einen shared_ptr
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlueCobold« (26.08.2016, 20:05)
Danke trotzdem, ich habe den Fehler gefunden
Und was war der Fehler?
Ich musste die draw-Methode in Entity als virtual deklarieren.
Du solltest trotzdem über die angebrachte Kritik, mal nachdenken, 3 Antworden und alle 3 sagen dir das shared_ptr nicht die Richtige wahl ist!
Jap. Nachdem ich die draw-Methode als virtual deklariert hatte, hat es auch ohne shared_ptr geklappt.
Werbeanzeige