我在自學Ruby,並使用一個帶Visual Studio的編譯器,稱爲Sapphire on Steel來運行代碼。我正在爲學校製作一個二十一點計劃。到目前爲止,我創建了一個Deck類,Card類和Player類。在甲板課中,我有一個打印甲板內容的功能,我正在嘗試使用相同的功能來打印玩家手中的內容。代碼調用卡類getCard()的函數,並循環整個數組。打印方法適用於printDeck()函數,但不適用於showHand()函數。爲什麼我的Class方法調用在一個方法中工作,而不是另一個方法?
創建了deck對象,並將其內容傳遞給PlayerHand.start()函數中的數組。 PlayerHand.showHand()函數打印傳遞數組內容的數組內容。
有人可以幫我找出原因嗎?任何及所有的幫助,將不勝感激
#Zach Albright
#4-11-2013
#Black Jack
class Card
def initialize(suit, value)
@suit = suit
@value = value
end
def getCard()
puts "#{@suit}: #{@value}\n"
end
def getSuit()
return @suit
end
def getValue()
return @value
end
end
class Deck
def initialize()
@deck = Array.new()
for i in 1..4
for j in 1..13
if i == 1
if j == 11
@deck.push(Card.new("Hearts", "Jack"))
elsif j == 12
@deck.push(Card.new("Hearts", "Queen"))
elsif j == 13
@deck.push(Card.new("Hearts", "King"))
else
@deck.push(Card.new("Hearts", j))
end
elsif i == 2
if j == 11
@deck.push(Card.new("Spades", "Jack"))
elsif j == 12
@deck.push(Card.new("Spades", "Queen"))
elsif j == 13
@deck.push(Card.new("Spades", "King"))
else
@deck.push(Card.new("Spades", j))
end
elsif i == 3
if j == 11
@deck.push(Card.new("Clubs", "Jack"))
elsif j == 12
@deck.push(Card.new("Clubs", "Queen"))
elsif j == 13
@deck.push(Card.new("Clubs", "King"))
else
@deck.push(Card.new("Clubs", j))
end
elsif i == 4
if j == 11
@deck.push(Card.new("Diamonds", "Jack"))
elsif j == 12
@deck.push(Card.new("Diamonds", "Queen"))
elsif j == 13
@deck.push(Card.new("Diamonds", "King"))
else
@deck.push(Card.new("Diamonds", j))
end
end
end
end
@deck.compact
end
def printDeck()
@deck.each do |i|
puts i.getCard()
end
end
def shuffleDeck()
@deck.shuffle!
end
def drawCard()
return @deck.pop()
end
def drawHand()
return @deck.pop(5)
end
end
class PlayerHand
def initialize()
@pHand = Array.new()
@pCard = Card.new("Hearts", 4)
end
def start(myDeck)
@pHand.push(myDeck.drawHand())
end
def drawCard(myDeck)
@pHand.push(myDeck.drawCard())
end
#still needs work to show the actual contents of the card .getCard is not working correctly
def showHand()
@pHand.each do |i|
puts i.getCard()
end
end
end
myCard = Card.new("Hearts", 4)
myArray = Array.new()
puts myCard.getCard()
myDeck = Deck.new()
myDeck.shuffleDeck()
player = PlayerHand.new()
player.start(myDeck)
player.showHand()
錯誤: C:\用戶\扎克\文檔\ Visual Studio 2010的\項目\的BlackJack \的BlackJack \ BlackJack.rb:118:在showHand': undefined method
getCard」爲#(NoMethodError )
從C:\用戶\扎克\文件\的Visual Studio 2010 \項目\酒杯\酒杯\ BlackJack.rb:117:在`每個」
從C:\用戶\扎克\文檔\ Visual Studio 2010 \ Projects \ BlackJack \ BlackJack \ BlackJack.rb:117:in`showHand'
從C:\用戶\扎克\文檔\ Visual Studio 2010的\項目\的BlackJack \的BlackJack \ BlackJack.rb:133
getCard()被調用時會發生什麼?有錯誤嗎? –
@GavinMiller哎呀忘了把錯誤,我會添加錯誤我得到的代碼 – user1457104