私は独学で Ruby を学んでおり、Sapphire on Steel として知られる Visual Studio でコンパイラを使用してコードを実行しています。学校向けのブラックジャック プログラムを作成しています。ここまでで、Deck クラス、Card クラス、Player クラスを作成しました。デッキ クラスには、デッキの内容を出力する関数があり、同じ関数を使用してプレイヤーの手札の内容を出力しようとしています。このコードは、カード クラス getCard() の関数を呼び出し、配列全体をループします。印刷メソッドは printDeck() 関数では機能しますが、showHand() 関数では機能しません。
デッキ オブジェクトが作成され、その内容が 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:\Users\Zach\Documents\Visual Studio 2010\Projects\BlackJack\BlackJack\BlackJack.rb:118: in showHand': undefined method
getCard' for # (NoMethodError)
C:\Users\Zach\Documents\Visual Studio 2010\Projects\BlackJack\BlackJack\BlackJack.rb:117:「各」から
C:\Users\Zach\Documents\Visual Studio 2010\Projects\BlackJack\BlackJack\BlackJack.rb:117:in `showHand' から
C:\Users\Zach\Documents\Visual Studio 2010\Projects\BlackJack\BlackJack\BlackJack.rb:133 から