frage zu schere stein papier programm



  • Hallo leute, ich beschäfftige mich seit c.a 1 Monat mit C++ und habe jetzt schere stein papier programmiert ich werde gleich nach der frage den code posten. Nun zur Frage:Wenn ich das programm starte läuft alles so wie ich es wollte allerding kann ich nur eine runde spielen und weiß nicht wie ich es so machen kann das ich z.b 12 runde spielen kann. weiß jemand wie ich das anrichten soll sodass ich mehrere runden spielen kann? Ich wär für jede antwort dabkbar. Am besten wäre wenn jemand mein code überarbeitet.

    [code]
    #include <iostream>
    #include <stdlib.h>

    using namespace std;

    main()
    {
    srand(time(NULL));

    int wahl_pc;
    int wahl_spieler;

    //zu Dekoration
    cout<<"*********** \n";
    cout<<"✂🍪*📄 * \n";
    cout<<"*********** \n\n\n";

    cout<<"bitte wähle ein der drei items \n";
    cout<<"1.nSchere\n";
    cout<<"2.Stein \n";
    cout<<"3.Papier \n";

    cout<<"hier eingeben";
    cin>>wahl_spieler;

    //Der zufallsgenerator
    wahl_pc=1+(rand()%(4-1));

    // Die vergleiche zu schere
    if(wahl_spieler==wahl_pc){
    cout<<"unetschieden";
    }
    if(wahl_spieler==1 && wahl_pc==2){
    cout<<"computer gewinnt stein schlägt schere";
    }
    if(wahl_spieler==1 && wahl_pc==3){
    cout<<"Du gewinnst schere schlägt stein";
    }

    //vergleiche zzm stein
    if(wahl_spieler==2 && wahl_pc==1){
    cout<<"Du gewinnst Stein schlägt Schere";
    }
    if(wahl_spieler==2 && wahl_pc==3){
    cout<<"Computer gewinnt Papier schlägt Stein";
    }

    //Die vergleiche zu papier
    if(wahl_spieler==3 && wahl_pc==1){
    cout<<"Computer gewinnt Schere schlägt papier";
    }
    if(wahl_spieler==3 && wahl_pc==2){
    cout<<"Du gewinnst papier schlägt stein";
    }

    return 0;
    }



  • wahl_pc=1+(rand()%(4-1));
    

    4-1 kann man auch einfacher ausdrücken. Sagt man, bin jetzt aber nicht der crack hier.

    Aha, das ist CLI mit .NET. Da hab ich wiedermal was dazugelernt. Danke.



  • EOP schrieb:

    Aha, das ist CLI mit .NET. Da hab ich wiedermal was dazugelernt. Danke.

    @EOP: Nein, ist es nicht - aber ich gehe mal davon aus, dass du das ironisch gemeint hast.

    @laserpeter: Du bist im falschen Unterforum gelandet - hier ist C++/CLI, eine .NET Sprache - dein Code ist im Gegensazu dazu C++.



  • theta schrieb:

    [...] dein Code ist im Gegensazu dazu C++.

    Schaut eher aus wie C mit Klassen cout .

    #include <cstdlib>
    #include <ctime>
    #include <initializer_list>
    #include <utility>
    #include <array>
    #include <string>
    #include <map>
    #include <algorithm>
    #include <iostream>
    
    template< typename T, std::size_t N >
    constexpr std::size_t sizeof_array( T(&)[ N ] ) { return N; }
    
    class symbol
    {
    	std::string name;
    	std::map< std::string, std::string > actions;
    
    	public:
    		symbol() : name{} {};
    
    		symbol( std::string const & name, std::initializer_list< std::pair< std::string, std::string > > action_list ) : name{ name }
    		{
    			for( auto & i : action_list )
    				actions[ i.second ] = i.first;
    		}
    
    		std::string get_name() const { return name; }
    
    		std::string get_action( symbol const & other ) const {
    			auto action = actions.find( other.name );
    			if( action == actions.end() )
    				return "";
    			return action->second;
    		}
    
    		bool operator==( symbol const & other ) { return name == other.name; }
    };
    
    bool operator<( symbol const & lhs, symbol const & rhs )
    {
    	return lhs.get_action( rhs ) != "";
    }
    
    int main()
    {
    	symbol const symbols[] = {
    		{ "Schere", {{ "schneidet", "Papier" }, { "koepft", "Echse" }} },
    		{ "Papier", {{ "bedeckt", "Stein" }, { "widerlegt", "Spock" }} },
    		{ "Stein",  {{ "zerquetscht", "Echse" }, { "zertruemmert", "Schere" }} },
    		{ "Echse",  {{ "vergiftet", "Spock" }, { "frisst", "Papier" }} },
    		{ "Spock",  {{ "zertruemmert", "Schere" }, { "verdampft", "Stein" }} }
    	};
    
    	std::array< symbol, 5 > players;
    
    	std::srand( static_cast< unsigned >( std::time( nullptr ) ) );
    
    	for( auto & i : players ) {
    		i = symbols[ std::rand() % sizeof_array( symbols ) ];
    		std::cout << i.get_name() << '\n';
    	}
    
    	std::sort( std::begin( players ), std::end( players ) );
    	std::cout.put( '\n' );
    
    	for( std::size_t i{}; i + 1 < players.size(); ++i ) {
    
    		if( players[ i ] == players[ i + 1 ] )
    			continue;
    
    		std::cout << players[ i ].get_name();
    		std::string action = players[ i ].get_action( players[ i + 1 ] );
    		if( action != "" )
    			std::cout << ' ' << action << ' ' << players[ i + 1 ].get_name();
    		std::cout.put( '\n' );
    	}
    
    	std::cout.put( '\n' );
    }
    


  • Hahaha, das war lustig wenn auch etwas brutal, Swordfish.


Log in to reply