0
Je suis assez nouveau à la langue Lua et j'essaie de créer un jeu simple Tic Tac Toe. J'ai des difficultés à trouver comment vérifier le gagnant. J'ai essayé les affirmations if-then mais je pense que je les utilise mal. Je ne sais pas quelle est la meilleure façon de vérifier le gagnant est donc toute suggestion ou assistance est grandement appréciée.Chèque Winner Naughts and Crosses jeu - Lua/Corona
Le code est -
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
S'il vous plaît fournir le contexte de votre réponse. Juste donner le code n'aide pas le PO à long terme :) –
@RoelStrolenberg - Mon code doit être considéré dans le contexte du code OP (mon code est en fait une fonction 'checkWinner' qui dépend des objets définis dans les OP code). Je suis d'accord que mon code sans le contexte n'a aucune valeur. –
Bonjour @EgorSkriptunoff merci pour la réponse. Je l'ai inclus dans le code et je ne dois pas faire quelque chose de bien car cela ne semble pas fonctionner. Cela ne semble pas fonctionner du tout. Y at-il quelque chose que je suis censé inclure pour faire appel à une fonction car je n'ai pas été capable de trouver quelque chose qui me dit comment? – Katie