Ruby - 试图创造一个无与伦比的游戏

时间:2018-03-07 18:03:56

标签: ruby

我正在尝试创建我创建的游戏版本,程序(计算机)总是赢得。游戏是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 

2 个答案:

答案 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."