неопределенный метод push для строки - PullRequest
0 голосов
/ 23 ноября 2018

Я работаю над проектом по копированию Go Fish, чтобы я мог больше узнать о структурировании данных и о том, как правильно использовать массивы.У меня есть небольшая проблема, пытаясь понять, почему я продолжаю получать эту ошибку.Я попытался изменить переменные в переменную экземпляра, это не очень помогло.Я надеялся, что кто-нибудь может взглянуть на мой код и указать мне правильное направление.** Пожалуйста, не стесняйтесь давать какие-либо предложения, даже если это не связано с вопросом.Я не знаю, правильно ли я подхожу к этому.

card_deck = ["ace of spades", "ace of diamonds", "ace of clubs", "ace of hearts",
"two of spades", "two of diamonds", "two of hearts", "two of clubs",
"three of spades", "three of diamonds", "three of hearts", "three of clubs",
"four of spades", "four of diamonds", "four of hearts", "four of clubs",
"five of spades", "five of diamonds", "four of hearts", "five of clubs",
"six of spades", "six of diamonds", "six of hearts", "six of clubs",
"seven of spades", "seven of diamonds", "seven of hearts", "seven of clubs",
"eight of spades", "eight of diamonds", "eight of hearts", "eight of clubs",
"nine of spades", "nine of diamonds", "nine of hearts", "nine of clubs",
"ten of spades", "ten of diamonds", "ten of hearts", "ten of clubs",
"jack of spades", "jack of diamonds", "jack of hearts", "jack of clubs",
"queen of spades", "queen of diamonds", "queen of hearts", "queen of clubs",
"king of spades", "king of diamonds", "king of hearts", "king of clubs"]

puts "There are #{card_deck.length} cards in this deck."
puts "Welcome to Go-Fish."
print "Your name please: "
player_name = $stdin.gets.chomp.capitalize

puts "Ok #{player_name}, lets get this deck shuffled..."
#sleep(1)
# shuffles card_deck using .shuffle method
card_deck = card_deck.shuffle
puts "Cards are perfectly shuffled!"
#sleep(1)
puts "Dealing cards..."
#sleep(1)
# assigns first 7 cards to user
@my_hand = Array.new
@my_hand = card_deck[0..6].join(', ')
# assigns next 7 cards to CPU
@cpu_hand = Array.new
@cpu_hand = card_deck[7..13]

# removes first 14 cards from the deck (0-13)
@card_deck = card_deck.drop(13)

puts "Here's your hand: #{@my_hand}."
puts "You go first!"
puts "Do you have a..."
puts @cpu_hand.join(', ')
print "> "
@card = $stdin.gets.chomp.downcase

# if cpu has the card requested give it to the player and add to their array

if @cpu_hand.include?(@card)
  @my_hand.push(@card)
else
puts "Go fish!"
end

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

Если вы хотите удалить первые 7 карт из колоды и поместить их в руку игрока, вам необходимо выполнить следующую операцию:

@my_hand = card_deck.shift(7)

После этого вы можете отдать следующие 7 карт в ЦП:

@cpu_hand = card_deck.shift(7)

После этого нет необходимости делать drop.Кроме того, drop (13) удалит ровно 13 элементов, а не 14 (0-13).

Кроме того, вам может понравиться более короткая версия инициализации колоды:

cards = ['ace','one','two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'ten', 'jack', 'queen', 'king']
suits = ['spades', 'clubs', 'diamonds','hearts']
card_deck = cards.product(suits).collect{|x,y| "#{x} of #{y}"}
0 голосов
/ 23 ноября 2018

метод push

a = [ "a", "b", "c" ]
a.push("d", "e", "f")
        #=> ["a", "b", "c", "d", "e", "f"]
[1, 2, 3,].push(4).push(5)
        #=> [1, 2, 3, 4, 5]

метод соединения

[ "a", "b", "c" ].join        #=> "abc"
[ "a", "b", "c" ].join("-")   #=> "a-b-c"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...