ruby-on-rails – 如何修复错误“void value expression”?
发布时间:2020-12-17 03:31:51 所属栏目:百科 来源:网络整理
导读:我写了一个tic-tac-toe程序.我遇到麻烦的程序部分是我收到错误: tac.rb:63: void value expressiontac.rb:65: void value expression 此错误来自我的check_win方法. if str == "xxx" return true and puts "X Wins!" str == "ooo" return true and puts "O
我写了一个tic-tac-toe程序.我遇到麻烦的程序部分是我收到错误:
tac.rb:63: void value expression tac.rb:65: void value expression 此错误来自我的check_win方法. if str == "xxx" return true and puts "X Wins!" str == "ooo" return true and puts "O Wins!" 在我添加“X wins”和“O wins”语句后,它给了我这个错误. 这是我的整个计划: class Game def initialize @board=Array.new @board[1]="1 __|" @board[2]="__" @board[3]="|__" @board[4]="n2 __|" @board[5]="__" @board[6]="|__" @board[7]="n3 |" @board[8]=" " @board[9]="| " @turn="x" @win_status = false end def turn @turn end def show_board puts " 1 2 3" @board.each do |i| print i end puts "" end def set_turn #switches turns if @turn == "x" @turn = "o" else @turn == "o" @turn = "x" end end def make_move puts "Enter x coordinate" x=gets.to_i puts "Enter y coordinate" y=gets.to_i @board[1]="1 _"+@turn+"|" if y==1 && x==1 @board[2]="_"+@turn if y==2 && x==1 @board[3]="|_"+@turn if y==3 && x==1 @board[4]="n2 _"+@turn+"|" if y==1 && x==2 @board[5]="_"+@turn if y==2 && x==2 @board[6]="|_"+@turn if y==3 && x==2 @board[7]="n3 "+@turn+"|" if y==1 && x==3 @board[8]=" "+@turn if y==2 && x==3 @board[9]="|"+@turn+" n" if y==3 && x==3 end def win_combo return [[@board[1][1] + @board[2][1] + @board[3][2]],[@board[4][2] + @board[5][1] + @board[6][2]],[@board[7][1] + @board[8][1] + @board[9][1]],[@board[1][1] + @board[4][2] + @board[7][1]],[@board[2][1] + @board[5][1] + @board[8][1]],[@board[3][2] + @board[6][2] + @board[9][1]],[@board[1][1] + @board[5][1] + @board[9][1]],[@board[3][2] + @board[5][1] + @board[7][1]]] end def check_win #if some row or column or diagonal is "xxx" or "ooo" then set @win_status = true self.win_combo.each do |arr| str = arr.join if str == "xxx" return true and puts "X Wins!" str == "ooo" return true and puts "O Wins!" end end return false end end g = Game.new while g.check_win != true g.show_board g.set_turn g.make_move end 解决方法
你需要一个elsif让ruby知道条件变化的地方.这是正确的代码:
if str == "xxx" puts "X Wins!" return true elsif str == "ooo" puts "O Wins!" return true end 您还需要结束if块. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |