我正在尝试用Ruby创建一个老虎机游戏,这就是我所拥有的。它仍然无法运行,并说最后一行有错误,我不知道是什么或如何解决它。
我需要它有类似的输出:
您今天想要玩多少钱? 25个
总现金:25美元 你想多少赌? 10个
樱桃 - 橙 - 橙
你赢了20美元 你想继续吗? (是的,继续)是的 总现金:35美元 你想多少赌? 等...
我已经在那里设置了奖金,就像你拿到两个,你赢了两次你的赌注,如果你赢了三个,你赢了三次你的赌注。
但我收到错误:33: syntax error, unexpected $end, expecting kEND cash += cash + winnings
我的代码有什么问题,我该如何解决?
def multiplier(s1, s2, s3)
if s1 == s2 and s2 == s3:
multiplier = 3
elsif s1 == s2 or s2 == s3 or s1 == s3:
multiplier = 2
else
multiplier = 0;
return multiplier
def main()
slotImageList = ['Cherry', 'Orange', 'Plum', 'Bell', 'Melon', 'Bar']
cash = gets
puts "How much total money would you like to play with today? " +cash
while True:
puts("Total cash: $", cash)
bet = gets
puts "How much would you like to bet? " +bet
cash = (cash - bet)
slotImage1 = slotImageList.sample
slotImage2 = slotImageList.sample
slotImage3 = slotImageList.sample
puts "slotImage1", " - ", "slotImage2", " - ", "slotImage3"
winnings = bet * multiplier(slotImage1, slotImage2, slotImage3)
puts "You have won $" +winnings
cash = cash + winnings
cont = gets
puts "Would you like to continue? (yes to continue) " +cont
if cont != "yes":
puts "You have ended with $" +cash
else
puts " "
end
答案 0 :(得分:2)
当您看到消息时:
意外的$ end,期待kEND
你可以把它翻译成,“我到达了文件结尾(”$ end“),但我没想到,因为我还在等着看end
语句。 “这意味着您忘记键入至少一个已配对的end
,并且您需要检查代码并确保其缩进正确,以便您可以直观地匹配语句。
以下是将代码修正为正确的结果。在某些地方你似乎使用缩进来关闭一个块(比如Python)而不是正确的语法。
def multiplier(s1, s2, s3)
if s1==s2 && s2==s3
3
elsif s1==s2 || s2==s3 || s1==s3
2
else
0
end
end
def run_slots!
slotImageList = %w[Cherry Orange Plum Bell Melon Bar]
print "How much total money would you like to play with today? "
cash = gets.chomp.to_i
loop do
puts "Total cash: $#{cash}"
print "How much would you like to bet? "
bet = gets.chomp.to_i
cash -= bet
slotImage1 = slotImageList.sample
slotImage2 = slotImageList.sample
slotImage3 = slotImageList.sample
puts "#{slotImage1} - #{slotImage2} - #{slotImage3}"
winnings = bet * multiplier(slotImage1, slotImage2, slotImage3)
puts "You have won $#{winnings}"
cash += winnings
print "Would you like to continue? (yes to continue) "
unless gets.chomp=="yes"
puts "You have ended with $#{cash}"
break
end
end
end
run_slots! if __FILE__==$0
如果我对它采取更多的自由,我可以写下这个:
class SlotGame
SLOT_COUNT = 3
TOKENS = %w[Cherry Orange Plum Bell Melon Bar]
KEEP_PLAYING_RESPONSES = %w[y yes sure ok go]
def initialize(cash=nil)
unless cash
begin
print "How much total money would you like to play with today? "
cash = gets.to_i
puts "You must have a positive bank account to play!" if cash<=0
end until cash > 0
end
@cash = cash
end
def play_forever
begin
# Using begin/end ensures one turn will be played
# before asking the player if they want to go on
play_one_turn
end while @cash>0 && keep_playing?
puts "You have ended with $#{@cash}; goodbye!"
end
def play_one_turn
puts "Total cash: $#{@cash}"
begin
print "How much would you like to bet? "
bet = gets.to_i
puts "You only have $#{@cash}!" if bet > @cash
end until bet <= @cash
@cash -= bet
results = SLOT_COUNT.times.map{ TOKENS.sample }
puts results.join(' - ')
winnings = bet * multiplier(results)
if winnings>0
@cash += winnings
puts "You just won $#{winnings}!"
else
puts "Sorry, you're not a winner."
end
end
def keep_playing?
print "Would you like to continue? "
KEEP_PLAYING_RESPONSES.include?(gets.chomp.downcase)
end
private # Don't let anyone outside run our magic formula!
def multiplier(*tokens)
case tokens.flatten.uniq.length
when 1 then 3
when 2 then 2
else 0
end
end
end
SlotGame.new.play_forever if __FILE__==$0
答案 1 :(得分:1)
确定!!!我想我已经从你的代码中找到了它,@ Phrogz !!!
要从数组中随机选择,就像老虎机一样,我使用了slotImageList.shuffle.first
,它会对数组进行混洗,并获取混洗数组的第一个元素。
def multiplier(s1, s2, s3)
if s1==s2 && s2==s3
3
elsif s1==s2 || s2==s3 || s1==s3
2
else
0
end
end
def run_slots!
slotImageList = %w["Cherry", "Orange", "Plum", "Bell", "Melon", "Bar"]
print "How much total money would you like to play with today? "
cash = gets.chomp.to_i
loop do
puts "Total cash: $#{cash}"
print "How much would you like to bet? "
bet = gets.chomp.to_i
cash -= bet
slotImage1 = slotImageList.shuffle.first
slotImage2 = slotImageList.shuffle.first
slotImage3 = slotImageList.shuffle.first
puts "#{slotImage1} - #{slotImage2} - #{slotImage3}"
winnings = bet * multiplier(slotImage1, slotImage2, slotImage3)
puts "You have won $#{winnings}"
cash += winnings
print "Would you like to continue? (yes to continue) "
unless gets.chomp=="yes"
puts "You have ended with $#{cash}"
break
end
end
end
run_slots! if __FILE__==$0
谢谢大家! :d