Mein kleines Rechenspiel



  • Hey Freunde, ich habe ein kleines Rechenspiel programmiert, in dem ihr Stufen und Ränge aufsteigen, Gold erlangen, euer Haus ausbauen und Fertigkeiten steigern könnt.

    Kurz zu den Gebäuden: Mit den Gebäuden verbessert ihr euren Ruf-, Erfhahrungs- und Goldgewinn.

    Zu den Attributen: Hier könnt ihr die Zusatzbelohnungen veregrössern, dafür saorgen, daß ihr mehr Aufgaben auf einmal lösen könnt und neue Aufgabentypen freischalten, sofern ihr dafür die Vorraussetzungen erfüllt.

    Es lohnt sich, soviele Aufgaben wie möglich auf einmal zu lösen, da dadurch die Zusatzbelohnung exponentiell ansteigt. Diese kriegt ihr aber nur, wenn ihr alle Aufgaben eine rRunde richtig gelößt habt.

    Sagt mir mal, was ihr davon haltet, war mein erstes Projekt 🙂

    #include <iostream> 
    #include <stdlib.h> 
    #include <time.h> 
    
    // int Zahl1 = rand() % 10 + 1;
    
    using namespace std;
    
    int main()
    {
    	srand (time(NULL));
    
    	// Grundwerte
    	int Stufe = 1;
    
    	int Erfahrung = 0;
    	int Erfahrung_b = 500;
    
    	string Rang_Name = "Grundschueler\0";
    	int Rangstufe = 1;
    	int Rangpunkte = 0;
    	int Rangkosten[] = {100, 250, 500, 1000, 2500, 5000, 10000, 25000, 50000, 100000};
    	int R_A = 1000;
    
    	int Gold = 2500;
    
    	// Zuhause
    	int Goldschmiede = 0;
    	int Buecherregal = 0;
    	int Sekretariat = 0;
    
    	int Goldschmiede_P = 500;
    	int Buecherregal_P = 500;
    	int Sekretariat_P = 500;
    
    	// Attribute 
    	int Konzentration = 1;
    	int Rechenkunst = 1;
    	int Feilscherei = 1;
    
    	int Konzentration_P = 500;
    	int Rechenkunst_P = 500;
    	int Feilscherei_P = 500;
    
    	// Sonstiges
    	int Hauptauswahl = 0;
    	int Auswahl_2 = 0;
    	int Auswahl_3 = 0;
    	int Auswahl_4 = 0;
    
    	while (true)
    	{	
    	if (Rangstufe == 2)  {Rang_Name = "Hauptschueler";}
    	if (Rangstufe == 3)  {Rang_Name = "Realschueler";}
    	if (Rangstufe == 4)  {Rang_Name = "Gymnasiast";}
    	if (Rangstufe == 5)  {Rang_Name = "Des Lehrers Liebling";}
    	if (Rangstufe == 6)  {Rang_Name = "Mathe-Student";}
    	if (Rangstufe == 7)  {Rang_Name = "Mathelehrer";}
    	if (Rangstufe == 8)  {Rang_Name = "Doktor der Mathematik";}
    	if (Rangstufe == 9)  {Rang_Name = "Mathe-Professor";}
    	if (Rangstufe == 10) {Rang_Name = "Forscher";}
    
    	    if (Rangpunkte >= Rangkosten[Rangstufe - 1])
    	    {
    	    	cout << "RANG AUFGESTIEGEN! (+ " << R_A << " Gold)" << endl << endl;
    	    	Rangstufe++;
    	    	Gold += R_A;
    	    	R_A += 1000;
    		}
    
    		cout << "[1] Erfolge" << endl;
    		cout << "[2] Rechnen" << endl;
    		cout << "[3] Lehrmeister" << endl;
    		cout << "[4] Trautes Heim" << endl;
    		cout << "Eingabe: "; cin >> Hauptauswahl; cout << endl;
    
    		if (Hauptauswahl == 1)
    		{
    			cout << "____________________________________________" << endl << endl;
    			cout << "---Charackter---" << endl << endl;
    			cout << "Stufe:     " << Stufe << endl;
    			cout << "Erfahrung: " << Erfahrung << "/" << Erfahrung_b << endl << endl;
    
    			cout << "Rang      - " << Rang_Name << endl;
    			cout << "Rangpunkte: " << Rangpunkte << "/" << Rangkosten[Rangstufe - 1] << endl << endl;
    
    			cout << "Gold: " << Gold << endl << endl;
    
    			cout << "---Attribute----" << endl << endl;
    			cout << "Konzentration: " << Konzentration << endl;
    			cout << "Rechenkunst:   " << Rechenkunst << endl;
    			cout << "Feilscherei:   " << Feilscherei << endl << endl;
    
    			cout << "---Zuhause------" << endl << endl;
    			cout << "Goldschmiede: " << Goldschmiede << endl;
    			cout << "Buecherregal: "<< Buecherregal << endl;
    			cout << "Sekretariat:  " << Sekretariat << endl;
    			cout << "____________________________________________" << endl << endl;
    		}
    
    		if (Hauptauswahl == 2)
    		{
    			cout << "Anzahl Aufgaben: "; cin >> Auswahl_2; cout << endl;
    
    			int derzeit_bearbeitet = 1;
    			int richtig = 0;
    
    			int Belohnung = 0;
    
    			int Gold_Zusatz = 0;
    			int Erfahrung_Zusatz = 0;
    			int Rangpunkte_Zusatz = 0;
    
    			int Zahl1 = 0;
    			int Zahl2 = 0;
    			int Zahl3 = 0;
    			int Ergebnis = 0;
    			string Zeichen1 = "LOL";
    			string Zeichen2 = "LOLOL";
    
    			while (Auswahl_2 >= 20 && Auswahl_2 <= Konzentration * 20 && derzeit_bearbeitet <= Auswahl_2)
    			{
    				int Aufgabenart = rand() % Rechenkunst + 1;
    				int Loesungsvorschlag = 0;
    
    				if (Aufgabenart == 1) {Zahl1 = rand() % 15 + 1; Zahl2 = rand() % 15 + 1; Zeichen1 = " + "; Ergebnis = Zahl1 + Zahl2;}
    				if (Aufgabenart == 2) {Zahl1 = rand() % 15 + 1; Zahl2 = rand() % 15 + 1; Zeichen1 = " - "; Ergebnis = Zahl1 - Zahl2;}
    				if (Aufgabenart == 3) {Zahl1 = rand() % 11 + 1; Zahl2 = rand() % 11 + 1; Zeichen1 = " * "; Ergebnis = Zahl1 * Zahl2;}
    				if (Aufgabenart == 4) {Zahl1 = rand() % 90 + 1; Zahl2 = rand() % 11 + 1; Zeichen1 = " / "; Ergebnis = Zahl1 / Zahl2;}
    
    				if (Aufgabenart == 5)  
    				{Zahl1 = rand() % 15 + 1; Zahl2 = rand() % 15 + 1; Zahl3 = rand() % 15 + 1; Ergebnis = Zahl1 + Zahl2 + Zahl3; Zeichen1 = " + "; Zeichen2 = " + ";}
    
    				if (Aufgabenart == 6) 
    				{Zahl1 = rand() % 30 + 1; Zahl2 = rand() % 15 + 1; Zahl3 = rand() % 15 + 1; Ergebnis = Zahl1 - Zahl2 - Zahl3; Zeichen1 = " - "; Zeichen2 = " - ";}
    
    				if (Aufgabenart == 7) 
    				{Zahl1 = rand() % 15 + 1; Zahl2 = rand() % 15 + 1; Zahl3 = rand() % 15 + 1; Ergebnis = Zahl1 + Zahl2 - Zahl3; Zeichen1 = " + "; Zeichen2 = " - ";}
    
    				if (Aufgabenart == 8) 
    				{Zahl1 = rand() % 13 + 1; Zahl2 = rand() % 13 + 1; Zahl3 = rand() % 15 + 1; Ergebnis = Zahl1 * Zahl2 + Zahl3; Zeichen1 = " * "; Zeichen2 = " + ";}
    
    				if (Aufgabenart == 9) 
    				{Zahl1 = rand() % 14 + 1; Zahl2 = rand() % 14 + 1; Zahl3 = rand() % 20 + 1; Ergebnis = Zahl1 * Zahl2 - Zahl3; Zeichen1 = " * "; Zeichen2 = " - ";}
    
    				if (Aufgabenart == 10) 
    				{Zahl1 = rand() % 9 + 1; Zahl2 = rand() % 9 + 1; Zahl3 = rand() % 9 + 1; Ergebnis = Zahl1 * Zahl2 * Zahl3; Zeichen1 = " * "; Zeichen2 = " * ";}
    
    				if (Aufgabenart < 5)
    				{
                        cout << Zahl1 << Zeichen1 << Zahl2 << " = ";
    				    cin >> Loesungsvorschlag; cout << endl;
    				}
    
    				if (Aufgabenart > 4)
    				{
                        cout << Zahl1 << Zeichen1 << Zahl2 << Zeichen2 << Zahl3 << " = ";
    				    cin >> Loesungsvorschlag; cout << endl;
    				}
    
    				if (Loesungsvorschlag == Ergebnis)
    				{
    					Gold += (Goldschmiede * 3 + Stufe) * Aufgabenart;
    					Erfahrung += (Buecherregal * 3 + Stufe) * Aufgabenart;
    					Rangpunkte += (Sekretariat * 3 + Stufe) * Aufgabenart;
    
    					Gold_Zusatz += (Goldschmiede * 3 + Stufe) * Aufgabenart;
    					Erfahrung_Zusatz += (Buecherregal * 3 + Stufe) * Aufgabenart;
    					Rangpunkte_Zusatz += (Sekretariat * 3 + Stufe) * Aufgabenart;
    
    					cout << "Gold + " << (Goldschmiede * 3 + Stufe) * Aufgabenart;
    					cout << ", EP + " << (Buecherregal * 3 + Stufe) * Aufgabenart;
    					cout <<", Ruf + " << (Sekretariat * 3 + Stufe) * Aufgabenart;
    					cout << " (" << derzeit_bearbeitet << "/" << Auswahl_2 << ")" << endl << endl;
    
    				    richtig++;
    				}
    
    				else {cout << "Falsch!" << " (" << derzeit_bearbeitet << "/" << Auswahl_2 << ")" << endl << endl;}
    
    				derzeit_bearbeitet += 1;
    
    				    while (Erfahrung >= Erfahrung_b) 
    				    {
    				    	cout << "HERZLICHEN GLUECKWUNSCH! STUFE AUFGESTIEGEN!" << endl << endl;
    				    	Stufe++;
    				    	Erfahrung -= Erfahrung_b;
    				    	Erfahrung_b += 500;
    					}
    
    				if (richtig == Auswahl_2)
    				{
    					Gold += (Gold_Zusatz / 10) * ( Auswahl_2 / (20 - Feilscherei)) * (Auswahl_2 / (20 - Feilscherei));
    					Erfahrung += (Erfahrung_Zusatz / 10) * ( Auswahl_2 / (20 - Feilscherei)) * (Auswahl_2 / (20 - Feilscherei));
    					Rangpunkte += (Rangpunkte_Zusatz / 10) * ( Auswahl_2 / (20 - Feilscherei)) * (Auswahl_2 / (20 - Feilscherei));
    
    					cout << "Alle Aufgaben richtig geloesst!" << endl;
    					cout << "Gold + " << (Gold_Zusatz / 10) * ( Auswahl_2 / (20 - Feilscherei)) * (Auswahl_2 / (20 - Feilscherei));
    					cout << ", EP + " << (Erfahrung_Zusatz / 10) * ( Auswahl_2 / (20 - Feilscherei)) * (Auswahl_2 / (20 - Feilscherei));
    					cout << ", Ruf + " << (Rangpunkte_Zusatz / 10) * ( Auswahl_2 / (20 - Feilscherei)) * (Auswahl_2 / (20 - Feilscherei)) << endl << endl;
    				}
    
    				while (Erfahrung >= Erfahrung_b) 
    				{
    					cout << "HERZLICHEN GLUECKWUNSCH! STUFE AUFGESTIEGEN!" << endl << endl;
    				    Stufe++;
    				    Erfahrung -= Erfahrung_b;
    				    Erfahrung_b += 500;
    				}	
    			}
    
    		    if (Auswahl_2 < 20 or Auswahl_2 > Konzentration * 20) {cout << "Mindestens 20 und hoechstens " << Konzentration * 20 << " Aufgaben!" << endl << endl;}
    		}
    
            while (Hauptauswahl == 3)
            { 
                cout << "Gold: " << Gold << " (4 = Zurueck)" << endl << endl;
    
                cout << "Konzentration: " << Konzentration << "/10 " << endl;
    			cout << "[1] Verbessern: erfordert " << Konzentration_P << " Gold" << " und Sekretariat Stufe "  << Konzentration + 1 << endl << endl; 
    
                cout << "Rechenkunst: " << Rechenkunst << "/10 " << endl;
    			cout << "[2] Verbessern: erfordert " << Rechenkunst_P << " Gold" << " und Buecherregal Stufe "  << Rechenkunst + 1 << endl << endl; 
    
                cout << "Feilscherei: " << Feilscherei << "/10 " << endl;
    			cout << "[3] Verbessern: erfordert " << Feilscherei_P << " Gold" << " und Goldschmiede Stufe "  << Feilscherei + 1 << endl << endl; 
    
                cout << "Eingabe: "; cin >> Auswahl_3; cout << endl;
    
                if (Auswahl_3 == 1)
                {
                	if (Gold >= Konzentration_P && Sekretariat >= Konzentration + 1 && Konzentration < 10)
                	{
                		Konzentration++;
                		Gold -= Konzentration_P;
                		Konzentration_P *= 2;
                		cout << "Konzentration erfolgreich verbessert!" << endl << endl;
    				}
    
    				else if (Konzentration >= 10)
    				{
    					cout << "Maximalstufe erreicht!" << endl << endl;
    				}
    
    				else {cout << "Bedingungen nicht erfuellt!" << endl << endl;}
    
    			}
    
                if (Auswahl_3 == 2)
                {
                	if (Gold >= Rechenkunst_P && Buecherregal >= Rechenkunst + 1 && Rechenkunst < 10)
                	{
                		Rechenkunst++;
                		Gold -= Rechenkunst_P;
                		Rechenkunst_P *= 2;
                		cout << "Rechenkunst erfolgreich verbessert!" << endl << endl;
    				}
    
    				else if (Rechenkunst >= 10)
    				{
    					cout << "Maximalstufe erreicht!" << endl << endl;
    				}
    
    				else {cout << "Bedingungen nicht erfuellt" << endl << endl;}
    			}
    
                if (Auswahl_3 == 3)
                {
                	if (Gold >= Feilscherei_P && Goldschmiede >= Feilscherei + 1 && Feilscherei < 10)
                	{
                		Feilscherei++;
                		Gold -= Feilscherei_P;
                		Feilscherei_P *= 2;
                		cout << "Rechenkunst erfolgreich verbessert!" << endl << endl;
    				}
    
    				else if (Feilscherei >= 10)
    				{
    					cout << "Maximalstufe erreicht!" << endl << endl;
    				}
    
    				else {cout << "Bedingungen nicht erfuellt" << endl << endl;}
    			}
    
                if (Auswahl_3 == 4)
                {
                	Hauptauswahl = 0;
    			}
    		}
    
            while (Hauptauswahl == 4)
            {
            	cout << "Gold: " << Gold << " (Zurueck = 4)" << endl;
            	cout << "Goldschmiede - Stufe " << Goldschmiede << " [1] Verbessern: " << Goldschmiede_P << " Gold" << endl;
            	cout << "Buecherregal - Stufe " << Buecherregal << " [2] Verbessern: " << Buecherregal_P << " Gold" << endl;
            	cout << "Sekretariat  - Stufe " << Sekretariat << " [3] Verbessern: " << Sekretariat_P << " Gold" << endl;
            	cout << "Eingabe: "; cin >> Auswahl_4; cout << endl;
    
                if (Auswahl_4 == 1)
                {
                	if (Gold >= Goldschmiede_P)
                	{
                		Goldschmiede++;
                		Gold -= Goldschmiede_P;
                		Goldschmiede_P += 500;
                		cout << "Goldschmiede verbessert!" << endl << endl;
    				}
    
    				else {cout << "Nicht genug Gold!" << endl << endl;}
    			}
    
                if (Auswahl_4 == 2)
                {
                	if (Gold >= Buecherregal_P)
                	{
                		Buecherregal++;
                		Gold -= Buecherregal_P;
                		Buecherregal_P += 500;
                		cout << "Buecherregal verbessert!" << endl << endl;
    				}
    
    				else {cout << "Nicht genug Gold!" << endl << endl;}
    			}
    
                if (Auswahl_4 == 3)
                {
                	if (Gold >= Sekretariat_P)
                	{
                		Sekretariat++;
                		Gold -= Sekretariat_P;
                		Sekretariat_P += 500;
                		cout << "Sekretariat verbessert!" << endl << endl;
    				}
    
    				else {cout << "Nicht genug Gold!" << endl << endl;}
    			}
    
    			if (Auswahl_4 == 4) {Hauptauswahl = 0;}
    		}
    
        	if (Hauptauswahl == 5)
        	{
    	    	cout << "Provisorische Speicherfunktion" << endl;
    	    	cout << "Notiere sie sich folgende Wertepaare:" << endl << endl;
    
    	    	cout << Stufe << " " << Erfahrung << " " << Erfahrung_b << endl;
    	    	cout << Rangstufe << " " << Rangpunkte << " " << R_A << endl;
    	    	cout << Gold << endl;
    	    	cout << Goldschmiede << " " << Buecherregal << " " << Sekretariat << endl;
    	    	cout << Goldschmiede_P << " " << Buecherregal_P << " " << Sekretariat_P << endl;
    	    	cout << Konzentration << " " << Rechenkunst << " " << Feilscherei << endl;
    	    	cout << Konzentration_P << " " << Rechenkunst_P << " " << Feilscherei_P << endl << endl;
    	    }
    
    	    if (Hauptauswahl == 6)
    	    {
    	    	cout << "Provisorische Ladefunktion" << endl;
    	    	cout << "Geben sie die zuvor notierten Wertepaare ein: " << endl << endl;
    
    	    	cout << "Eingabe: "; cin >> Stufe;
    	    	cout << "Eingabe: "; cin >> Erfahrung;
    	    	cout << "Eingabe: "; cin >> Erfahrung_b;
    	    	cout << "Eingabe: "; cin >> Rangstufe;
    	    	cout << "Eingabe: "; cin >> Rangpunkte;
    	    	cout << "Eingabe: "; cin >> R_A;
    	    	cout << "Eingabe: "; cin >> Gold;
    	    	cout << "Eingabe: "; cin >> Goldschmiede;
    	    	cout << "Eingabe: "; cin >> Buecherregal;
    	    	cout << "Eingabe: "; cin >> Sekretariat;
    	    	cout << "Eingabe: "; cin >> Goldschmiede_P;
    	    	cout << "Eingabe: "; cin >> Buecherregal_P;
    	    	cout << "Eingabe: "; cin >> Sekretariat_P;
    	    	cout << "Eingabe: "; cin >> Konzentration;
    	    	cout << "Eingabe: "; cin >> Rechenkunst;
    	    	cout << "Eingabe: "; cin >> Feilscherei;
    	    	cout << "Eingabe: "; cin >> Konzentration_P;
    	    	cout << "Eingabe: "; cin >> Rechenkunst_P;
    	    	cout << "Eingabe: "; cin >> Feilscherei_P; cout << endl;
    		}
    
    		if (Hauptauswahl == 18080)
    		{
    			cout << "Testmodus gestartet" << endl << endl;
    			Rechenkunst = 10;
    		}
    	}
    }
    

    Wenn man 5 oder 6 eingibt, findet man eine provisorische Lade- und Speicherfunktion
    18080 bringt einem zum Testmodus.



  • Sieht spontan nicht schlecht aus, aber

    string Rang_Name = "Grundschueler\0";
    

    muss nicht sein, da \0 wird bei der schreibweise mit den "" automatisch ergänzt.

    Ansonsten stelle ich mir das Project schwer zu erweitern vor. Wenn du weißt was eine Klasse ist, würde ich versuchen das auch anzuwenden.
    Grundsätzlich sollte eine Funktion nicht wesentlich länger als 20 Zeilen sein, sonst macht sie in der Regel zu viel und sollte aufgeteilt werden.
    DRY (Don´t repeat yourself) ist das wichtigste beim Programmieren (finde ich, gibt bestimmt auch andere meinungen dazu) und das ist bei dir bisher nicht umgesetzt.

    Und es will sich beim Laden auch niemand die Werte per Hand notieren. Zweitens könnten leute cheaten 😃



  • Hallo,

    wäre es eventuell eine Idee für dich, das ganze nun noch in eine schöne Form zu gießen? Im ersten Schritt aufteilung der Funktionen. Später bietet sich dann an, einen Objektorientierten Ansatz zu wählen.



  • Ein Anfang wäre mal die unzähligen if's rauszuschmeißen


Log in to reply