C++ Einkaufsliste aber wie?
-
cvcv schrieb:
[quote="nimda4]
die anderen liybs hab ich drinn wegen meinem restlichen Code
Und ja ich bin am lernen, jedoch hab ich mein Buch bei meiner Freundin vergessen und kann es erst heute Abend holenGruss
nimda4
Den Code will ich sehen ....
Wie heißt denn Dein Buch? (Aus Interesse)[/quote]
Ich habe das: http://www.amazon.de/von-bis-umfassende-Handbuch-Computing/dp/3836214296/ref=sr_1_4?s=books&ie=UTF8&qid=1334843823&sr=1-4
kann ich dir den Code per PN oder so was schicken?
es ist ein bisschien viel und sehr amateur haft geschrieben *schäm*
(hab alles selbst geschrieben)Gruss
nimda4
-
Hi, ich bin Namenloser.
Jürgen Wolf ist in diesem Forum verschriehen, daher er wohl sehr schlechte Bücher herausbringt.
Kannst du mir deinen Code auch per PN schicken?
-
kingcools schrieb:
Hi, ich bin Namenloser.
Jürgen Wolf ist in diesem Forum verschriehen, daher er wohl sehr schlechte Bücher herausbringt.
Kannst du mir deinen Code auch per PN schicken?Huch das wusste ich ncith :S
Ich melde mich schnell mit einem account an.
-
So ich hab jetzt einen Account sende dir gleich den Code.
Gruss
nimda4
edit du hast eien Email von mir
-
Viel Schlimmer hätte es nicht kommen können... der Autor ist berüchtigt für seine Inkompetenz, was C++ angeht. Du solltest das Buch bei deiner Freundin lassen, vielleicht findet sie noch eine sinnvolle Verwendung dafür. Lernen solltest du daraus besser nicht. Kannst ja spaßeshalber mal hier im Forum suchen, es gibt immer mal wieder Leute, die aus diesem Buch "gelernt" haben und katastrophalen Code präsentieren, der nur vor Fehlern strotzt.
Wenn du wirklich C++ lernen willst solltest du dir ein gutes C++ Buch zulegen, hier im Forum sind einige gelistet.
-
DocShoe schrieb:
Viel Schlimmer hätte es nicht kommen können... der Autor ist berüchtigt für seine Inkompetenz, was C++ angeht. Du solltest das Buch bei deiner Freundin lassen, vielleicht findet sie noch eine sinnvolle Verwendung dafür. Lernen solltest du daraus besser nicht. Kannst ja spaßeshalber mal hier im Forum suchen, es gibt immer mal wieder Leute, die aus diesem Buch "gelernt" haben und katastrophalen Code präsentieren, der nur vor Fehlern strotzt.
Wenn du wirklich C++ lernen willst solltest du dir ein gutes C++ Buch zulegen, hier im Forum sind einige gelistet.Wow das ist ja brutal wie hier alle sagen das der so schlecht ist :S
Da kauf ich mir mal ein sinnvolles Buch und es ist nru Schrott -.-
Hab es mir gerade erst am Montag gekauft und jetzt darf ich es schon weg werfen :(^^Ich werde mir nun ein neues Bestelle wie wäre es mit:
"Visual C++ 2010 Entwicklerbuch: Grundlagen, Techniken, Profi-Know-how"?
Gruss und Danke für die Information xD
nimda4
-
[quote="nimda4"][quote="Namenloser324"]
nimda4 schrieb:
2. liste.add(Waffe(zeile[0],zeile[1],zeile[2])); Verstehe ich so: fügt Schwert, 18, 300 zur liste hinzu als Objekt Waffe. Ist das richtig?
3. for(unsigned int i = 0 ; i<liste.Liste.size();i++); Bildet die Liste oder?
Ich hab das Programm gestartet, es geht auf verschwindet dann wieder (trotz system("pause");) und es erscheint ein Pop Up mit dem Text:
"Debug Assertion Failed!Programm..\rpg\rpg\Debug\rpg.exe
Filec:\program files(x86)\microsoft visual studio
10.0\vc\include\vector
Line932Expresion vector subscription out of range
For information on how your programm can cause an assertion failure, see the Visual C++ documentation on asserts.
(Press Retry to debug the application)"
Wie da steht hat das ja demnach etwas mit dem vector zutun?
Vielen Vielen Dank für deine Hilfe bis jetzt du bist mein Held
Gruss
nimda4
-
Also erstmal: lass dich nicht von meiner Namensgebung irritieren, bin sehr schlecht im Finden von passenden Namen für Variablen.
Was die machen steht eigentlich direkt dabei:
Liste ist eine Instanz bzw. ein Objekt vom Typ vector<Waffe>, also im Endeffekt nichts weiter als ein Speicher für Objekte des Typs Waffe.
Speichert also quasi "Waffen"
In vector<string> Zeile hab ich einfach die einzelnen Teile einer Zeile aus der Textdatei gespeichert, also wenn da steht schwert 10 300, dann ist Zeile[0] == "schwert", Zeile[1] == "10".... -
japp, ruft den Konstruktor von Waffe auf.
-
Nee, das gibt sie in der Konsol aus
hast du denn eine Textdatei am richtigen ort mit dem Namen? Irgendwas scheint da zu groß zu werden bei dir
-
-
nimda4 schrieb:
Ich werde mir nun ein neues Bestelle wie wäre es mit:
"Visual C++ 2010 Entwicklerbuch: Grundlagen, Techniken, Profi-Know-how"?
Lass die Finger davon und schau in die FAQ. Obiges Buch lehrt nicht C++ sondern C++/CLI was wiederum eine eigenständige Sprache ist, deren Bedeutung eher gering ist.
Ich habe noch neue Bücher bei mir rumfliegen, nur habe ich diese schon einem anderen angeboten dem ich zumindest bis zum Wochenende Zeit lassen will. Ggf. kannst du mich ja mal kontaktieren.
-
[quote="kingcools"][quote="nimda4"]
Namenloser324 schrieb:
nimda4 schrieb:
2. liste.add(Waffe(zeile[0],zeile[1],zeile[2])); Verstehe ich so: fügt Schwert, 18, 300 zur liste hinzu als Objekt Waffe. Ist das richtig?
3. for(unsigned int i = 0 ; i<liste.Liste.size();i++); Bildet die Liste oder?
Ich hab das Programm gestartet, es geht auf verschwindet dann wieder (trotz system("pause");) und es erscheint ein Pop Up mit dem Text:
"Debug Assertion Failed!Programm..\rpg\rpg\Debug\rpg.exe
Filec:\program files(x86)\microsoft visual studio
10.0\vc\include\vector
Line932Expresion vector subscription out of range
For information on how your programm can cause an assertion failure, see the Visual C++ documentation on asserts.
(Press Retry to debug the application)"
Wie da steht hat das ja demnach etwas mit dem vector zutun?
Vielen Vielen Dank für deine Hilfe bis jetzt du bist mein Held
Gruss
nimda4
-
Also erstmal: lass dich nicht von meiner Namensgebung irritieren, bin sehr schlecht im Finden von passenden Namen für Variablen.
Was die machen steht eigentlich direkt dabei:
Liste ist eine Instanz bzw. ein Objekt vom Typ vector<Waffe>, also im Endeffekt nichts weiter als ein Speicher für Objekte des Typs Waffe.
Speichert also quasi "Waffen"
In vector<string> Zeile hab ich einfach die einzelnen Teile einer Zeile aus der Textdatei gespeichert, also wenn da steht schwert 10 300, dann ist Zeile[0] == "schwert", Zeile[1] == "10".... -
japp, ruft den Konstruktor von Waffe auf.
-
Nee, das gibt sie in der Konsol aus
hast du denn eine Textdatei am richtigen ort mit dem Namen? Irgendwas scheint da zu groß zu werden bei dir
Danke für die Antowrten das ist ja hammer
Ja das file ist am richtigen Ort im Debuger zeigt es mir an das es die Datei eingelesen hat und ich sehe auch Schwert 18 300 und dann macht es den durch udn geht zum nexten.
Geht das Programm so bei dir und welchen Compailer verwendest du?
Gruss
nimda4
-
-
Google bitte nach Bücherempfehlungen, hier gabs im Forum schon einige Threads über das Thema ( google es trotzdem, die Forensuche ... naja sagen wir mal google kanns besser
).
Mit dem Buch von J.W hast du halt ein ungünstiges erwischt, allerdings ist das auch den Rezensionen zu entehmen. Es gibt viele 5-Sterne, aber einige 1-Sterne deren Kritik sich alle auf fachliches Wissen stützen, ganz im Gegensatz zu den 5-Sterne Kommentatoren, die sich von flüßiger Sprache beeinflussen liesen.
-
asc schrieb:
nimda4 schrieb:
Ich werde mir nun ein neues Bestelle wie wäre es mit:
"Visual C++ 2010 Entwicklerbuch: Grundlagen, Techniken, Profi-Know-how"?
Lass die Finger davon und schau in die FAQ. Obiges Buch lehrt nicht C++ sondern C++/CLI was wiederum eine eigenständige Sprache ist, deren Bedeutung eher gering ist.
Ich habe noch neue Bücher bei mir rumfliegen, nur habe ich diese schon einem anderen angeboten dem ich zumindest bis zum Wochenende Zeit lassen will. Ggf. kannst du mich ja mal kontaktieren.
Danke für das Angebot schaue mich mal um und komme dann auf dich zurück.
Gruss
nimda4
-
cvcv schrieb:
Google bitte nach Bücherempfehlungen, hier gabs im Forum schon einige Threads über das Thema ( google es trotzdem, die Forensuche ... naja sagen wir mal google kanns besser
).
Mit dem Buch von J.W hast du halt ein ungünstiges erwischt, allerdings ist das auch den Rezensionen zu entehmen. Es gibt viele 5-Sterne, aber einige 1-Sterne deren Kritik sich alle auf fachliches Wissen stützen, ganz im Gegensatz zu den 5-Sterne Kommentatoren, die sich von flüßiger Sprache beeinflussen liesen.Sah das buch eben direkt im Laden und der Verkäufer meinte es sei sehr gut (dem sag ich meine Meinung xD) daher habe ich im Internet natürlich nicht nachgelesen (grosser Fehler wie es jetzt scheint ^^).
Danke und Gruss
nimda4
-
kingcools schrieb:
Hi, ich bin Namenloser.
Jürgen Wolf ist in diesem Forum verschriehen, daher er wohl sehr schlechte Bücher herausbringt.
Kannst du mir deinen Code auch per PN schicken?Wenn du irgendwas zu meinem Code hast den ich dir per Email geschickt habe, kannst du es entweder hier tun oder auch per Email.
Wenn du es per Email machst könntest du mir dann hier im Forum in diesem Topic schnell Bescheid geben, (Meien Email erhält seit einigen Tag sehr viel Spam muss mal nachschauen wiso -.-) damit ich sie suchen kann?Gruss und nochmals Danke
nimda4
-
Ich benutze code blocks da funktioniert es ohne probleme.
-
So nach dem ich mich nun mit kingcools unterhalten habe, habe ich nun neu angefangen.
kingcools hat mir einige wichtige Verbesserungen vorgeschlagen welche ich nun am umsetzen bin.
Ich habe bis jetzt 2 Klassen erstell und so sieht das aus:classes.h
#pragma once #include "stdafx.h" using namespace std; class Monster { private: std::string name; int leben; int Angriff; int Vert; int Schaden; public: Monster() // Standardkonstruktor : name(""), // Initialiserungsliste leben(0), Angriff(0), Vert(0), Schaden(0) { //Konstruktorrumpf } Monster( // Konstruktor mit Parametern std::string const & name, int leben, int Angriff, int Vert, int Schaden) : name(name), // Zuweisung Parameter zur Membervariablen leben(leben), Angriff(Angriff), Vert(Vert), Schaden(Schaden) { } void test() //Testfunktion { std::cout <<name <<"\n" <<leben <<"\n" <<Angriff <<"\n" <<Vert <<"\n" <<Schaden <<"\n"; } ~Monster() // Destruktor { } }; class dice { private: int zahl; int Ergebniss; public: dice() : zahl(0) { } dice( int zahl) :zahl(zahl) { } void roll() { int zahln=zahl-1; Sleep(730); //Sleep für Verzögerung srand((unsigned)time(NULL)); //Zufallsfunktion anhand aktueler Zeit Ergebniss=(rand()%zahln)+1; //Zufallsfunktion Einschränkung auf 1-20 cout <<"\nSie haben " <<Ergebniss <<" gewuerfelt\n"; //Ausgabe Zufalszahl Sleep(100); //Sleep für Verzögerung } };
g.cpp
// objektorientiertes_rpg.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <vector> #include <iostream> #include "classes.h" using namespace std; int _tmain(int argc, _TCHAR* argv[]) { Monster Oger("Oger", 100,10,12,30); //Leben, Angriff, Vert, Schaden Monster Pferd("Pferd", 200,20,22,20); Oger.test(); //Testfunktion Pferd.test();//Testfunktion dice W20(20);//Testfunktion W20.roll();//Testfunktion system("pause"); }
Ist das bis jetzt richtig?
Ich möchte nun eine Kampf-funktion schreiben, muss ich dafür eine neue Klasse machen oder eine Methode der Klasse Monster hinzufügen?
Und wie kann ich dann z.b den Würfel bzw eine Objekt der Klasse Monster und ein Objekt der Klasse dice verwenden.
sprich.
[b]Oger[/b](obj der kalsse monster) [i]würfelt W20[/i](obj der Klasse dice); if([i]würfel W20[/i]<=Anriff [b]Oger[/b]) { [b]Mensch[/b](2tes Obj der klasse Monster) [i]würfelt W20[/i]; if([i]würfel W20[/i]>=[b]Verteidigung [/b]des obj Mensch) { [b]leben Mensch [/b]- [b]schaden Oger[/b] } } . . .
Ist das irgendwie überhaupt möglich?
Hab schon gestern den ganzen Tag herum getestet.Gruss&Danke
Nimda4
-
Hi, also ich glaube die Diceklasse kannst du auch einfach als Memberfunktion implementieren, vielleicht auch als static member funktion, dann kannst du sie auch unabhängig von einem Objekt benutzen.
Ist ne Designfrage ob du jetzt unbedingt in einer Monsterklasse eine Dicefunktion brauchst/haben möchtest, aber irgendwie empfinde ich es als Overkill für ein einfaches Würfeln eine Klasse zu erstellen.
Nimm vielleicht sowas:class Monster
{
[...]
static int roll(int WuerfelAugen = 20)
{
blablabla
}};
Ok, eigentlich unsinnig, daher besser:
Erstell ne Klasse Spiel oder ähnliches die eben diese rollmethode dann besitzt.
Bei deiner Kampffrage bin ich mir unsicher wie du das meinst:
Könntest z.B. eine Kampfmethode erstellen in der Klasse Monster:
class Monster
{
[..]
bool Kampf(Monster Gegner)
{
Dice W20(20);
while(min(this->Leben,Gegner.Leben)>0)
{
[...]//dein Kampfskript
}
}
}
-
So nun meine Antwort auf beide Themen:
Ich werde die Kampffunktion in der Klasse Monster machen.
Die funktioniert ja (wie du auch im Code den ich dir per Mail gegeben habe) folgender massen:
kampfmethode.
Objekt Oger Klasse Monster. Objekt Mensch Klasse Monster. Objekt W20 Klasse dices. Oger wirft W20 if(W20 <=Angriff Oger) { Mensch muss sich verteidigen, wirft W20; if(W20>=Verteidigung Mensch) //kann schalg nicht parieren { der schlag trifft den menschen, Leben Mensch - Schaden Oger; } pariert schlag des ogers; Mensch greifft an , W20; if(W20<=Angriff Mensch) { Oger muss sich verteidigen, wirft W20; if(W20>=Verteidigung Oger) //kann schalg nicht parieren { der schlag trifft den Oger, Leben Oger - Schaden Mensch; } pariert schlag des Menschen; }
Im Main möchte ich wenn eien Kampf stat findet das so machen:
Ich (Mensch muss kämpfen) mein gegner ist X (Oger,troll oder was auch immer, wird mit Monster X; erstellt)
Es soll nun die Methode Kampf ausführen und automatisch die Werte des vorher erstellten Gegners übernehmen.
Ich weiss wie ich den Kampf machen will jedoch weiss ich nciht wie es dei Werte übernehmen kann :S
Ich hoffe man versteht was ich meine?
Oder rede ich nach zu vielem Herumprobieren nur noch wirres Zeug? xDGruss und Danke an alle
Nimda4
-
Die Werte werden doch automatisch kopiert, wenn du den Gegner via call by value an die Kampfmethode übergibst.
-
Namenloser324 schrieb:
Die Werte werden doch automatisch kopiert, wenn du den Gegner via call by value an die Kampfmethode übergibst.
Hmmm ich verstehe nicht wie genau das gehen soll :S
Ist das so gemeint?:
void kampffunktion(Mensch,Monster1)
-
Äh, jetzt vermischt du aufruf und definition der Funktion.
Also:
Wenn du deine Funktion wie folgt definierst:void kampf(Mensch Spieler,Monster Gegner)
Dann sagst du damit dem Compiler das beim Aufruf der Funktion die Parameter als Kopie übergeben werden,d.h. es werden in der Funktion nur Kopien mit exakt dem gleichen Inhalt verwendet(streng genommen heißt das, dass der Kopierkonstruktor der Klasse aufgerufen wird).