-1
我正在編寫一個應該結合我之前編寫的幾個不同程序的程序(之後所有工作)。 我的問題: 案例'r'執行後,Programm崩潰。 我PROGRAMM(很抱歉的文字在德國beeing,但我想這並不重要太多如果它只是告訴我,我將其更改爲英語。):在交換機中執行第二個case後程序崩潰
的main.cpp
#include <iostream>
#include <conio.h>
#include <string>
#include <stdio.h>
#include <cstdlib>
#include <ctime>
#include <sstream>
#include <fstream>
#include "GameMaster.h"
using namespace std;
int main(int argc, char** argv) {
string vBefehlH = "help"; //vergleichsBefehlX
string vBefehlR = "rdm";
string vBefehlI = "items";
string eBefehl; //eingegebener Befehl
char Befehl;
cout << "------Willkommen GameMaster------" << endl <<endl;
cout << "Geben sie *help* ein, um eine Liste der verf\201gbaren Befehle auszugeben." << endl;
while(1)
{
cin >> Befehl; //wartet auf die eingabe eines Befehls
if(eBefehl == vBefehlH)
{
Befehl = 'h';
}
if(eBefehl == vBefehlR)
{
Befehl = 'r';
}
switch(Befehl)
{
case 'h': //gibt die Hilfe aus
{
cout << "help -Gibt eine Liste aller verf\201gbaren Befehle im aktuellen Bereich aus." << endl;
cout << "rdm -Erstellt einen neuen Charakter." << endl;
cout << "items -Geht in den Item Bereich." << endl;
break;
}
case 'r':
{
string Name;
string Geschlecht;
string Rasse;
string Beruf;
string Hautfarbe;
string Haarfarbe;
string Augenfarbe;
cout << "Name: ";
cin >> Name; //cin muss aus irgendeinem Grund doppelt sein. Sonst wird es übersprungen.
cin >> Name;
cout << "Geschlecht: ";
cin >> Geschlecht;
cout << "Rasse: ";
cin >> Rasse;
cout << "Beruf: ";
cin >> Beruf;
cout << "Hautfarbe: ";
cin >> Hautfarbe;
cout << "Haarfarbe: ";
cin >> Haarfarbe;
cout << "Augenfarbe: ";
cin >> Augenfarbe;
Charakter Charakter1(Name, Geschlecht, Rasse, Beruf, Hautfarbe, Haarfarbe, Augenfarbe);
Charakter1.Werte();
Charakter1.grWerte();
Charakter1.spWerte();
Charakter1.SchreibCharakter();
cout << endl << "Der Charakter wurde erfolgreich erstellt und befindet sich in *rdmCharakter.txt*" << endl;
system ("pause");
break;
}
}
}
return 0;
}
現在我不認爲我的項目中的其他女巫文件有問題,但我只是把它們放在這裏以防萬一。
GameMaster.h
#ifndef GameMasterH
#define GameMasterH
using namespace std;
class Charakter
{
private:
//Die Grundinformationen, welche manuell eingegeben
werden
string Name;
string Geschlecht;
string Rasse;
string Beruf;
string Hautfarbe;
string Haarfarbe;
string Augenfarbe;
//Die Werte, welche durch RNG bestimmt werden
int Wert[9];
int spWert[58]; //Spezialwerte
int grWert[3]; //Alter/Größe/Gewicht
public:
//Konstruktor
Charakter(string, string, string, string, string, string, string);
//Destruktor
~Charakter();
//mothoden
void Werte(); //bestimmt die Grundwerte
void SchreibCharakter(); //Schreibt den Charakter
void spWerte(); //bestimmt die Spezialwerte
void grWerte(); //bestimmt Alter/Größe/Gewicht
};
Charakter.cpp
#include <iostream>
#include <conio.h>
#include <string>
#include <stdio.h>
#include <cstdlib>
#include <ctime>
#include "GameMaster.h"
using namespace std;
//Konstruktor: Weist Die Grundinfos zu.
Charakter::Charakter(string N, string G, string R, string B, string HAU, string HAA, string A)
{
Name = N;
Geschlecht = G;
Rasse = R;
Beruf = B;
Hautfarbe = HAU;
Haarfarbe = HAA;
Augenfarbe = A;
}
//Destruktor
Charakter::~Charakter()
{
}
void Charakter::Werte() //Weist die Grundwerte zu
{
srand(time(0));
for(int i = 1; i < 9; i++)
{
Wert[i] = 8+(rand()%7);
}
}
void Charakter::grWerte() //Weist Alter, Größe und Gewicht zu
{
srand(time(0));
grWert[1] = 18+(rand()%43);
grWert[2] = 160+(rand()%41);
grWert[3] = 70+(rand()%41);
}
void Charakter::spWerte() //Weist Die spezifischen Werte zu
{
srand(time(0));
for(int i = 1; i < 58; i++)
{
spWert[i] = (rand()%6);
}
}
void Charakter::SchreibCharakter() //Schreibt die Textdatei
{
FILE* CharakterFile;
CharakterFile = fopen("rdmCharakter.txt", "w");
if(CharakterFile != NULL)
{
fprintf(CharakterFile, "Name: %s \n", Name.c_str());
fprintf(CharakterFile, "Geschlecht: %s \n", Geschlecht.c_str());
fprintf(CharakterFile, "Rasse: %s \n", Rasse.c_str());
fprintf(CharakterFile, "Beruf: %s \n", Beruf.c_str());
fprintf(CharakterFile, "Alter: %d \n", grWert[1]);
fprintf(CharakterFile, "Hautfarbe: %s \n", Hautfarbe.c_str());
fprintf(CharakterFile, "Haarfarbe: %s \n", Haarfarbe.c_str());
fprintf(CharakterFile, "Augenfarbe: %s \n", Augenfarbe.c_str());
fprintf(CharakterFile, "Größe: %d \n", grWert[2]);
fprintf(CharakterFile, "Gewicht: %d \n", grWert[3]);
fprintf(CharakterFile, "Persönlichkeit: \n\n\n\n");
fprintf(CharakterFile, " Eigenschaften \n \n");
fprintf(CharakterFile, "MU: %d \n", Wert[1]);
fprintf(CharakterFile, "KL: %d \n", Wert[2]);
fprintf(CharakterFile, "IN: %d \n", Wert[3]);
fprintf(CharakterFile, "CH: %d \n", Wert[4]);
fprintf(CharakterFile, "FF: %d \n", Wert[5]);
fprintf(CharakterFile, "GE: %d \n", Wert[6]);
fprintf(CharakterFile, "KO: %d \n", Wert[7]);
fprintf(CharakterFile, "KK: %d \n\n\n", Wert[8]);
fprintf(CharakterFile, "VORTEILE: NACHTEILE:\n\n\n\n\n\n\n\n\n\n");
fprintf(CharakterFile, " HANDWERKSTALENTE\n\n");
fprintf(CharakterFile, "ALCHEMIE (KL/KL/IN): %d \n", spWert[1]);
fprintf(CharakterFile, "HANDEL (KL/IN/CH): %d \n", spWert[2]);
fprintf(CharakterFile, "HEILKUNDE-GIFT (MU/KL/IN): %d \n", spWert[3]);
fprintf(CharakterFile, "HEILKUNDE-KRANK (MU/KL/IN): %d \n", spWert[4]);
fprintf(CharakterFile, "HEILKUNDE-SEELE (KL/IN/CH): %d \n", spWert[5]);
fprintf(CharakterFile, "HEILKUNDE-WUNDEN (KL/FF/FF): %d \n", spWert[6]);
fprintf(CharakterFile, "HOLZBEARBEITUNG (KL/KK/FF): %d \n", spWert[7]);
fprintf(CharakterFile, "LEDERBEARBEITUNG (KL/FF/FF): %d \n", spWert[8]);
fprintf(CharakterFile, "METALLBEARBEITUNG (KL/FF/KK): %d \n", spWert[9]);
fprintf(CharakterFile, "STEINBEARBEITUNG (FF/FF/KK): %d \n", spWert[10]);
fprintf(CharakterFile, "STOFFBEARBEITUNG (KL/FF/FF): %d \n", spWert[11]);
fprintf(CharakterFile, "KOCHEN&BACKEN (KL/IN/FF): %d \n", spWert[12]);
fprintf(CharakterFile, "SCHLÖSSERKNACKEN (IN/FF/FF): %d \n", spWert[13]);
fprintf(CharakterFile, "MALEN&ZEICHNEN (KL/IN/FF): %d \n\n", spWert[14]);
fprintf(CharakterFile, " WISSENSTALENTE\n\n");
fprintf(CharakterFile, "BRETT&GLÜCKSSPIEL (KL/KL/IN): %d \n", spWert[15]);
fprintf(CharakterFile, "GEOGRAPHIE (KL/IN/IN): %d \n", spWert[16]);
fprintf(CharakterFile, "GESCHICHTSWISSEN (KL/KL/IN): %d \n", spWert[17]);
fprintf(CharakterFile, "RELIGION (KL/KL/CH): %d \n", spWert[18]);
fprintf(CharakterFile, "MECHANIK (KL/KL/FF): %d \n", spWert[19]);
fprintf(CharakterFile, "RECHNEN (KL/KL/KL): %d \n", spWert[20]);
fprintf(CharakterFile, "SAGEN&LEGENDEN (KL/KL/IN): %d \n", spWert[21]);
fprintf(CharakterFile, "RECHTSKUNDE (KL/IN/IN): %d \n", spWert[22]);
fprintf(CharakterFile, "STRATEGIE (KL/IN/IN): %d \n", spWert[23]);
fprintf(CharakterFile, "MEDIZIN (KL/KL/IN): %d \n", spWert[24]);
fprintf(CharakterFile, "SEEFAHRT (KL/IN/MU): %d \n\n", spWert[25]);
fprintf(CharakterFile, " NATURTALENTE\n\n");
fprintf(CharakterFile, "FÄHRTENSUCHE (KL/IN/IN): %d \n", spWert[26]);
fprintf(CharakterFile, "FESSELN (KL/FF/KK): %d \n", spWert[27]);
fprintf(CharakterFile, "FISCHEN&ANGELN (IN/FF/KO): %d \n", spWert[28]);
fprintf(CharakterFile, "ORIENTIRUNG (KL/IN/IN): %d \n", spWert[29]);
fprintf(CharakterFile, "PFLANZENKUNDE (KL/IN/FF): %d \n", spWert[30]);
fprintf(CharakterFile, "TIERKUNDE (MU/KL/IN): %d \n", spWert[31]);
fprintf(CharakterFile, "WILDNISLEBEN (IN/GE/KO): %d \n", spWert[32]);
fprintf(CharakterFile, "JAGEN (IN/KL/GE): %d \n", spWert[33]);
fprintf(CharakterFile, "STERNKUNDE (KL/KL/IN): %d \n\n", spWert[34]);
fprintf(CharakterFile, " KÖRPERTALENTE\n\n");
fprintf(CharakterFile, "KLETTERN (MU/GE/KK): %d \n", spWert[35]);
fprintf(CharakterFile, "BALANCIEREN (GE/GE/KO): %d \n", spWert[36]);
fprintf(CharakterFile, "REITEN (IN/GE/KO): %d \n", spWert[37]);
fprintf(CharakterFile, "SCHWIMMEN (GE/KO/KK): %d \n", spWert[38]);
fprintf(CharakterFile, "SELBSTBEHERRSCHUNG (MU/IN/KO): %d \n", spWert[39]);
fprintf(CharakterFile, "SINGEN (IN/CH/KL): %d \n", spWert[40]);
fprintf(CharakterFile, "SINNESSCHÄRFE (KL/IN/IN): %d \n", spWert[41]);
fprintf(CharakterFile, "TANZEN (CH/GE/GE): %d \n", spWert[42]);
fprintf(CharakterFile, "TASCHENDIEBSTAHL (MU/IN/FF): %d \n", spWert[43]);
fprintf(CharakterFile, "VERBERGEN (MU/IN/GE): %d \n", spWert[44]);
fprintf(CharakterFile, "ZECHEN (IN/KO/KK): %d \n", spWert[45]);
fprintf(CharakterFile, "SCHLEICHEN (GE/GE/KO): %d \n", spWert[46]);
fprintf(CharakterFile, "MUSIKINSTRUMENTE (KL/IN/KO): %d \n", spWert[47]);
fprintf(CharakterFile, "REFLEXE (GE/GE/FF): %d \n\n", spWert[48]);
fprintf(CharakterFile, " GESELLSCHAFTSTALENTE\n\n");
fprintf(CharakterFile, "PREDIGEN (MU/KL/IN): %d \n", spWert[49]);
fprintf(CharakterFile, "ÜBERZEUGEN (MU/IN/CH): %d \n", spWert[50]);
fprintf(CharakterFile, "BETÖREN (MU/CH/CH): %d \n", spWert[51]);
fprintf(CharakterFile, "EINSCHÜCHTERN (MU/KK/KK): %d \n", spWert[52]);
fprintf(CharakterFile, "ETIKETTE (KL/IN/CH): %d \n", spWert[53]);
fprintf(CharakterFile, "GASSENWISSEN (KL/IN/IN): %d \n", spWert[54]);
fprintf(CharakterFile, "MENSCHENKENNTNIS (KL/IN/CH): %d \n", spWert[55]);
fprintf(CharakterFile, "ÜBERREDEN (MU/KL/CH): %d \n", spWert[56]);
fprintf(CharakterFile, "VERKLEIDEN (IN/CH/GE): %d \n", spWert[57]);
fprintf(CharakterFile, "WILLENSKRAFT (MU/MU/IN): %d \n\n", spWert[58]);
fprintf(CharakterFile, " KAMPFTECHNIKEN\n\n");
fprintf(CharakterFile, "ARMBRÜSTE FF: \n");
fprintf(CharakterFile, "BÖGEN FF: \n");
fprintf(CharakterFile, "MESSER GE: \n");
fprintf(CharakterFile, "HIEBWAFFEN KK: \n");
fprintf(CharakterFile, "KETTENWAFFEN KK: \n");
fprintf(CharakterFile, "RAUFEN GE: \n");
fprintf(CharakterFile, "SCHILDE KK: \n");
fprintf(CharakterFile, "SCHWERTER KK: \n");
fprintf(CharakterFile, "WURFWAFFEN FF: \n");
fprintf(CharakterFile, "SCHUSSWAFFEN L FF: \n");
fprintf(CharakterFile, "SCHUSSWAFFEN M GE: \n");
fprintf(CharakterFile, "SCHUSSWAFFEN S KK: \n\n");
fprintf(CharakterFile, "NAHKAMPFWAFFEN:\n\n\n\n\n\n");
fprintf(CharakterFile, "FERNKAMPFWAFFEN:\n\n\n\n\n\n");
fprintf(CharakterFile, "INVENTAR:\n\n\n\n\n\n");
fclose(CharakterFile);
}
else
{
cout << "Error: Die Datei kann nicht geoeffnet werden."; //Gibt eine Fehlermeldung aus, falls die Text datei nicht geöffnet werden kann
}
}
這裏有** LOT **額外的代碼。刪除它,並提供[_Minimal_,Complete和Verifiable示例](https://stackoverflow.com/help/mcve)(Emphasis Mine)。 –
請不要賦予變量大寫字母的名字。類和結構,可以給大寫字母名稱。帶有大寫字母名稱的變量很難區分類名稱。 – Xirema
不要''_just把它放在那裏。刪除不必要的代碼 –