Estoy creando un juego de cartas con múltiples clases. Actualmente, estoy usando variables globales para contener las variables $shuffled_deck
, $players_hand
y $dealers_hand
, pero me preocupa usar variables globales (quizás, innecesariamente) y preferiría usar variables de instancia.¿Cómo paso las variables entre las clases de Ruby?
He estado leyendo, pero nada está realmente haciendo clic. ¿Alguien puede ayudarme a orientarme en la dirección correcta con esto?
Usando variables de instancia No he podido guardar el @players_hand
y @dealers_hand
para poder usarlos en otras clases. Por ejemplo, tengo @players_hand
de la clase Player
. Tengo la clase Dealer
roba una carta, pero no puedo sacar esa @players_hand
en la clase Dealer
para sumar las dos.
Mi código actual es:
class Blackjack
def initialize
@player = Player.new
@dealer = Dealer.new
end
end
class Dealer
def initialize
@deck = Deck.new
$dealers_hand = 0
end
def hit_dealer
@deck.hit_dealer
end
def hit_player
@deck.hit_player
end
def draw_card
@hit = $shuffled_deck
end
def shuffle
@deck.suits
end
end
class Player
def initialize
$players_hand = 0
end
end
class Deck
def suits
#code that shuffled the deck..
$shuffled_deck = @shuffled_deck
end
def hit_player
@hit = $shuffled_deck.pop
end
def hit_dealer
@hit = $shuffled_deck.pop
end
end
Buena pregunta, pero no habrá un buen montón de conceptos que pasar para obtener una respuesta completa. Con suerte, alguien sabrá un buen documento de referencia, pero definitivamente tendrá que manejar ** la encapsulación **, que es la idea de determinar a qué objeto pertenece una pieza de datos * y normalmente termina agregando más (más pequeñas) clases con responsabilidades más específicas – Gareth