Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- board =
- {
- {1,2,3},
- {4,5,6},
- {7,8,9},
- }
- function play(piece)
- local pos = tonumber(io.read())
- while not isFree(board, pos) do
- print("Posicao ocupada. Tente outra:")
- pos = tonumber(io.read())
- end
- local i, j = getIndices(pos)
- board[i][j] = piece
- end
- function isPiece(piece)
- return piece == "O" or piece == "X"
- end
- function isFree(board, pos)
- local i, j = getIndices(pos)
- return not isPiece(board[i][j])
- end
- function getIndices(pos)
- local i = math.floor((pos-1)/3) + 1
- local j = (pos-1) % 3 + 1
- return i, j
- end
- function win()
- return (board[1][1] == board[1][2] and board[1][2] == board[1][3]) or
- (board[2][1] == board[2][2] and board[2][2] == board[2][3]) or
- (board[3][1] == board[3][2] and board[3][2] == board[3][3]) or
- (board[1][1] == board[2][1] and board[2][1] == board[3][1]) or
- (board[1][2] == board[2][2] and board[2][2] == board[3][2]) or
- (board[1][3] == board[2][3] and board[2][3] == board[3][3]) or
- (board[1][1] == board[2][2] and board[2][2] == board[3][3]) or
- (board[1][3] == board[2][2] and board[2][2] == board[3][1])
- end
- function getFreePositions(board)
- local ret = {}
- for pos = 1, 9 do
- if isFree(board, pos) then
- table.insert(ret, pos)
- end
- end
- return ret
- end
- function cpuPlay(piece)
- local freePlaces = getFreePositions(board)
- local index = math.random(1, #freePlaces)
- local pos = freePlaces[index]
- print(pos)
- for i = 1,3 do
- for j = 1,3 do
- if pos == board[i][j] then
- board[i][j] = piece
- end
- end
- end
- end
- function getGameResult(board)
- local ret = "c" -- continue
- if win() then
- ret = "w" -- Hรก um ganhador
- elseif #getFreePositions(board) == 0 then
- ret = "v" -- Deu velha
- end
- return ret
- end
- function printGameResult(result)
- local results =
- {
- w = "Ganhou",
- v = "Deu velha",
- }
- print(results[result])
- end
- function printBoard(board)
- for i, line in ipairs(board) do
- print(line[1] .. "|" .. line[2] .. "|" .. line[3])
- end
- print("")
- end
- function runGame()
- printBoard(board)
- local gameResult = "c"
- while true do
- print("Sua vez:")
- play("X")
- printBoard(board)
- gameResult = getGameResult(board)
- if gameResult ~= "c" then
- break
- end
- print("CPU:")
- cpuPlay("O")
- printBoard(board)
- gameResult = getGameResult(board)
- if gameResult ~= "c" then
- break
- end
- end
- printGameResult(gameResult)
- end
- runGame()
Add Comment
Please, Sign In to add comment