Hin und her



  • Hallo
    ich habe mir folgendes Senario vorgestellt:
    und zwar hab zwei Charaktere, typ A und typ B (<< das ist jetzt nur beispiel),
    und ich kann zwischen A und B wählen, Wähle ich A so hat er ein bestimmten HP, Zeit und so weiter. Und er spiel dann gegen typ B!
    Wähle ich typ B so spiel er gegen Typ A wo bei typ b dann die gleichen werte Hätte wie als wenn ich typ A gewählt hätte .
    {so ich denke mal das, dass senario jetzt verständlich erklährt habe}

    aso jetzt meine frage wie kann ich das programmieren mir ist da absolut nichts eingefallen auser die werte von Typ A zu kopieren, aber ich will das programm nicht unnötig in die länge ziehen
    und ich bin mir sicher das es da auch wieder eine lösung gibt die ich nur nicht kenn ^^ 😃

    ich hoffe ihr könnt mir helfen ^^
    mfg ronny



  • Gibt es einen Grund dafür dass A und B nicht beide Objekte einer Klasse sein können? Am besten du postest mal deinen Ansatz, da sieht man dann meistens gleich was schief läuft.



  • nee weil die werte per zufall generiert werden
    und es läuft ja auch nichts schief ich will nur nicht für meine characktere alles kopieren und dann ein progrann habe n was ca 250 zeilen ist aug 1000 oder so zu machen (geht ja alles an den speicher ^^)



  • 😕
    Ich verstehe dein Problem immer weniger. Was spricht gegen:

    class Character
    {
      float hp_;
    public:
      Character(float hp)
        : hp_(hp)
      {}
    };
    
    int main()
    {
      Character a(250.f), b(100.f);
    }
    


  • oh das ist doof
    ich poste jetzt mal das programm (ich hoffe mir reist keiner den kopf ab ^^)

    es ist wie gesagt noch nicht ferdig nur ne idee die ich habe (ist so ein kleines spiel)

    #include <iostream>
    
    using namespace std;
    
    void game (void);
    
    char chShip=0;
    int main ()
    {
    	//variablen
    	//
    	char Menü, chTest=0;
    	int nautikus=12;
        int enterprise=17;
    
    	do
    	{
    	//Startbildschirm
    	// 
    	cout<<"(S)piel starten\n\n(B)eenden"<<endl;
    	cin >> Menü;
    
    	//Taste S oder E drücken 
    	//
    	switch (Menü)
    	{
    
            case ('s'):
    			case ('S'):
    
    		{
    			cout << "Spiel wird gestartet\nviel Glueck!"<<endl;  
    			system("cls");  //mit tastedrück bildschrim leeren 
    			getchar();
    
    			cout<<"waehle dein schiff\n(N)autikus oder (E)nterpriese\n";
    			cin>>chShip;                  
    			// <<< für nächstes switch befehl
    			//Taste n oder e drücken 
    			//
    			switch (chShip)
    			{
    
    			case ('n'):
    				case ('N'):
    				{					
    
    				}break;
    
    		case ('e'):
    		case ('E'):
    				{
    
    				}break;
    
    			}
    			}
    
    		game();
    
    		case ('b'):
    		case ('B'):
    			{			
    			cout << "Game wird Beendet!\n";		
    			system("pause");
    			system("cls");
    			}break;
    
    default: 
    	//wenn nichts von den gedrückt wird
    	//
    			{
    				cout << "error"<<endl;
    				system("pause");
    				system("cls");
    			}break;
    
            	}
    	}while (Menü!='b' && Menü!='B');
    	// wenn nicht die richtige taste gedrückt wird
    	// 
    
    return (0);
    }
    
    void game(void) 
    {
    	system("cls");
    	if (chShip=='n'|| chShip=='N')
    		{
    			cout<<"nautikus gewaehlt  "<<endl;
    		}
    
    	 if (chShip=='e'|| chShip=='E')
    		{
    			cout<<"enterprise gewaehlt  "<<endl;
    		}
    
    }
    

    zu erklärung das programm ist noch NICHT ferdig und ich bin anfänger in c++ ich hab mir das buch gekauft c++ für spieleprogrammierer also nicht wundern wenn ich fehler gemacht habe

    ja das programm läuft bishierher,
    die idee ist jetzt
    ich wähle ein schiff nautikus oder enterprise
    Π
    den schiffen zufalls hp zu geben (bsp zwischen 300und 500) so hat bsp nautikus bsp 400 und und enterprise 433, das wird dann ausgegeben (bis hierher kann ich es programmieren also kein problem für mich ^^)
    wenn ich bsp Nautikus gewählt habe ist enterprise mein geger (oder halt anders rum ) die hp sehe ich erst dann wenn ich gewählt habe )
    dann wird auch wieder per zufall generrator die hp von beiden schiffen von den hp abgezogen bis meins oder dass des gegener auf null ist programmieren kann ich diesen teil
    Π
    also der teilzwischen Π ist hal der teil den ich von meinem wisser her programmieren kann

    und nun will ich den teil zwischen Π nicht für jedes schiff kopieren

    so ich hoffe du kennst jetzt mein problem 😃



  • ja, das ist verständlich dass du das nicht für jedes schiff schreiben willst. und genau aus diesem grund gibt es funktionen...

    aber für deinen fall wäre die objektorientierung noch besser geeignet (aber ich denke nicht dass du diese schon kannst, sprich dass diese schon im buch vorkam)

    dann würdest du dir nämlich eine klasse schiff schreiben, im konstruktor würdest du deinem objekt eine zufällige hp zahl zuweisen (ohne es mehrmals coden) und du mächtest dir eine methode die dein schiff gegen ein anderes kämpfen lässt



  • ja ich suche halt eine (oder mehrere) funktionen die das können
    und was würdest du mir da für ne funktion empfehlen (ich nutze ja nicht nur das buch sondern auch andere quellen wie youtube(aber nicht immer empfehlenswert) und das forum hier



  • youtube kannste als tutorial vergessen wie ich finde (und das werden viele andere auch finden)

    du schreibst dir eine funktion, die das macht was du willst
    wenn dein C++ soweit auch noch nicht reicht (ist ja keine schande, wird noch kommen) dann musst du halt etwas redundanten code schreiben und das alles was einfacher angehen.

    int hp_enterprise = /* Zufallswert */;
    int hp_nautikus = = /* Zufallswert */;
    
    while ( !(hp_enterprise == 0 ) || !(hp_nautikus == 0) )
    {
        int angriffsschaden = /* Zufallswert */;
    
        if ( angriffsschaden < 0 )
            hp_enterprise += angriffsschaden;
        else
            hp_nautikus -= angrissschaden;
    }
    

    das wäre ein einfacher minimalistisch kleiner ansatz...


Anmelden zum Antworten