Distinguere il codice ripetitivo con la stessa implementazione

4

Dato questo codice di esempio

import java.util.ArrayList;
import blackjack.model.items.Card;

public class BlackJackPlayer extends Player {

    private double bet;

    private Hand hand01 = new Hand();
    private Hand hand02 = new Hand();


    public void addCardToHand01(Card c) {
        hand01.addCard(c);
    }

    public void addCardToHand02(Card c) {
        hand02.addCard(c);
    }

    public void bustHand01() {
        hand01.setBust(true);
    }

    public void bustHand02() {
        hand02.setBust(true);
    }

    public void standHand01() {
        hand01.setStand(true);
    }

    public void standHand02() {
        hand02.setStand(true);
    }

    public boolean isHand01Bust() {
        return hand01.isBust();
    }

    public boolean isHand02Bust() {
        return hand02.isBust();
    }

    public boolean isHand01Standing() {
        return hand01.isStanding();
    }

    public boolean isHand02Standing() {
        return hand02.isStanding();
    }

    public int  getHand01Score(){ return hand01.getCardScore(); }

    public int  getHand02Score(){ return hand02.getCardScore(); }

}

È considerato un codice ripetitivo? a condizione che ogni metodo stia operando in un campo separato ma facendo la stessa implementazione? Nota che hand01 e hand02 dovrebbero essere distinti.

se questo è considerato come codice ripetitivo, come dovrei affrontare questo? a condizione che ogni mano sia un'entità separata

    
posta KyelJmD 22.10.2012 - 04:02
fonte

1 risposta

8

Stai mescolando il codice del gioco con la classe del giocatore. Dovresti avere una classe per il giocatore e una per il gioco (BlackJack). Devi iniziare con qualcosa del genere:

public class Player 
{
    private double bet;
    private string name;

    public Hand hand = new Hand();

    public Player(string name)
    {
         this.name = name'
    }

    public Hand getHand(){
        return hand;
    }

}

public class BlackJack
{
     private List<Player> players = new ArrayList<Player>(); ;

     public BlackJack(Player player1, Player player2)
     {
         players.add(player1);
         players.add(player2);
     }

     public void bustHand(int playerNum) throws IndexOutOfBoundsException 
     {
         players.get(playerNum).getHand().setBust(true); 
     }     

}

Sto codificando sul posto, quindi non funzionerà al 100% ma dovresti darti un'idea

    
risposta data 22.10.2012 - 04:23
fonte