Come progettare la relazione tra un gioco e un giocatore in un gioco?

3

Attualmente sto tentando di creare un gioco di carte collezionabili e ho già a disposizione un'intera serie di funzioni, ma ora sono bloccato nella parte in cui un giocatore può attaccare un altro giocatore (più rigorosamente: le carte mostri di un altro giocatore sul campo). Il gioco è progettato principalmente per essere giocato con due giocatori in mente, anche se averlo aperto per future estensioni non è mai una cattiva idea.

Questo è il design che ho finora, mostrato come un esempio minimalista in pseudo-codice:

class Game
    private final Player self
    private final Player opponent

class Player
    private final String name
    ...

Il gioco scorre su tutti i giocatori e li lascia fare il loro turno, il che può comportare l'attacco ad un altro giocatore. Questo metodo ha la seguente struttura:

class AttackMonsterAction
    private final int monsterIndex
    private final int targetMonsterIndex
    private final Player targetPlayer

    public void performAction(final Player player)

Se è di qualche rilevanza, lo sto codificando in Java.

La mia domanda concreta è la seguente: Come posso creare il mio design di classe in modo che AttackMonsterAction chiamato da un certo oggetto Player , possa fare riferimento a "l'altro giocatore"?

    
posta skiwi 19.05.2014 - 11:34
fonte

1 risposta

4

Un paio di opzioni vengono in mente:

  • Passa un oggetto GameState a performAction , il GameState rappresenta l'ambiente corrente, inclusi gli altri (i) e il tavolo da gioco. Questo ti permetterebbe di spostare performAction in un'interfaccia e usarla per le tue altre azioni come spostare e nascondere

  • Utilizza un oggetto mediatore 2 per gestire l'interazione tra i due giocatori.

Riguardo all'aggiunta di più giocatori in futuro; sembra una grande riprogettazione, quindi applica il principio XP di "Non ne avrai bisogno" e non aggiungerlo ancora. Scrivi test per dimostrare che il gioco funziona e quando vuoi aggiungere altri giocatori, fai dei test per assicurarti che il gioco a due giocatori funzioni ancora.

    
risposta data 19.05.2014 - 12:16
fonte

Leggi altre domande sui tag