Spartan Game
-
Ehm wenn ich ein string mache also so
string monster; monster = Gargol
So wollte ich es erst machen bekam aber dann den Fehler das Gargol nicht deklariert ist
dann viel mir das einstring monster = Gargol;
Und bekomm den gleichen Fehler
-
Xenotack schrieb:
Ehm wenn ich ein string mache also so
string monster; monster = Gargol
So wollte ich es erst machen bekam aber dann den Fehler das Gargol nicht deklariert ist
dann viel mir das einstring monster = Gargol;
Und bekomm den gleichen Fehler
Hast weil du gargol nicht deklariert hast ! (Nehm ich mal an ? )
Willst du stattdessen monster den String "Gargol" enthalten lassen, musst du das so schreiben:
std::string monster("Gargol");
P.S.:
string monster;monster=Gargol; string monster=Gargol;
ist im Endeffekt genau das gleiche.
-
Oh Danke (Stimmt ein String ist für Texte deswegen "" )
-
War das mit den klammern bei einem string nicht C ? Also string abc("ich bin abc");
Ist ja auch egal.
Zeich mal deinen code bis jetzt oder lad mal was hoch
-
Ich überarbeite gerade alles
Also noch 30Min bis 1 Std
-
Also bin etwas weiter schon nur hab 1 Problem nach dem das Monster besiegt wurde werden die Credits angezeigt
Ich zeig euch mal den Code#include <iostream> #include <conio.h> #include <string> using namespace std; int main() { //Variable int lifebar = 50; int level = 1; int damage; int playerhp = 100; string monster ("Gargol"); char gamemenue; char ingamemenue; // Menü cout << "-- Game Menue --" << endl; cout << "1. Spiel Starten" << endl; cout << "2. Credits" << endl; cout << "3. Beenden" << endl; cout << "\nEingabe: "; cin >> gamemenue; switch(gamemenue) { //Ingame Menü case('1'): cout << "" << endl; cout << "Deine HP: " << playerhp << endl; cout << "Was moechtest du tun?" << endl; cout << "1. Monster angreifen" << endl; cout << "2. Leben aufladen" << endl; cout << "\nEingabe: "; cin >> ingamemenue; switch(ingamemenue) { case('1'): do{ cout << monster << " Level: " << level << endl; cout << "" << endl; for(int i = 0; i < lifebar; i++) { cout << "|"; } cout << " " << lifebar << "HP " << endl; cout << "Do Damage: "; cin >> damage; lifebar -= damage; } while(lifebar > 0); cout << "" << endl; cout << "Das Monster ist besiegt!"; break; case('2'): break; } case ('2'): cout << "Developer: Christian Xenotack Döhmann" << endl; cout << "Idee: Christian Xenotack Döhmann" << endl; cout << "Coding, Entwicklung: Christian Xenotack Döhmann" << endl; break; case('3'): cout << "Zum Beenden Beliebige Taste Drücken" << endl; break; } getch(); }
Und noch eine Frage gebe es eine möglichkeit die Monster in einer eigenen cpp datei zu speichern und dann durch befehle in der main.cpp aufzurufen?
-
Hat keiner ne Antwort?
PS: Game umbenannt in Spartania
Downloadlink von v0.1 http://www.mediafire.com/?4jcph5ihl50i03h
#include <iostream> #include <conio.h> #include <string> using namespace std; int main() { //Variable int lifebar = 50; int level = 1; int damage; int playerhp = 100; string monster ("Gargol"); char gamemenue; char ingamemenue; // Menü cout << "-- Game Menue --" << endl; cout << "1. Spiel Starten" << endl; cout << "2. Credits" << endl; cout << "3. Beenden" << endl; cout << "\nEingabe: "; cin >> gamemenue; switch(gamemenue) { //Ingame Menü case('1'): do { cout << "" << endl; cout << "Deine HP: " << playerhp << endl; cout << "Was moechtest du tun?" << endl; cout << "1. Monster angreifen" << endl; cout << "2. Leben aufladen" << endl; cout << "3. Zum Game Menue" << endl; cout << "\nEingabe: "; cin >> ingamemenue; switch(ingamemenue) { case('1'): do{ system("cls"); cout << monster << " Level: " << level << endl; cout << "" << endl; for(int i = 0; i < lifebar; i++) { cout << "|"; } cout << " " << lifebar << "HP " << endl; cout << "Do Damage: "; cin >> damage; lifebar -= damage; } while(lifebar > 0); cout << "" << endl; cout << "Das Monster ist besiegt!"; break; case('2'): playerhp = 100; break; case ('3'): cout << "Drücke eine Beliebige Taste um das Spiel zu beenden" << endl; } } while(ingamemenue != '3'); case ('2'): cout << "" << endl; cout << "Developer: Christian Xenotack Döhmann" << endl; cout << "Idee: Christian Xenotack Döhmann" << endl; cout << "Coding, Entwicklung: Christian Xenotack Döhmann" << endl; cout << "" << endl; break; case('3'): cout << "Zum Beenden Beliebige Taste Drücken" << endl; break; } getch(); }
-
Da du dich ja so aufregst wegen den einbinden von externen voids , schreib ich dir mal was.Das ist extra eifach gehalten , nicht das beste , aber damit du es verstehst :
Deine main.cpp
#include <lalala> using namespace alalal; void sag_abc(void); int main() { sag_abc(); }
abc.cpp
#include ... using namespace ... void sag_abc(void); void sag_abc(){cout << "abc" << endl;}
-
Alles klar ? Wenn nicht schreib ich dir "was was was was was " ist
-
Armer Xenotack, wird er hier ernsthaft mit schlechtem Code bestraft...
-
Zutreffendes ankreuzen:
ist ein String.
ist ein Monster.
-
7xCore schrieb:
Du könntest nen vector füllen mit verschiednener damage , und dann random auslesen und gebrauchen.
Hä? Du würdest also lieber 20 Zahlen in einem Vector abspeichern, die als Schaden gelten, als sie einfach, wenn sie gebraucht werden, zu generieren?
void in die Parameterliste einer Funktion zu schreiben ist bei C++ auch unüblich.
Und tut mir bitte alleine einen Gefallen, rückt euren Code ordentlich ein. Ist ja grausam sich diesen Thread durch zu lesen.Swordfish schrieb:
Zutreffendes ankreuzen:
ist ein String.
ist ein Monster.Ich vermute er kennt sowas wie Klassen leider noch nicht.
@Xenotack
Um es dir gleich ab zu gewöhnen, vermeide using namespace std; und schreib std::cout und sonst, wo man es schreiben muss. Oder schreib es, statt unter die Includes, am Anfang deiner Funktion.
Und wie schonmal erwähnt wurde, warum benutzt du immer do-while Schleifen? Benutz stattdessen normale while-Schleifen. Zweck der do-while Schleifen ist es, dass sie mindestens einmal ausgeführt werden und das bedingungslos. Bei dir sollte das aber nicht notwendig sein.
Als Nebenbemerkung, system("cls") ist nur für DOS-Benutzer. Unter Linux würde dieser Befehl beispielsweiße nicht funktionieren.
Wenn du zufälligen Schaden haben möchtest, würde ich dir rand empfehlen.
Schau dir dazu mal folgende Links an:
http://www.c-plusplus.net/forum/172876
http://www.cplusplus.com/reference/clibrary/cstdlib/rand/
Somit müssste man nicht den Schaden selbst eingeben und ein Kampf würde mehr Spannung mit sich bringen, sofern das Monster irgendwann auch mal Schaden macht.
-
7xCore schrieb:
Du könntest nen vector füllen mit verschiednener damage , und dann random auslesen und gebrauchen.Hä? Du würdest also lieber 20 Zahlen in einem Vector abspeichern, die als Schaden gelten, als sie einfach, wenn sie gebraucht werden, zu generieren?
Gute idee.....
-
7xCore schrieb:
void choose_rass() { //[...] else{cout << "Diese Rasse existiert nicht"<< endl; choose_rass();} createDataBase_Player(); }
Das wird interessant, wenn man eine nicht-existente Rasse eingibt
Du hast einen bemerkenswerten Programmierstil.
-
7xCore schrieb:
void choose_rass()
Von der "kreativen" Art der Problemlösung mal abgesehen: Kauf' dir zum C++-Buch auch gleich ein Wörterbuch dazu...
-
Sieht so aus als ob ihr über lesen hättet , das es sich um ein deutlich älteres Projekt handelt , ich hab ihn auch davor gewarnt , das meine C++ Kenntnisse da auch noch nicht so gut waren.
-
7xCore schrieb:
C/C++ Code:
void choose_rass()
{
//[...]
else{cout << "Diese Rasse existiert nicht"<< endl; choose_rass();}createDataBase_Player();
}
C/C++ Code:
void choose_rass()
{
//[...]
else{cout << "Diese Rasse existiert nicht"<< endl; choose_rass();}createDataBase_Player();
}Das wird interessant, wenn man eine nicht-existente Rasse eingibt
Was wird da interessant ?
Str+C und F5 , und es geht ohne Programmier/Spiel Fehler
-
Falsche Klasse eingeben, choose_rass() ruft sich rekursiv auf, läuft dann bei richtiger Eingabe durch bis createDataBase_Player(), Rücksprung aus der Rekursion und createDataBase_Player() wird erneut aufgerufen.
Dieses Anti-Pattern für Rekursion wurde mehrfach in dem Code verwendet.
Und teilweise indirekte Rekursion über mehrere Stufen. Das ist total katastrophal. Völlig egal ob der Autor es heute besser kann, an sowas sollte sich kein Anfänger ein Beispiel nehmen.
-
*double*
-
Was wird da interessant ?
Str+C und F5 , und es geht ohne Programmier/Spiel FehlerBleib locker , μ hat recht.
Ich hab das Gefühl , es gibt zu viele Leute , die bestimmte posts zu persöhnlich nehmen...