Рубиновый блэкджек и петли

Я строю командную строку, используя методы. Я дошел до того, что игрок может ударить или застрять (после раздачи 2 карт). Сейчас я, кажется, не могу перейти к мысли логически о том, как ограничить моего игрока только четырьмя попаданиями. делать

Это говорит мне о том, что моя проблема заключается в зацикливании - то есть я неправильно подхожу к циклической части программы.

Вот мой код до сих пор:

def blackjack
  promt
end

def promt
  puts "Welcome! Would you like to play a game of blackjack? Enter Yes or No"
  play = gets.chomp.downcase
  if play == "yes"
    game_plan
  elsif play =="no"
    puts "That's too bad. Come back when you feel like playing"
  else
    puts "Sorry but I don't understand your respones. Please type and enter yes to play Or no to to quit"
    blackjack
  end
end

def game_plan
  wants_to_play = true
  hand = []
  total = first_move(hand)
  wants_to_play = hit_me(hand)
  if wants_to_play == true
    hit_me(hand)
  end
end

def first_move(hand)
  deal(hand)
  deal(hand)
  total(hand) 
end

def deal(hand)
  card = rand(12)
  puts "You have been dealt a card with a value of #{card}"
  hand << card
end

def total(hand)
  total = 0
  hand.each do |count|
    total += count
  end
  puts "The sum of the cards you have been dealt is #{total}"
  total
end

def hit_me(hand)
  puts "Would you like to hit or stick?"
  yay_or_nah = gets.chomp.downcase
  if yay_or_nah == "stick" && total(hand) < 21
    puts "Sorry! The sum of the cards you have been dealt is less than 21. You lost this round!"
  else
    deal(hand)
    total(hand)
    playing = true
  end  
end

blackjack

То, что я хочу сделать, это ограничить моего игрока 2 ударами (после первого первого удара, который разыгрывает 2 карты). Я знаю, что это совершенно раздражающий вопрос новичка, но я действительно буду признателен за любые отзывы, которые помогут мне найти правильное решение.

PS: хотя я понимаю, как работают циклы, я боюсь знать, как и когда их реализовывать… поэтому любая обратная связь будет очень цениться. Спасибо!

1 ответ

Вы ищете что-то подобное?

MAX_HITS = 2
hits = 0
loop do
  break if hits > MAX_HITS
  puts "Would you like to hit or stick?"
  …
  else
    hits += 1
    …
  end
end
Другие вопросы по тегам