Spiel für Freund schreiben



  • Anfänger100 schrieb:

    Haha...hoffentlich fragt er mich nicht wie das funktioniert 🙂
    Danke c0ff33.alex! Die projektdatei wär noch toll!

    Geht nicht, der er unter Linux mit KDevelop gearbeitet hat und nicht mit Visual Studio 2010



  • Brauchst du meine Hilfe noch? Scheinbar gibt es ja schon eine
    Version die genau dem entspricht was du dir vorgestellt hast, denn wozu sollte ich
    mir jetzt weiter an einem Projekt arbeiten von dem ich nicht viel habe? Sollte
    ich doch noch gebraucht werden, bin ich ganz Ohr.

    Mgf MorphysX



  • Ach ja und wenn dein Freund ähnlich wenig Ahnung von Spiel-Entwicklung mit C++
    hat, wie du, kannst du ihm alles erzählen. Er weißt dann ja auch nicht ob es so
    stimmt oder nicht. 😉



  • 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.php

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


Anmelden zum Antworten