Autor Beitrag
Zoidbörg
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Di 08.07.14 20:44 
Hey, ich habe hier eine knifflige Frage, die mich schon seit Jahren interessiert und die mir selbst ein erfahrener Programmierer nicht beantworten konnte.

Also.

Ich möchte ein Kartenspiel programmieren mit rund 5000 Karten. Diese Karten besitzen verschiedene Eigenschaften (Kosten zum Ausspielen, Schlagkraft,..), als auch Fähigkeiten (angreifen, verstecken, abwehren). Jede Karte besitzt gewisse Eigenschaften und zwischen 0 und X Fähigkeiten. Jeder Spieler bildet entweder vor dem Spiel einen Kartenstapel, der zu Beginn eines Matches geladen werden muss oder es wird eine zufällige Karte während des Spiels generiert.


Frage: Wie wird diese große Datenmenge vernünftig abgespeichert und bei Bedarf abgerufen?


Die Eigenschaften können ja relativ einfach eingelesen und in Variabel abgespeichert werden. Doch was ist mit den Fähigkeiten?
Funktionen wie Angriff() steht gewissen Karten zur Verfügung und gewissen nicht. Wie kann ich das lösen?


Würde mich über nette, konstrukive Antworten sehr freuen.



Mit freundlichen Grüßen

P. S.: Hoffe, ich habe nicht in den falschen Bereich gepostet.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 08.07.14 21:29 
Hallo und :welcome:,

da gibt es sicherlich verschiedene Möglichkeiten. Ich selber benutze für Kartenspiele (die ich mit meinem WinForms-Framework für (2-Personen) Karten-/Brettspiele umsetze), meistens eine Textdatei (z.B. als CSV), welche ich zu Beginn des Spiels parse. Selbst 5000 Zeilen sollten ja kein Problem für heutige Rechner sein.

Und dann ist man recht flexibel, um nach und nach die Funktionalität für die verschiedenen Eigenschaften zu implementieren. Intern mußt du dir dann natürlich eine passende Datenstruktur für diese Karten anlegen.

Für die Fähigkeiten würde ich Auflistungen (enum) anlegen, welche du dann den einzelnen Karten (als Liste) zuordnen kannst (alternativ gingen natürlich auch boolsche Flags).
Wenn den einzelnen Fähigkeiten aber noch weitere Werte zugeordnet sind, dann würdest du dafür auch wieder unterschiedliche Strukturen benötigen.
Zoidbörg Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Di 08.07.14 21:32 
Hallo!

Habe sowas ähnliches schonmal gehört. Damit soll es aber nicht möglich sein, aus eingelesenen Daten ein Objekt zu erzeugen, dass bestimmte Funktionen besitzt.


mfg
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Di 08.07.14 21:40 
Die Funktionalität für jede Fähigkeit muß natürlich fest im Programmcode umgesetzt sein (außer man verwendet Scriptsprachen und/oder läßt C# zur Laufzeit kompilieren und ausführen (Stichwort: CodeDOM, s. z.B. Generieren und Kompilieren von dynamischem Quellcode)).
Zoidbörg Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Di 08.07.14 21:55 
Sowas hab' ich gesucht, danke.