Logischer Aufbau meines Programmes?
-
Guten Abend zusammen. Mein Freund und ich haben vor einigen Tagen beschlossen, C++ zu lernen. Daraus lässt sich schließen, dass wir noch nicht allzuviele Sachen draufhaben ^^. Trotz allem haben wir uns dazu entschieden als Langzeitprojekt eine Art Fußballmanager zu programmieren, der relativ schlicht gehalten ist. D.h. nur Texteingabe und Ausgabe ohne grafischen Elemente. Der Manager basiert aber nicht auf Fußball sondern World of Warcraft(nicht notwendig das Spiel zu kennen um den folgenden Text zu verstehen).
Jedenfalls sind wir jetzt an dem Punkt angelangt, bei dem wir die Spielerliste entwerfen wollen. D.h. der Spieler(der das Spiel spielt) bekommt eine Auflistung der zur verfügung stehenden Charaktere, die man sich in sein Team/Mannschaft holen kann.
Sein Team stellt man natürlich aus den Leuten zusammen die am besten sind. Also muss man den Spielern Attribute zuweisen z.b. Genauigkeit, Ausdauer, Erfahrung ...
Da habe ich mir überlegt, die Attribute als Sruktur anzulegen.
struct attribut { int Genauigkeit=Zufallszahl int Ausdauer=Zufallszahl ...Damit will ich erreichen, dass man den Spielern, die je aus einer eigenen Funktion bestehen zufällige Attribute zuweisen kann.
Im Prinzip möchte ich einfach nur erreichen, dass man ne Liste von Spielern aufm Bildschirm geworfen bekommt, die beim Starten des Spieles zufällige Werte zugewiesen bekommen. Dann sucht man sich Spieler aus die man sich in sein Team holt. Als Idee hatte ich halt, dass die Spieler IDs bekommen, sodass immer gefragt wird, welchen Spieler man haben möchte. Bsp.: Der Spieler Peter hat die ID "51" und das Programm fragt: "Welchen Spieler möchtest du im Team? ID: ". Dann gibt man die "51" ein und Peter wird mit seinen attributen in einer Liste gespeichert, die man immer wieder abrufen kann, und einzelne Spieler per Index anwählen kann.
Das Problem für mich ist jetzt: Mir schwirren mehrere Lösungen im Kopf rumm, aber keine findet einen Roten Faden. Ich dachte mir, dass man die Spieler in nem vektor speichern kann, aber da ist das problem: ein Spieler besteht ja nicht nur aus einer Zahl sondern aus Namen und seinen Attributen, die alle zusammen gehören. Z.b. wenn ich ne Kugel rote Knete in nen Eimer mit bunter Knete lege, dass diese Kugel nicht überall verteilt wird, sondern dass ich die hinterher so rausholenkann wie ich sie reingelegt habe.
Ich weiß dass das sehr verworren klingt, aber vielleicht kann mir da jemand helfen. Ich will jetzt kein fertig geschrieben Code, aber evtl. ne Hilfe, sodass ich den Roten Faden finde, der durch mein Programm geht.
Sprich - "Benutze Anweisungen wie vektoren um deine Daten zu Speichern und versuche das miteinzubeziehen".Ich hoffe ihr könnt mir helfen

mfg Obstsalat
-
Ich weiß nicht ob ich das richtig verstanden habe, aber was mir jetzt so spontan dazu einfällt, wäre eine Klasse Spieler mit (mehrdimensionalen) vektoren darin.
und wenn man eine ID eingibt, das in einem Vektor ID nach der ID gesucht wird, also mit einer Schleife. Da lässt man nebenbei eine Zahl durchrattern, bis der richtige Index für den Vektor gefunden ist | die ID gefunden wurde.
dieser erhaltene Index kann man nun für die anderern Vektoren auch nehmen, um die Eigenschaften auszulesen. Bedingung ist, dass alle Vektoren gleichmäßig gefüllt wurden.
-
DELETED
-
OK, ich habe jetzt eine Idee gehabt:
Die Spieler sind keine Funktion, sondern die Struktur.
Also:
struct Spieler { string name; int ID; int Genauigkeit= Zufallszahl int Ausdauer= Zufallszahl ... } int main() { Spieler Eins; Eins.name="Peter"; Eins.ID="51" cout<< Eins.name << endl; cout<< Eins.Genauigkeit << endl; cout<< Eins.Ausdauer << endl; ...Smoit bekommt man z.b. 10 Spieler erstellt mir zufallswerten die man in einem vektor Speichern kann, ohne die Daten der verschiedenen Spieler durcheinander zubringen und man kann die einzelnen Spieler aus dem Vektor wieder rausholen.
vector<string> team(10); cout << team[0] << endl; /* würde auf dem Bildschirm "Eins" anzeigen, wenn peter als erstes zum team hinzugefügt wurde */ ...Ist das so korrekt oder hab ich da denkfehler drinn?
-
Vielen Dank für die rasche Antwort Tim06TR

Du hast mir aufjedenfall weiter geholfen. Jetzt weiß ich zumindest, dass ich mir das mit den Klassen beibringen muss. Ich hab mir vor kurzem nen Buch gekauft über c++ und das soll ja opjektorientiert sein. Beim überfliegen stand, dass Klassen das opjektorientierte Programmieren entscheiden. Bin dann mal Buch weiterlesen^^. Aber nochmals danke, das hat mir aufjedenfall SEHR geholfen!
-
Zuerst einmal gibt es keinen unterschied zwischen 'struct' und 'class', außer, dass der Gültigkeitsbereich von struct standardmäßig public und der der Klasse standardmäßig private ist. Das, was du machen willst, ließe sich so lösen:
#include <cstdio> //für rand(). Erzeugt eine Zufallszahl #include <ctime> //für time(0) #include <vector> const int Grenze = 100; //maximaler Wert class Spieler { public: int ID; int Genauigkeit; int Ausdauer; Spieler() : ID(0), Genauigkeit(0), Ausdauer(0){} //standardkonstruktor mit Initialisierungsliste Spieler(int x) : ID(x), Genauigkeit(rand()%Grenze), Ausdauer(rand()%Grenze) {} //anderer Konstruktor mit Initialisierungsliste }; int main() { srand(time(0)); //initialisiert rand() std::vector<Spieler> MeineSpieler; for(int i=0;i!=20;++i) MeineSpieler.push_back(Spieler(i)); //erstellt 20 Spieler, deren IDs von 0 bis 19 gehen und deren andere Elemente zufallswerte zwischen 0 und 'Grenze'-1 besitzen }
-
Guten Tag zusamm, ich bins nochmal
.
Erstmal bedanke ich mich für die Hilfe. Das hat mich echt ein großes Stück weitergebracht. Ich habe nun den Code fertig, so wie ich ihn verstehe. Kann sein, dass da nen par überflüssige Sachen drinn sind oder es auch einfacher gehen würde, aber das ist nun meine Lösung zum Problem:Meine Headerdatei - Unit.h
#include <iostream> #include <vector> #include <string> using namespace std; class Unit { private: vector<string> name; vector<int> id; vector<int> Itemlevel; vector<int> Erfahrung; public: void SetzeSWerte() { for(int i=0; i != 5; i=i+1) { string sname; cout<<"Gib Spieler "<<i+1<<" einen Namen: "; cin>>sname; name.push_back(sname); id.push_back(i); Itemlevel.push_back(232); Erfahrung.push_back(2); } } void UAusgabe(int i) { for(int x=0; x!=i; x=x+1) { cout<<"----------------------"<<endl; cout<<"Name: "<<name[x]<<endl; cout<<"ID: "<<id[x]+1<<endl; cout<<"Itemlevel: "<<Itemlevel[x]<<endl; cout<<"Erfahrungsstufe: "<<Erfahrung[x]<<endl; } } };Und schließlich meine main Datei, die den Nutzer fragt, welche Namen die Spieler 1 - 5 haben sollen und anschließend die Spieler "Vorstellt" mit Name, ID und seinen Attributen/Werten.
main.cpp
#include "Unit.h" #include <iostream> using namespace std; int main() { Unit sstart; sstart.SetzeSWerte(); int i=5; sstart.UAusgabe(i); }mfg Obstsalat