Kartenspiel c++

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
Wissenslücke
Beiträge: 37
Registriert: Mo Feb 22, 2016 6:03 pm

Kartenspiel c++

Beitrag von Wissenslücke » Mi Mär 07, 2018 11:07 pm

hey,

ich möchte ein sammelkartenspiel programmieren ( mit deck, friedhof . ..).

die entsprechende karte ist über die position im entsprechende array( deck, hand, friedhof, board . . .) verfügbar. die anzahl im array kann nun variieren, weshalb ich zb das array deck mit 100elementen deklariere, auch wenn man mit vllt 40 karten startet. die offenen slots haben das selbe obkjekt "open" einer klasse "card".
wenn ich nun eine karte ziehen möchte zähle ich vom deck[99] runter bis ich eine karte hab.

meine frage ist nun ob das so optimal ist oder ob man es nicht vllt anders machen sollte

2.frage: wie realisiert man eine mischung der karten ?

ich hoffe es kann mir jemand helfen

gruß

Wissenslücke
Beiträge: 37
Registriert: Mo Feb 22, 2016 6:03 pm

Re: Kartenspiel c++

Beitrag von Wissenslücke » Fr Mär 09, 2018 8:48 pm

ok ich hatte mit verketteten listen noch nichts gemacht aber ich denke das wird im überwiegenden teil die bessere lösung sein.
für die mischung der karten hab ich auch eine methode gefunden.

meine frage kann also gelöscht werden.

gruß

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Kartenspiel c++

Beitrag von nufan » So Mär 11, 2018 5:44 pm

Hallo Wissenslücke!

Dieses Thema ist leider etwas untergegangen.
Wissenslücke hat geschrieben:meine frage ist nun ob das so optimal ist oder ob man es nicht vllt anders machen sollte
Wie du richtig erkannt hast, ist eine verkettete Liste ein guter Ansatz für dieses Problem.
Eine detaillierte Beschreibung dazu findest du im Wiki: https://www.proggen.org/doku.php?id=struct:list:start
C++ bietet dafür auch fertige Container an: http://en.cppreference.com/w/cpp/container/list
Wissenslücke hat geschrieben:2.frage: wie realisiert man eine mischung der karten ?
Eine Möglichkeit wäre für jede Karte eine Zufallszahl zu generieren. Diese Zufallszahl hat einen Wert von mindestens 0 und ist kleiner als die Anzahl der Karten im Stapel. Nun vertauscht du jede Karte mit der Karte an der Position mit dem zufällig generierten Index. Dies ist natürlich nur eine recht einfache Idee von mir, ein auf Zufallszahlen basierender Ansatz ist jedoch empfehlenswert.

Wissenslücke
Beiträge: 37
Registriert: Mo Feb 22, 2016 6:03 pm

Re: Kartenspiel c++

Beitrag von Wissenslücke » Mo Mär 26, 2018 8:24 pm

danke für die antwort nufan. ich frage mich ob ich nicht doch lieber mit arrays arbeiten soll wegen der performance. die methode mit arrays frisst zwar speicherplatz aber bei nem 2d plattformspiel ist das eventuell zu vernachlässigen. was meint ihr ?

gruß

nufan
Wiki-Moderator
Beiträge: 2557
Registriert: Sa Jul 05, 2008 3:21 pm

Re: Kartenspiel c++

Beitrag von nufan » Mo Mär 26, 2018 10:06 pm

Nachdem du mit deinem Spiel wohl weder an die Speicher- noch an die CPU-Geschwindigkeits-Grenze eines modernen Computers stoßen wirst, liegt diese Entscheidung ganz bei dir. Wenn du Zeit hast, implementiere beides und vergleiche. Welche Version ist zur Laufzeit schneller? Welche benötigt mehr Speicher? Welche erfordert mehr/komplexeren Code? Als Übung könntest du das ganze auch generisch umsetzen und den Benutzer wählen lassen - entweder zur Laufzeit oder beim Kompilieren.

Wissenslücke
Beiträge: 37
Registriert: Mo Feb 22, 2016 6:03 pm

Re: Kartenspiel c++

Beitrag von Wissenslücke » Di Mär 27, 2018 10:56 pm

das werd ich machen vielen dank nufan ;)

Antworten