• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Was ist hier falsch?

Status
Für weitere Antworten geschlossen.

Gimli

Mitglied
Ich habe einen Cpp Code, in dem eigentlich alles funktioniert, bis auf eine Sache. Erstmal die Codes:

Code:
// Zahlenraten.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//

#include "header.hpp"

using namespace std;

int main()
{
    char choice;
    int points;
    points = 0;
    int highscore = 0;

    srand(timeGetTime());

    // Menue
    do {
        cout << "Menue:\n" << endl;
        cout << "(H)ighscore" << endl;
        cout << "(P)lay" << endl;
        cout << "(I)nformation" << endl;
        cout << "(C)redits" << endl;
        cout << "(E)xit\n" << endl;
        cin >> choice;

        // Was wurde gewählt?
        switch(choice)
        {
            case('h'):
            case('H'): {
                highscore(&points, &highscore);
            } break;
            case('p'):
            case('P'): {
                play(&points);
            } break;
            case('i'):
            case('I'): {
                cout << "Informationen\n" << endl;
            } break;
            case('c'):
            case('C'): {
                cout << "Credits\n" << endl;
            } break;
            case('e'):
            case('E'): {
                cout << "Spiel Beenden\n" << endl;
            } break;
            default:
            {
                cout << "Falsche Angabe\n" << endl;
            }
        }
    }
    while (choice != 'e' && choice != 'E'); // End Game?
    cout << "Spiel wird beendet..." << endl;
    return 0;
}

void play(int *gpoints)
{
    int round = 0;
    int lvl;
        
    cout << "Welches Level willst du spielen?" << endl;
    cin >> lvl;
    int bereich = lvl*10;
    do {
        int points = 0;
        int zufallsz;
        int guessnum = 0;
        int trys = 0;
    
        zufallsz = (rand()%bereich)+1; // Zufallszahl generieren
    
        cout << "\n Die gesuchte Zahl liegt zwischen 1 und ";
        cout << bereich << endl;
    
            while(guessnum != zufallsz)
            {
                cout << "Deine Vermutung: ";
            cin >> guessnum;
    
            trys++;
    
            if(guessnum < zufallsz)
                cout << "Die gesuchte Zahl ist groesser" << endl;
            if(guessnum > zufallsz)
                cout << "Die gesuchte Zahl ist kleiner" << endl;
        }
    
        // Die Zahl wurde erraten
        cout << guessnum << " ist die gesuchte Zahl!" << endl;
        cout << "Versuche: " << trys << endl;
        cout << "Level: " << lvl << endl;
    
        // Punkte berechnen
    
        points = lvl*10-trys*2+1;
        *gpoints += points;
        cout << "Runden-Punktestand: " << points << endl;
        cout << "Gesamtpunkestand: " << *gpoints << endl;
        cout << "\n\n\n\n" << endl;
        round++;
    }
    while(round  <= lvl);
}

void highscore(int *points, int *highscore)
{
    if(*highscore < *points)
    {
        cout << "Highscore geknackt." << endl;
        cout << "Vorheriger Highscore: " << *highscore << endl;
        *highscore = *points;
        cout << "Jetztiger Highscore : " << *highscore << endl;
    }
    else
    {
        cout << "Highscore nicht geknackt." << endl;
        cout << "Es fehlen noch " << *highscore - *points << " Punkte" << endl;
    }
}
und dann noch header.hpp

Code:
// Header Datei

#include <iostream>
#include <windows.h>

#pragma comment (lib, "winmm.lib")

void play(int *gpoints);
void highscore(int *points, int *highscore);
Die Fehlermeldung:

Code:
1>c:\dokumente und einstellungen\mark\desktop\c++\spiele\zahlenraten\zahlenraten\zahlenraten.cpp(32) : error C2064: Ausdruck ergibt keine Funktion, die 2 Argumente übernimmt
Aber ich verstehe nicht warum es keine Funktion giebt, obwohl ich sie doch definiert habe
 
Zuletzt bearbeitet:
Werbung:
Hi,
in der Zeile
Code:
cout << "Es fehlen noch " << highscore-points << " Punkte" << endl;
benutzt du Zeiger! Du subtrahierst allerdings die Adressen, nicht die Werte.

Ist aber nicht die Antwort auf deine Frage, hab keinen Compiler grad
 
Werbung:
Hast du meinen Beitrag nicht gelesen?

Außerdem addierst du die Speicheraddressen miteinander das kann dann nicht zu einem vernünftigen Ergebnis führen. Dazu kommt noch dass du die Variablen points,highscore nicht gepointet hast, und diese dann referenziert, das kann auch nicht gehen.
 
Werbung:
ja hast du die Fehlermeldung nicht gelesen? Da steht
Code:
1>c:\dokumente und einstellungen\mark\desktop\c++\spiele\zahlenraten\zahlenraten\zahlenraten.cpp(32) : error C2064: Ausdruck ergibt keine Funktion, die 2 Argumente übernimmt
Da steht, dass es keine Funktion gibt. Aber ich habe sie doch definiert...

Und das trifft immernoch zu, wenn ich alle parameter entferne, und der Funktion alle Befehle Wegnehme und nurnoch schreibe

Code:
void highscore()
{
    cout << "Test" << endl;
}
 
Anscheined kannst du immernoch nicht lesen, les dir mal durch was ich geschrieben habe.

Und wofür benutzt du eigentlich Pointer?
Google nach "error C2064"

Der Fehler liegt an der Variable highscore, diese hast du auch als funktion fällt dir da was auf???

Mehr sag ich erstmal dazu nicht...
 
danke, hab das problem behoben... Es lag ja, wie du sagtest, daran, dass es eine Variable highscores und eine Funktion highscores gab. Vielen dank nochmal

*Mir an kopf hau*
 
Werbung:
Status
Für weitere Antworten geschlossen.
Zurück
Oben