Spiel für Freund schreiben
-
c0ff33.alex schrieb:
Wie du siehst hab ichs unter Linux geschrieben, es sollte aber kein Problem sein es auf Windows mit Visual Studio zu kompilieren. Also falls du Interesse hast, kann ich dir die Sources schicken.
Vielen Dank c0ff33.alex für die interessante Lösung mit SFML-Framework.
Entgegen anderslautender Befürchtungen lässt sich der Quelltext wirklich
problemlos mit VS2010 kompilieren.Das SFML-1.6 Framework muss neu kompiliert werden da es nur für VS2008 vorhanden war.
Die libs lassen sich statisch linken - Vorteil keine losen DLLs mehr.
Danach liegen nur die BMPs noch lose rum, naja.
Die rund 500 Zeilen OOP-Code sind aber für Anfänger wohl etwas hart.
Das SFML-Framework scheint aber ein guter Ansatz zu sein
http://www.sfml-dev.org/features.phpVG
Merano
-
Ich wette, dass Anfänger100 kaum ein Wort davon verstanden hat
-
www
-
MorphysX schrieb:
denn wozu sollte ich mir jetzt weiter an einem Projekt arbeiten von dem ich nicht viel habe?
Was hast du denn sonst davon? Du bekommst nichts dafür. Ob er das jetzt nutzt oder nicht.
-
Ich versteh auch nicht, wie man einem Menschen helfen kann, der sich aus moralischer Sicht nicht in Ordnung verhält...
-
Some men just want to watch the world burn.
-
otze schrieb:
dann hat dein Freund wohl die Wette gewonnen
Haha das dachte ich mir auch gerade! Nix outsourcing hier! Hast du wohl nen Check ausgestellt, denn dein A.... nicht decken kann wa?!;)
-
HAHA Anfänger100 ERWISCHT ! Ich bins dein Kollege !
Ne, Spaß
Aber wenn ihr euch schon die Arbeit gemacht habt ein Spiel für ihn zu schreiben könntet ihr vielleicht den Source Code hochladen?
Ich würds mir auch mal gerne anschauen.
-
Bassmaster schrieb:
Aber wenn ihr euch schon die Arbeit gemacht habt ein Spiel für ihn zu schreiben könntet ihr vielleicht den Source Code hochladen?
Ich würds mir auch mal gerne anschauen.Wie wärs mit selber machen. Da lernt man doch am meisten
Die einzige validierte Lösung hier im Forum scheint von c0ff33.alex vorzuliegen.
Als Konzepthilfe für einfaches Spiel (frei nach c0ff33.alex) poste ich mal die Hauptbestandteile - ohne
Gewähr das dies die optimale Lösung darstellt. Zumindest wäre es so implementierbar.Zunächst benötigt man eine Klasse die alles organisiert.
Zutaten: 1xSpaceship, viele Raketen und Hindernisse ...
class Game { Spaceship& ship; std::vector<Obstacle*> obstacles; std::vector<Rocket*> rockets; const sf::Input* input; sf::Event event; sf::RenderWindow* window; sf::Clock clock; unsigned int points; bool detectCollisions(sf::FloatRect& c1, sf::FloatRect& c2); public: Game(Spaceship& s) : ship(s), input(NULL), window(NULL), points(0) {} ~Game(); std::string init(unsigned int res_x, unsigned int res_y); void startScreen(); void instructionsScreen(); void countdown(); bool handleInput(); void resultsScreen(); void drawAll(); void updateAll(bool& continue_game); };
class Spaceship { friend class Game; static sf::Image* image; static const float speed; sf::Sprite sprite; sf::Vector2f position; sf::FloatRect collider; #if USE_COOLDOWN == 1 sf::Clock cooldown_timer; constexpr static float cooldown = 1.f; #endif public: Spaceship(float x, float y); void draw(sf::RenderWindow& target); Rocket* shoot(); void move(float direction, float deltatime); };
class Rocket { friend class Game; static sf::Image* image; static const float speed; sf::Sprite sprite; sf::Vector2f position; sf::FloatRect collider; public: Rocket(float x, float y); void draw(sf::RenderWindow& target); void move(float deltatime); };
class Obstacle { friend class Game; static sf::Image* image; static float speed; sf::Sprite sprite; sf::Vector2f position; sf::FloatRect collider; public: Obstacle(float x, float y); void draw(sf::RenderWindow& target); void move(); };
Zum Schluss muss man das nur noch im Hauptprogramm aufrufen:
int main() { bool run; std::string error; srand(time(0)); Spaceship ship(98/2, 480/2); Game game(ship); if((error = game.init(611, 521)).empty() == false ) { std::cout << "Initialization failed (" << error << ")\n"; return 1; } game.startScreen(); game.instructionsScreen(); game.countdown(); std::cout << "starting main loop" << std::endl; do { run = game.handleInput(); game.drawAll(); game.updateAll(run); } while(run); game.resultsScreen(); return 0; }
-
merano schrieb:
Wie wärs mit selber machen. Da lernt man doch am meisten
Ich will kein Spiel programmieren, ich wollte mir nur den Sourcecode mal anschauen den jemand für ihn geschrieben hat.