मैं कई कक्षाओं के साथ एक कार्ड गेम बना रहा हूं। वर्तमान में, मैं $shuffled_deck
, $players_hand
, और $dealers_hand
चर रखने के लिए वैश्विक चर का उपयोग कर रहा हूं, लेकिन वैश्विक चर (शायद, अनावश्यक रूप से) का उपयोग करते समय मुझे चिंता है और इंस्टेंस चर का उपयोग करना पसंद करेंगे।मैं रुबी कक्षाओं के बीच चर कैसे पास करूं?
मैं चारों ओर पढ़ रहा हूं, लेकिन वास्तव में कुछ भी क्लिक नहीं कर रहा है। क्या कोई मुझे इस दिशा में सही दिशा में इंगित करने में मदद कर सकता है?
उदाहरण चर का उपयोग करके मैं @players_hand
और @dealers_hand
को अन्य वर्गों में उपयोग करने में सक्षम होने में सक्षम नहीं हूं। उदाहरण के लिए, मेरे पास Player
कक्षा से @players_hand
है। मेरे पास Dealer
कक्षा एक कार्ड खींचती है, लेकिन मैं @players_hand
को Dealer
कक्षा में दो साथ जोड़ने के लिए नहीं खींच सकता।
मेरे वर्तमान कोड है:
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
अच्छा सवाल की तरह कर सकते हैं, लेकिन काफी अवधारणाओं के लिए के माध्यम से जाना का एक बहुत होगा एक पूरा जवाब प्राप्त करें। उम्मीद है कि किसी को एक अच्छा संदर्भ दस्तावेज पता चलेगा, लेकिन आपको निश्चित रूप से ** encapsulation ** पर एक संभाल प्राप्त करने की आवश्यकता होगी, जो कि काम करने का विचार है, जो डेटा का एक टुकड़ा * संबंधित * है, और सामान्य रूप से आपके साथ जोड़ता है अधिक विशिष्ट जिम्मेदारियों के साथ अधिक (छोटे) वर्ग – Gareth