Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

1

23.11.2008, 11:13

Probem mit "Variablen" -.-

Hallo,
Ich habe da so ein kleines Problem mit Variablen und zwar fogendes:
Ich programmiere (mal wieder) ein Zahlenraten-Spiel. Das Hauptmenü sieht ungefähr so aus:

Quellcode

1
2
3
4
5
6
7
ZAHLEN-KNACKER
~~~~~~~~~~~~~~
1) Spielstart
2) Optionen
3) Beenden
~~~~
Deine Wahl: 2


Das Problem legt bei den Optionen. Die Optionen sehen so aus:

Quellcode

1
2
3
4
5
6
7
8
9
ZAHLEN-KNACKER - OPTIONEN
~~~~~~~~~~~~~~~~~~~~
1) Spielernamen aendern
2) Spiri's Statistik
3) Credit anzeigen
4) Spieldaten loeschen
5) Zurueck
~~~~
Deine Wahl:  2


Übrigends, das Problem taucht bei 1, 2, 3 und 4 auf. Der Wert in der Variable Auswahl wird gespeichert. Das heißt,
dass, wenn ich jetzt 2 gedrückt habe, wird Auswahl der Wert 2 haben! Das merkt man sofort, denn wenn man auf
die Statisitk geht muss man für Zurück wieder 1 drücken, sonst erscheint eine Fehlermeldung. Hier als erst der Code:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
        // Statistik vom Spieler

        if (Auswahl == 2)
        {
            // while-Schleife

            while (Auswahl != 1)
            {
                cout << "(Druecke \"1 + ENTER\" fuer Zurueck)\n" << endl;

                cout << *pSpielername << "'s STATISTIK" << endl;
                cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl;
                cout << "Spielername: " << *pSpielername << endl;
                cout << "Punkte     : " << *pVorherigePunkte << endl;
                cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl;
                cin >> Auswahl;
                system ("cls");

                /*HIER ERSCHEINT DER FEHLER*/

                if (!cin.good ())
                {
                    cin.clear ();
                    cin.ignore ();
                }

                // Wenn 1 gedrückt wurde

                if (Auswahl == 1)
                {
                }

                // Ansonsten

                else
                {
                    if (!cin.good ())
                    {
                        cin.clear ();
                        cin.ignore ();
                    }

                    cout << "ERROR: Druecke \"1 + ENTER\" fuer Zurueck!" << endl;

                    for (int t=3; t>0; t--)
                    {
                        Zeit (1000);
                    }

                    system ("cls");
                } // else - Ansonsten

            } // while-Schleife

        } // Statistik vom Spieler


Weiß jemand wie man das umändern kann? Auswahl wieder auf 0 setzen hilft nicht, habe ich schon versucht.

Falls jemand interessiert ist, den ganzen bisherigen Code zu sehen hier:
Klicke Bitte auf diesen Link um zum Code zu gelangen. Thx

So,
Ich hoffe, dass ich mich dieses mal klar ausgedrückt habe.

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

2

23.11.2008, 12:02

Sorry, aber bin ich nen bisl betrunken ?
Ich kann irgendwie kein Problem erkennen...

Was is dein Problem... und wie stellst du dir das optimale Ergebnis vor ?

Anonymous

unregistriert

3

23.11.2008, 13:11

Zitat von »"Databyte"«

Sorry, aber bin ich nen bisl betrunken ?
Ich kann irgendwie kein Problem erkennen...

Was is dein Problem... und wie stellst du dir das optimale Ergebnis vor ?


IUch telle mir vor, dass wenn ich bei der Statistik 1 eindrücke (was ich auch muss), dass ich wieder zurück zu dem Optionen-Menü gelangee.

Stattdessen kommt das raus:
Klick hier

DasBlub

Alter Hase

Beiträge: 802

Wohnort: Schweiz

Beruf: Programmierer

  • Private Nachricht senden

4

23.11.2008, 13:20

gib doch mal die variable "auswahl" bei der fehlermeldung aus und sieh nach, was drinsteht...

und btw, das ist nicht schön:

C-/C++-Quelltext

1
2
3
4
5
6
7
                // Wenn 1 gedrückt wurde

                if (Auswahl == 1)
                {
                }

                // Ansonsten

                else 

schreib es doch einfach so:

C-/C++-Quelltext

1
if(Auswahl != 1)

Anonymous

unregistriert

5

23.11.2008, 14:44

Zitat von »"DasBlub"«

gib doch mal die variable "auswahl" bei der fehlermeldung aus und sieh nach, was drinsteht...

Ich verstehe nicht?

Zitat von »"DasBlub"«

und btw, das ist nicht schön:

C-/C++-Quelltext

1
2
3
4
5
6
7
                // Wenn 1 gedrückt wurde

                if (Auswahl == 1)
                {
                }

                // Ansonsten

                else 

schreib es doch einfach so:

C-/C++-Quelltext

1
if(Auswahl != 1)


Okay, habe ich gemacht, doch das Hilft nichts.
Soll ich auch das else weglassen?

DasBlub

Alter Hase

Beiträge: 802

Wohnort: Schweiz

Beruf: Programmierer

  • Private Nachricht senden

6

23.11.2008, 15:08

schreib die zeile hier:

C-/C++-Quelltext

1
cout << "ERROR: Druecke \"1 + ENTER\" fuer Zurueck!" << endl; 


mal so um:

C-/C++-Quelltext

1
cout << "ERROR: Druecke \"1 + ENTER\" fuer Zurueck!" << " DEBUG: " << Auswahl << endl; 


dann siehst du, was in der variable Auswahl wirklich drinsteht

Mordrak

1x Contest-Sieger

Beiträge: 121

Wohnort: München

Beruf: Junior IT Consultant

  • Private Nachricht senden

7

23.11.2008, 21:10

Ahoi,

mach Dir doch mal die Muehe, im Debugger durch Dein Programm durchzugehen. Dann wirst Du feststellen, wo genau der Fehler ausgespuckt wird und warum.

Alternativ kannst Du Dir auch mal in der Optionen()-Funktion den Code nach "// Neu Anfangen" ansehen und Dir ueberlegen, welchen Wert "Auswahl" an dieser Stelle hat, wenn Du '1' eingegeben hast, um weiter zu machen...

Gruesse,
Mordrak
What's yellow and equivalent to the axiom of choice? The Lemmon of Zorn!

Werbeanzeige