2015-04-04 53 views
0

我的代碼似乎沒有工作,因爲我處理不當的哈希...初學Ruby的語法錯誤與哈希

有一個在我的代碼兩個部分,我引用的哈希,和兩個不同的語法錯誤,我的天堂通過谷歌搜索解決。

第一部語法錯誤&代碼:

「語法錯誤,意想不到的tSTRING_BEG,期待keyword_do或 '{' 或 '('」

def showBoard 
    puts " 1 2 3" 
    puts " A #{@spaces["A1"]} | #{@spaces["A2"]} | #{@spaces["A3"]}" 
    puts --------------------------- 
    puts " B #{@spaces["B1"]} | #{@spaces["B2"]} | #{@spaces["B3"]}" 
    puts --------------------------- 
    puts " C#{@spaces["C1"]} | #{@spaces["C2"]} | #{@spaces["C3"]}" 
    puts --------------------------- 
end 

第二部語法錯誤&代碼:

「syntax error,unexpected =>,expected keyword_end」

def checkGame? 
    if 
    "A1"=>"X" && "A2"=>"X" && "A3"=>"X" || 
    "B1"=>"X" && "B2"=>"X" && "B3"=>"X" || 
    "C1"=>"X" && "C2"=>"X" && "C3"=>"X" || 

    "A1"=>"X" && "B1"=>"X" && "C1"=>"X" || 
    "A2"=>"X" && "B2"=>"X" && "C2"=>"X" || 
    "A3"=>"X" && "B3"=>"X" && "C3"=>"X" || 

    "A1"=>"X" && "B2"=>"X" && "C3"=>"X" || 
    "A3"=>"X" && "B2"=>"X" && "C1"=>"X" 
     puts player1 + " wins!" 
     checkGame == true 
    elsif 
    "A1"=>"O" && "A2"=>"O" && "A3"=>"O" || 
    "B1"=>"O" && "B2"=>"O" && "B3"=>"O" || 
    "C1"=>"O" && "C2"=>"O" && "C3"=>"O" || 

    "A1"=>"O" && "B1"=>"O" && "C1"=>"O" || 
    "A2"=>"O" && "B2"=>"O" && "C2"=>"O" || 
    "A3"=>"O" && "B3"=>"O" && "C3"=>"O" || 

    "A1"=>"O" && "B2"=>"O" && "C3"=>"O" || 
    "A3"=>"O" && "B2"=>"O" && "C1"=>"O" 
     puts player2 + " wins!" 
     return true 
     checkGame == true 
    elsif 
    "A1"!=" " && "A2"!=" " && "A3"!= " " &&  
    "B1"!=" " && "B2"!=" " && "B3"!= " " && 
    "C1"!=" " && "C2"!=" " && "C3"!= " " 
     puts "It's a draw. :/ " 
     checkGame == true 
    end 

    return false   
end 

怎麼回事?

回答

0

與第一部分的問題是

puts ------- 

你大概意思封閉破折號報價,使它成爲一個字符串。

=>(hashrocket)運算符僅用於聲明新散列(例如{"a" => 1}),但您的第二位代碼在該上下文之外使用它(我不確定您嘗試執行的操作是否可以真的沒有什麼建議)。還有一些其他的東西也沒有意義 - 你在比較底部的字符串文字,我懷疑||的先例。和& &不會做你想要的,不管那是

+0

啊,呃!到第一個......感謝您的回覆。這是一個tic tac腳趾遊戲。對於第二個代碼,它應該檢查第一個if和elsif中的勝利,並且在最後一個elsif中繪製....我將用==替換=> – coolalligator15 2015-04-04 22:37:42