O meu código é simples, são 3 perguntas que devem ser respondidas com os botões de interação, porém quando respondo a primeira pergunta a KEY que eu responder, responde automaticamente as as outras duas perguntas.
Por exemplo, respondo a primeira pergunta com RED, ao invés dele desenhar a nova pergunta e esperar que o usuário digite um novo botão, ele ja responde todas as perguntas restantes tb com RED.
Queria saber como arrumar isso, colocar um tipo "readln" pra o código ficar esperando que um novo botão seja pressionado.
Segue código Lua abaixo:
function redraw(pergunta, alternativa1, alternativa2, alternativa3, alternativa4)
canvas:clear()
--Desenhando FUNDO
local regLarg, regAlt = canvas:attrSize()
canvas:attrFont('arial', 20)
local img = canvas:new('media/telaLua.png')
local fundo = { img=img, x=0, y=0, dx=regLarg, dy=regAlt }
canvas:compose(fundo.x, fundo.y, fundo.img)
--DESENHANDO TEXTO
local txt = pergunta
local txtLarg, txtAlt = canvas:measureText(txt)
local txtX = 10
local txtY = 175
canvas:attrColor('white')
canvas:drawText(txtX, txtY, txt)
--DESENHANDO BOTÕES E ALTERNATIVAS
local botaoA = canvas:new('media/botaoA.png')
local imgLargA, imgAltA = canvas:attrSize()
canvas:compose ((regLarg-imgLargA)+15, 250, botaoA)
local txtA = alternativa1
local txtLargA, txtAltA = canvas:measureText(txtA)
canvas:drawText(100, 250, txtA)
local botaoB = canvas:new('media/botaoB.png')
local imgLargB, imgAltB = canvas:attrSize()
canvas:compose ((regLarg-imgLargB)+15, 300, botaoB)
local txtB = alternativa2
local txtLargB, txtAltB = canvas:measureText(txtB)
canvas:drawText(100, 300, txtB)
local botaoC = canvas:new('media/botaoC.png')
local imgLargC, imgAltC = canvas:attrSize()
canvas:compose ((regLarg-imgLargC)+15, 350, botaoC)
local txtC = alternativa3
local txtLargC, txtAltC = canvas:measureText(txtC)
canvas:drawText(100,350, txtC)
local botaoD = canvas:new('media/botaoD.png')
local imgLargD, imgAltD = canvas:attrSize()
canvas:compose ((regLarg-imgLargD)+15, 400, botaoD)
local txtD = alternativa4
local txtLargD, txtAltD = canvas:measureText(txtD)
canvas:drawText(100,400, txtD)
canvas:flush()
end
-- DESENHA NOTA
function desenhaNota(nota)
local txtNota = 'Nota: ' .. nota
local txtLargNota, txtAltNota = canvas:measureText(txtNota)
canvas:drawText(400,300, txtNota)
canvas:flush()
end
function tratador (evt)
print ("entrou funcao tratador")
if (numPergunta == 1) then
print ("entrou if 1")
pergunta = 'Em qual ano chegou a primeira expedicao oficial portuguesa ao Brasil?'
alternativa1 = '1500'
alternativa2 = '1501'
alternativa3 = '1349'
alternativa4 = '1530'
alternativaCerta = 'B'
end
if (numPergunta == 2) then
print ("entrou if 2")
pergunta = 'Qual rei frances ficou conhecido por apoiar o contrabando de pau Brasil?'
alternativa1 = 'Francisco I'
alternativa2 = 'Dom Pedro I'
alternativa3 = 'Henrique VIII'
alternativa4 = 'Elizabeth II'
alteranativaCerta = 'A'
end
if (numPergunta == 3) then
print ("entrou if 3")
pergunta = 'Por quem foi comandada a primeira expedicao colonizadora enviada ao Brasil por Portugal?'
alternativa1 = 'Joao Vaz Corte Real'
alternativa2 = 'Pedro Alvares Cabral'
alternativa3 = 'Vasco da Gama'
alternativa4 = 'Martin Afonso de Souza'
alternativaCerta = 'D'
end
redraw(pergunta, alternativa1, alternativa2, alternativa3, alternativa4)
if (evt.key == 'RED') and (alternativaCerta == 'A') then
print ("entrou resposta A")
nota = nota + 10
numPergunta = numPergunta + 1
return
elseif (evt.key == 'GREEN') and (alternativaCerta =='B') then
print ("entrou resposta B")
nota = nota + 10
numPergunta = numPergunta + 1
return
elseif (evt.key == 'YELLOW') and (alternativaCerta =='C') then
print ("entrou resposta C")
nota = nota + 10
numPergunta = numPergunta + 1
return
elseif (evt.key == 'BLUE') and (alternativaCerta == 'D') then
print ("entrou resposta D")
nota = nota + 10
numPergunta = numPergunta + 1
return
else
print ("entrou else")
nota = nota + 0
numPergunta = numPergunta + 1
return
end
if (numPergunta == 4) then
print ("entrou if nota")
desenhaNota(nota)
end
end
-- CODIGO LUA
nota = 0
numPergunta = 1
event.register(tratador)
Autor: Victor Laerte Oliveira