0
我對Lua語言非常陌生,並且正在嘗試創建一個簡單的Tic Tac Toe遊戲。我很難搞清楚如何檢查贏家。我曾嘗試過if-then語句,但我認爲我錯誤地使用了它們。不知道檢查贏家的最佳方式是如何提供任何建議或幫助,非常感謝。檢查優勝者Naughts and Crosses遊戲 - Lua/Corona
的代碼 -
local composer = require("composer")
local scene = composer.newScene()
d = display
w20 = d.contentWidth * .2
h20 = d.contentHeight * .2
w40 = d.contentWidth * .4
h40 = d.contentHeight * .4
w60 = d.contentWidth * .6
h60 = d.contentHeight * .6
w80 = d.contentWidth * .8
h80 = d.contentHeight * .8
----DRAW LINES FOR BOARD
local lline = d.newLine(w40,h20,w40,h80)
lline.strokeWidth = 5
local rline = d.newLine(w60,h20,w60,h80)
rline.strokeWidth = 5
local bline = d.newLine(w20,h40,w80,h40)
bline.strokeWidth = 5
local tline = d.newLine(w20,h60,w80,h60)
tline.strokeWidth = 5
--PLACE BOARD COMPARTMENT DIMENSIONS IN TABLE
board ={
{"tl",1,w20,h40,w40,h20,0},
{"tm",2,w40,h40,w60,h20,0},
{"tr",3,w60,h40,w80,h20,0},
{"ml",4,w20,h60,w40,h40,0},
{"mm",5,w40,h60,w60,h40,0},
{"mr",6,w60,h60,w80,h40,0},
{"bl",7,w20,h80,w40,h60,0},
{"bm",8,w40,h80,w60,h60,0},
{"br",9,w60,h80,w80,h60,0}
}
--
local EMPTY, X, O = 0, 1, 2
local whichTurn = 0
--FILL COMPARTMENT W/ COLOUR WHEN TOUCHED
local function fill(event)
if (event.phase == "ended") then
for t = 1,9 do
if event.x > board[t][3] and event.x < board[t][5] then
if event.y < board[t][4] and event.y > board[t][6] then
if board[t][7] == EMPTY then
if whichTurn == 1 then
whichTurn = 2
else
whichTurn = 1
end
board[t][7] = whichTurn
if board[t][7] == 1 then
local xText = display.newText("X", board[t][3], board[t][4], "Arial", 80)
xText.anchorX = 0
xText.anchorY = 100
elseif board[t][7] == 2 then
local oText = display.newText("O", board[t][3], board[t][4], "Arial", 80)
oText.anchorX = 0
oText.anchorY = 100
end
end
end
end
end
end
local function checkWinner()
for i = 1,9 do
if board[i][2] == 1 and board[i][7] == 1 then
boxOne = "x"
end
if board[i][2] == 2 and board[i][7] == 1 then
boxTwo = "x"
end
if board[i][2] == 3 and board[i][7] == 1 then
boxThree = "x"
end
if boxOne == "x" and boxTwo == "x" and boxThree == "x" then
display.newText("Winner", 10, 100, "Arial", 200)
end
end
end
end
Runtime:addEventListener ("touch", fill)
return scene
請給你的答案提供上下文。長期來看,只給代碼對OP沒有任何幫助:) –
@RoelStrolenberg - 我的代碼應該在OP代碼的上下文中考慮(我的代碼實際上是一個函數checkWinner,它依賴於OP中定義的對象碼)。我同意我的代碼沒有上下文沒有任何價值。 –
嗨@EgorSkriptunoff謝謝你的回覆。我已經將它包含在代碼中,並且不能做正確的事情,因爲它似乎沒有工作。它似乎根本不運行該功能。有什麼我應該包括讓調用一個函數,因爲我一直無法找到任何告訴我如何? – Katie