检查多组值时遇到一些问题。
loop do
turns(player1,player2)
break puts "you win!" if @entries.values[0..2].all?{|move| move == "X"}
end
我想使用像这样的多维哈希。我的语法错了,或者这只是你不能做的事情?
loop do
turns(player1,player2)
break puts "you win!" if @entries.values[[0..2][3..5]].all?{|move| move =="X"}
end
另一个问题是当值[0..2]已经等于“x”时,循环在下一次转弯之前不会中断。
这是repl https://repl.it/JrQe/57
@entries = {1=>" ", 2=>" ", 3=>" ", 4=>" ", 5=>" ", 6=>" ", 7=>" ", 8=>" ", 9=>" "}
puts "###########################################"
puts " tic-tac-toe"
puts "\t\t 1 | 2 | 3 "
puts "\t\t-----------"
puts "\t\t 4 | 5 | 6 "
puts "\t\t-----------"
puts "\t\t 7 | 8 | 9 "
puts" ###########################################"
class Players
attr_accessor :name, :piece
end
puts "Player one, what is your name?"
player1 = Players.new
player1.name = gets.chomp
player1.piece = "X"
puts "Hello #{player1.name}, you have been assigned #{player1.piece}."
puts "Player two, what is your name?"
player2 = Players.new
player2.name = gets.chomp
player2.piece = "O"
puts "Hello #{player2.name}, you have been assigned #{player2.piece}."
def grid
puts "\t\t #{@entries[1]} | #{@entries[2]} | #{@entries[3]} "
puts "\t\t-----------"
puts "\t\t #{@entries[4]} | #{@entries[5]} | #{@entries[6]} "
puts "\t\t-----------"
puts "\t\t #{@entries[7]} | #{@entries[8]} | #{@entries[9]} "
end
def choice(grid)
name = gets.chomp
name2 = name.to_i
@entries.each do |key,value|
if name2 == key
@entries[key]= "X"
end
end
end
def choice2(grid)
name = gets.chomp
name2 = name.to_i
@entries.each do |key,value|
if name2 == key
@entries[key]= "O"
end
end
end
def turns(player1,player2)
puts "#{player1.name} make your move"
player1 = choice(grid)
puts "#{player2.name} make your move"
player2 = choice2(grid)
end
def win
loop do
turns(player1,player2)
break puts "you win!" if @entries.values[0..2].all?{|move| move == "X"}
end
答案 0 :(得分:1)
我认为您提出的具体问题的答案如下:
| route | average |
|--------------|---------|
| A21>B15>> | 3 |
| A21>B15>C09> | 2 |
此外,在尾随rows = [[0..2],[3..5],[6..8]]
cols = [[0,3,6],[1,4,7],[2,5,8]]
diag = [[0,4,8],[2,4,6]]
(rows + cols + diag).any?{ |line| line.all?{ |cell| @entries[cell] == "X"} }
语句之前,您不能有两个表达式break
和puts
。试试这个:
if