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

Aldi

Frischling

  • »Aldi« ist der Autor dieses Themas
  • Private Nachricht senden

1

31.03.2011, 15:28

Listing 4.11 Fehler

Hallo alle zusammen!
Wenn ich Listing 4.11 kompelieren will erscheint folgender Fehler:

1>------ Erstellen gestartet: Projekt: Listing4.11, Konfiguration: Debug Win32 ------
1>Listing4.11.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""int __cdecl TesteHighscore(int,int)" (?TesteHighscore@@YAHHH@Z)" in Funktion "_wmain".
1>D:\Program Files (x86)\C++\MeineProjekte\Listing4.11\Debug\Listing4.11.exe : fatal error LNK1120: 1 nicht aufgelöste externe Verweise.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

Was kann ich machen?
Vielen Dank im Vorhinein

2

31.03.2011, 15:39

Wie sieht denn bei dir das Listing aus?
Dieses Testehighscore schaut für mich danach aus, dass du noch andere Dinge im Projekt stehen hast.
Denn mit Highscore hat das Listing bei mir nichts zu tun :D

3

31.03.2011, 15:58

Poste mal das Listing was du geschrieben hast hier rein, dann können wir ja mal drüber kucken.

Aldi

Frischling

  • »Aldi« ist der Autor dieses Themas
  • Private Nachricht senden

4

31.03.2011, 16:08

Bei Visual C++ 2010 Express:


// C++ für Spieleprogrammierer
//Listing 4.11
//Zahlenraten
//
#include "stdafx.h"
#include <iostream>
#include <Windows.h>


using namespace std;


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


//Funktionsprototypen
//
int Spielen (int Level);
int WaehleLevel ( int Level );
int TesteHighscore ( int Punkte, int Highscore);
void ZeigeInfos ();


//Hauptprogramm
//
int _tmain(int argc, _TCHAR* argv[]
){
//Variablen
//
char Auswahl; //Gewählter Menüpunkt
int Level = 5; //Aktueller Level
int Highscore = 100; //Aktueller Highscore


//Zufallsgenerator initialisieren
srand (timeGetTime ());


//Verabeitung des Menüs
do
{
//Menü ausgeben
//
cout << "Zahlenraten - Menue" << endl;
cout << "-------------------" << endl;
cout << "(N)eues Spiel starten" << endl;
cout << "(L)evel waehlen" << endl;
cout << "(H)ighscore anzeigen" << endl;
cout << "(I)nfo" << endl;
cout << "(B)eenden\n\n";


//Eingabe abfragen
cout << "Auswahl: ";
cin >> Auswahl;


//Je nach Eingabe verzweigen
switch (Auswahl)
{
//Neues Spiel starten?
case ('n'):
case ('N'):
{
//Spielen
int Punkte;
Punkte = Spielen (Level);

Highscore = TesteHighscore (Punkte, Highscore);

} break;

//Level wählen?
case ('l'):
case ('L'):
{
Level = WaehleLevel (Level);

} break;

//Highscore anzeigen?
case ('h'):
case ('H'):
{
cout << "Der aktuelle Highscore liegt bei ";
cout << Highscore << " Punkten\n\n";

} break;

//Informationen anzeigen?
case ('i'):
case ('I'):
{
ZeigeInfos();

} break;

//Spiel beenden?
case ('b'):
case ('B'):
{
cout << "Spiel beendet." << endl;

} break;

//Falsche Eingabe?
default:
{
cout << "Falsche Eingabe!\n\n";

}
}
} while (Auswahl != 'b' && Auswahl != 'B'); // Spiel beenden

cout << "Bis zum Nächsten Mal" << endl;

return 0;
} //main


//ZeigeInfos
//
//Aufgabe: Informationen zum Spiel anzeigen
//
void ZeigeInfos ()
{
cout << "Zahlenraten V1.0" << endl;
cout << "Beispiel aus \"C++ für Spieleprogrammierer\"";
cout << "\n\n";
} //ZeigeInfos


//WaehleLevel
//
//Aufgabe: Neuen Level auswählen
//
int WaehleLevel (int Level)
{
int NeuerLevel;


do
{
//Neuen Level auswählen
cout << "Aktueller Level: " << Level << endl;
cout << "Neuer Level (1-10): ";
cin >> NeuerLevel;


//Ungültigen Level gewählt?
if (NeuerLevel < 1 || NeuerLevel > 10)
{
//Fehlermeldung ausgeben
cout << "Ungültiger Level-Wert" << endl;
}


} while (NeuerLevel < 1 || NeuerLevel > 10);


//Gewählten Level zurückgeben
return NeuerLevel;
} //WaehleLevel


//Spielen
//
//Aufgabe: Das eigentliche Spiel spielen
//
int Spielen (int Level)
{
int Zufallszahl; //Zufallszahl, die erraten werden muss
int GerateneZahl = 0; //Zahl, die geraten wurde
int Bereich = Level*10; //Bereich derZufallszahl
int Versuche = 0; //Anzahl der Versuche
int Punkte = 0; //Punktzahl


//Zufallszahl ermitteln
Zufallszahl = (rand()%Bereich)+1;


//Bereich ausgeben, in dem geraten wird
cout << "\nDie gesuchte Zahl liegt zwischen 1 und ";
cout << Bereich << endl;


//So lange raten, bis die Zahl gewunden wurde
while (GerateneZahl != Zufallszahl)
{
cout << "Dein Tipp: ";
cin >> GerateneZahl;


Versuche++;


//Zahl hat nicht gestimmt, also Hinweis ausgeben
if (GerateneZahl < Zufallszahl)
cout << "Die gesuchte Zahl ist grosser" << endl;
if (GerateneZahl > Zufallszahl)
cout << "Die gesuchte Zahl ist kleiner" << endl;
}


//Die Zahl wurde erraten
cout << "\nGeschafft ! " << endl;
cout << "Du hast die Zahl nach " << Versuche;
cout << " Versuchen erraten !\n\n";


//Punkte berechnen
//Desto weniger Versuche und desto höher das Level
//je mehr Punkte werden vergeben
//
Punkte = Bereich - Versuche + 1;
Punkte *= Level;


//Wenn mehr Versuche benötigt wurden, als es Zahlen gibt
//kann das Ergebnis negativ sein
//
if (Punkte < 0)
Punkte = 0;


//Punkte ausgeben
cout << "Punkte: " << Punkte << endl;


//Punkte zurückgeben
return Punkte;
} //Spielen


//TesteHighscore
//
//Aufgabe: Prüfen, ob der Highscore geknackt wurde
//
int Highscore ( int Punkte, int Highscore)
{
//Prüfen, ob der Highscore geknackt wurde
if (Punkte > Highscore)
{
cout << "Glueckwunsch. Neuer Highscore !\n\n";
Highscore = Punkte;
}
else
{
cout << "Leider kein neuer Highscore\n\n";
}


//Highscore zurückgeben
return Highscore;
} //TesteHighscore

5

31.03.2011, 16:17

So du hast unten bei TesteHighscore nur Highscore geschrieben du musst dort Teste vor schreiben.
Also:

//TesteHighscore
//
//Aufgabe: Prüfen, ob der Highscore geknackt wurde
//
int TesteHighscore ( int Punkte, int Highscore)
{

Aldi

Frischling

  • »Aldi« ist der Autor dieses Themas
  • Private Nachricht senden

6

31.03.2011, 16:30

Danke
Alles funktioniert
:D

Werbeanzeige