2017-05-08 3 views
2

Ich bin ein Kartenspiel Programmierung (von Uno/Mau Mau-Typ), und ich habe dieses Problem Design:Spieler und Deck Methoden in einem Kartenspiel

Das Deck zwei Stapel von Karten enthält, einer von ihnen zeigt Gesichter , der andere zeigt Rücken. Wenn ein Spiel läuft und ein Spieler eine Karte wirft, sollte er auf den Stapel "Gesichter" gehen. Wenn das Spiel jedoch beendet ist, sollten die Karten des letzten Spielers wieder auf den Stapel "Backs" gehen.

1) Sollte das Deck hat zwei Methoden für das Hinzufügen von Karten (addToFacesStack und addToBacksStack)

oder

2) Sollte das Deck hat ein addCards Verfahren und entscheiden selbst, welche die Karten stapeln soll auf gehen (die Deck müsste den Stand des Spiels wissen - in Arbeit/fertig)?

Wenn das Spiel gerade läuft und ein Spieler (der die Regeln kennt und Karten entsprechend auswählt) die Karte (n) auf den Stapel "Gesichter" wirft, sollte das Deck "erneut prüfen", ob der Spieler spielt Bewegung ist gültig?

Vielen Dank im Voraus für Ihre Vorschläge!

Caroline

Antwort

1

Ich denke, Sie sollten die Frage stellen: sollte das Modell kennen die Spiellogik oder den Zustand des Spiels?

Wenn JA, dann müssen Sie die Spiellogik in Ihrem Modell schließen, damit Sie nur die addCards Verfahren haben können, und die Deck wird entscheiden, wo die Karte (n) hinzuzufügen. Aber in diesem Fall sind das Spielmodell und die Spiellogik eng miteinander verbunden. Wenn Sie das gleiche Modell für eine andere Variante des Spiels (mit einer anderen Logik) verwenden würden, wäre diese Option nicht geeignet.

Wenn NO, dann können Sie die Boundary - Control - Entity Entwurfsmuster folgen. Hier müssen Sie separate Methoden zum Hinzufügen von Karten zum ersten oder zweiten Stapel verwenden. Und kodiere die Spiellogik in deine Controllerobjekte, die die Spielregeln kennen würden. Mit diesem Muster können Sie das gleiche Modell wiederverwenden und nur verschiedene Controller verwenden, die auf dem gespielten Spiel basieren.

Zu Ihrer Frage:

Auch wenn das Spiel im Gange ist und ein Spieler (der die Regeln und wählt Karten weiß entsprechend zu spielen) wirft Karte (n) auf die „Gesichter“ Stapel sollte das Deck "erneut prüfen" ob der Zug des Spielers gültig ist?

In diesem Fall können Sie einen Controller haben, der prüft, ob der Zug gültig ist oder nicht. Keine Notwendigkeit, die Logik innerhalb des Modells zu codieren.

+0

Vielen Dank für Ihre wertvollen Kommentare! – Caroline

+0

Gern geschehen! @Caroline – ahoxha

+0

Ich habe die "NEIN" -Option Ihrer Antwort gewählt und kam dabei auf: [Frage] (http://stackoverflow.com/questions/43977777/cards-and-deck-in-a-card-game -inherit-or-not – Caroline

Verwandte Themen