Comment puis-je corriger l'erreur “nul expression de valeur”?

J'ai écrit un tic-tac-toe programme. La partie du programme que je vais avoir des ennuis avec, c'est que j'obtiens l'erreur:

tac.rb:63: void value expression
tac.rb:65: void value expression

Cette erreur vient de mon check_win méthode.

if str == "xxx"
                                return true  and puts "X Wins!"
                        str == "ooo"
                                return true and puts "O Wins!"

Il m'a donné cette erreur après j'ai ajouté le "X gagne" et "O gagne" des déclarations.

c'est l'ensemble de mon programme:

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

OriginalL'auteur user2759592 | 2013-11-18