Confuso sull'approccio che dovrei prendere per progettare le classi per un gioco di carte

3

Il mio obiettivo principale è creare un gioco Euchre in Python. I giochi di carte Euchre sono rari sulla piattaforma Linux, indipendentemente dalla lingua o dal gusto del desktop di scelta. Per ora voglio essere in grado di creare solo un semplice gioco come BlackJack o Rummy. La mia piattaforma è Linux Mint 17 e sto usando PyCharm.

La cosa che mi sta bloccando oltre ogni ostacolo che riesco a pensare è il design delle classi. Nella mia mente vedo classi come queste:

Mazzo (mazzo di carte) Carta (una singola carta) Mano (serie di carte) Giocatore (persona che gioca) Rivenditore (persona che distribuisce le carte)

Più specificamente, sono le azioni di quelle classi che mi infastidiscono. Le azioni che mi confondono sono:

  • dealer che distribuisce le carte. il mazziere rimuove le carte dal mazzo, o il mazzo rimuove le carte?
  • giocatore che riceve le carte. Il giocatore mette le carte nella mano o fa il Banco?
  • mischiare le carte. Questa è un'azione eseguita dal mazzo o il Dealer fa questo?
posta thevaliantx 23.02.2016 - 12:14
fonte

1 risposta

4

Se hai intenzione di avere una classe per rappresentare una collezione, allora le operazioni su quella raccolta dovrebbero essere implementate come metodi sulla classe. Quindi un client chiamerà quelle operazioni.

Quindi se hai una classe chiamata Deck che contiene una collezione di Carte, avrai un metodo chiamato "GetTopCard" che restituisce la carta più in alto. Il Dealer chiamerà quel metodo. Allo stesso modo, lo shuffling è un metodo sul Deck che il Dealer chiama.

Per un mazziere che consegna una carta a un giocatore, l'oggetto del mazziere chiama la GetTopCard del mazzo e passa l'oggetto della carta restituita al metodo AddCardToHand del giocatore.

Puoi cambiare il tuo design per sbarazzarti del mediatore (il Dealer) ma probabilmente è più facile per te tenerlo in giro come mediatore e come luogo in cui memorizzare lo stato del gioco. Potrebbe renderti più facile modellare il gioco con una classe di mazziere. Per il futuro, avere un oggetto Dealer semplifica la modifica del gioco in modo che il dealer si trovi su un server remoto con ciascun giocatore su un dispositivo mobile o simile.

    
risposta data 23.02.2016 - 12:26
fonte

Leggi altre domande sui tag