我正在尝试创建我创建的游戏版本,程序(计算机)总是赢得。游戏是Rock Paper Scissors。
我是Ruby的初学者,我已成功创建游戏的“正常”版本,其中计算机随机选择其结果。我一直在寻找一段时间,并坚持了一天这个简单的问题。
如果有人能指出我的写作方向,因为我真的不希望解决方案为我解决,因为我真的想学习这个。但我觉得我错过了一些重要的东西。我有使用Minimax算法的想法,所以我也开始阅读它。
我对这个问题有不同的解决方案。
以下是我目前的“正常”游戏版本。而且我认为需要进行更改的部分......计算机根据用户输入进行选择。然后我将展示我试图在同一个游戏中制作的部分,但让计算机总是赢。
问题:如何让计算机根据用户输入正确选择?我知道许多选项退出Ruby,我对不同的解决方案或解决方案类型持开放态度,我可以将其纳入我的程序。
提前感谢您的所有回复。
def get_player_play
prompt
@player_play = gets.chomp.upcase.to_sym
@winner = :invalid if @player_play != :R || :P || :S
@winner = :score if @player_play == :X
@winner = "" if @player_play == :Q
end
def get_computer_play
@computer_play = WINS.keys.sample
end
def get_winner
if @player_play == @computer_play then @winner = nil
else
@winner = :player if WINS[@player_play] == @computer_play
@winner = :computer if WINS[@computer_play] == @player_play
end
end
这是我尝试过的(以及相同类型的if / else语句的许多变体)。
#this makes it a tie
def get_computer_play
if NAME[@player_play] == ( NAME[:R] )
return @computer_play = WIN[:P]
elsif NAME[@player_play] == ( NAME[:P] )
return @computer_play = WIN[:S]
else
NAME[@player_play] == ( NAME[:S] )
return @computer_play = WIN[:R]
end
end
答案 0 :(得分:0)
要创建绑定游戏,请使用case-expression沿着以下行:
puts "Rock, paper or scissors?"
ans = gets.downcase.chomp
case ans
when "rock"
puts "You lose, computer chose paper"
when "paper"
#insert code here
when "scissors"
#insert code here
end
答案 1 :(得分:0)
这是一种不同的,更像Ruby的方法。
WINNERS = { "rock"=>"paper", "scissors"=>"rock", "paper"=>"scissors" }
def cheat
loop do
puts "rock, paper or scissors?"
computer = WINNERS[gets.downcase.chomp]
if computer
puts "You lose, computer chose #{computer}."
break
end
puts "That entry is invalid. Try again."
end
end
cheat #=> (enter "rock") "You lose, computer chooses paper."
cheat #=> (enter "papter") "That entry is invalid. Try again."
cheat #=> (enter "paper") "You lose, computer chooses scissors."
cheat #=> (enter "scissors") "You lose, computer chooses rock."