2017-05-24 59 views
0

我剛剛開始學習f#並開發了一款基本遊戲,不過現在您指定要使用單個陣列播放的單元格。例如,要在中間的單元格上放置X或O,在升級時應輸入5。我想改變這種接受1,1F中的二維陣列夏普

我列出我的源代碼下面

let arrayOfCells = [|" "; " "; " "; " "; " "; " "; " "; " " ;" "|] 


let drawGrid()= 

    Console.Write("\n\n\t\t" + arrayOfCells.[0] + "|" + arrayOfCells.[1]+ "|" + arrayOfCells.[2] + "\n") 
    Console.Write("\t\t------ "+ "\n") 
    Console.Write("\t\t" + arrayOfCells.[3] + "|" + arrayOfCells.[4]+ "|" + arrayOfCells.[5] + "\n") 
    Console.Write("\t\t------ "+ "\n") 
    Console.Write("\t\t" + arrayOfCells.[6] + "|" + arrayOfCells.[7]+ "|" + arrayOfCells.[8] + "\n") 

回答

2

您可以使用該array2D功能在F#二維數組的遊戲,所以初始化細胞,你可以使用:

let cells = 
    array2D [ 
    [ " "; " "; " " ] 
    [ " "; " "; " " ] 
    [ " "; " "; " " ] 
    ] 

現在,您可以訪問使用cells.[0, 0]元素,並使用修改值:

cells.[1, 1] <- "X" 

該指數是從0到2所以如果你想遍歷所有單元格繪製網格,你需要:

printfn "-------------" 
for x in 0 .. 2 do 
    printf "| " 
    for y in 0 .. 2 do 
    printf " %s |" cells.[x,y] 
    printfn "\n--------------" 

這應該給你二維數組的所有信息,這樣就可以改變遊戲中的數據結構 - 還有其他方法可以改善這一點,但這可能是the Code Review site的問題。