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

11

19.07.2008, 17:45

Na toll. Noch mehr Fehler:

Quellcode

1
2
3
4
5
6
7
8
9
10
1>------ Erstellen gestartet: Projekt: Weg des Wissens, Konfiguration: Debug Win32 ------
1>Kompilieren...
1>Weg des Wissens.cpp
1>c:\users\luca\documents\visual studio 2008\projects\weg des wissens\weg des wissens\weg des wissens.cpp(11) : error C2447: '{': Funktionsheader fehlt - Parameterliste im alten Stil?
1>c:\users\luca\documents\visual studio 2008\projects\weg des wissens\weg des wissens\weg des wissens.cpp(59) : error C2082: Neudefinition des formalen Parameters "Auswahl"
1>c:\users\luca\documents\visual studio 2008\projects\weg des wissens\weg des wissens\weg des wissens.cpp(60) : error C2082: Neudefinition des formalen Parameters "Lebensenergie"
1>c:\users\luca\documents\visual studio 2008\projects\weg des wissens\weg des wissens\weg des wissens.cpp(76) : error C2065: 'Lebensnergie': nichtdeklarierter Bezeichner
1>Das Buildprotokoll wurde unter "file://c:\Users\Luca\Documents\Visual Studio 2008\Projects\Weg des Wissens\Weg des Wissens\Debug\BuildLog.htm" gespeichert.
1>Weg des Wissens - 4 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

12

19.07.2008, 17:56

So bitte sehr, jetzt lässt es sich kompilieren:

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// Weg des Wissens

// Ein Quiz

//

#include <iostream>

using namespace std;

int Spielen(int Auswahl, int Lebensenergie);

int main ()
{
    // Variablen

    //

    int Auswahl = 0;
    int Lebensenergie = 100;

    // while-Schleife

    while (Auswahl == 3)
    {
        // Das Menü

        cout << "Weg des Wissens" << endl;
        cout << "===============" << endl;
        cout << "1) Spielen" << endl;
        cout << "2) Handbuch" << endl;
        cout << "3) Beenden" << endl;
        cout << "===" << endl;
        cout << "Deine Wahl: ";
        cin >> Auswahl;
        cout << "===============" << endl;
        cout << "\n\n\n";

        if (Auswahl == 1)
        {
            Spielen (Auswahl, Lebensenergie);
        }
        else if (Auswahl == 2)
        {
            cout << "Werde zum Wissenskönig, indem du viele unterschiedliche Fragen gestellt kriegst!" << endl;
            cout << "\n\n\n";
        }
        else if (Auswahl == 3)
        {
            cout << "Bye!" << endl;
        }
        else
        {
            cout << "ERROR: Falsche Eingabe!";
        }
    }
        return 0;
}

// Spielen

int Spielen (int Auswahl, int Lebensenergie)
{
    // while-Schleife

    while (Lebensenergie != 0)
    {
        cout << "1 + 1 = ";
        cin >> Auswahl;
            if (Auswahl == 2)
            {
                cout << "Richtig\n" << endl;
            }
            else
            {
                cout << "Falsch\n" << endl;
            }
    }
    return Auswahl;
    //return Lebensenergie;

}


Ob dein Programm logisch irgendeinen Sinn macht, hab ich nicht geprüft...

Anonymous

unregistriert

13

19.07.2008, 18:03

Ich schau mal, was da geändert worden ist ;)

14

19.07.2008, 19:05

Da TrikkieMikkie den Code syntaktisch korrigiert hat, widme ich mich mal der Semantik.

1. Schau dir das nochmal an und überlege dir, was hier nicht stimmt:

C-/C++-Quelltext

1
while (Auswahl == 3)


2. Du gibst in der Funktion Auswahl (und Lebensenergie wolltest du auch) zurück. Diesen Rückgabewert benutzt du allerdings nirgendwo.

3. Die Auswahl, die in der Hauptschleife gemacht wird, ist der Funktion egal, d.h. du brauchst der Funktion diesen Wert auch nicht übergeben.

4.

C-/C++-Quelltext

1
2
3
4
5
6
7
        cout << "Weg des Wissens" << endl;
        cout << "===============" << endl;
        cout << "1) Spielen" << endl;
        cout << "2) Handbuch" << endl;
        cout << "3) Beenden" << endl;
        cout << "===" << endl;
        cout << "Deine Wahl: "; 

Hier rufst du nach jeder Zeile endl auf. Das heißt du flusht jedesmal den Ausgabespeicher. Das ist gar nicht nötig. So ist es besser:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
        cout << "Weg des Wissens" << '\n';
        cout << "===============" << '\n';
        cout << "1) Spielen" << '\n';
        cout << "2) Handbuch" << '\n';
        cout << "3) Beenden" << '\n';
        cout << "===" << '\n';
        cout << "Deine Wahl: ";
        cout.flush();

NicoWe

Treue Seele

Beiträge: 126

Wohnort: Bielefeld / NRW

  • Private Nachricht senden

15

20.07.2008, 11:23

das mit dem flushen lass mal weg, davon steht im buch nichts und die performance ist bei einem menü auch nicht das allerwichtigste(wenn du nen spiel programmierst ist das anders). Am besten versteht man einen ode in dem man ihn Zeile für Zeile durchgeht und guckt was in jeder Zeile gemacht wird.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int foo(char* foobar)
{
// irgentwas machen
bild_zeichnen();
hüpfen();
// Variablen anlegen
int x, y;
// funktion verlassen
return x;
return y;
}

Zuerst betritt er die funktion und zeichnet ein Bild.
Dann hüpft er. 
Dann legt er zwei Variablen an.
dann gibt er die Variable x zurück und verlässt die Funktion.

Er kommt nie so weit dass er die andere Variable zurückgibt. Du könntest entweder eine Struktur zurückgeben oder zwei verschiedene Funktionen machen.
Was die Semikolonfehler betrifft guck dir die Beispielcodes mal genau an und guck mal wie Heiko die Semikolons gesetzt hat.
Erfolg ist die Fähigkeit, von einem Misserfolg zum anderen zu gehen,
ohne seine Begeisterung zu verlieren.
-Winston Churchill-

Werbeanzeige