用 for 循环获取 Lua 表格条目

我使用 Lua 制作了一个表和游戏脚本。概念如下: 从表格中获取一个随机单词并显示(第一个索引),如果用户的答案正确,则显示下一个随机单词(下一个表项),以此类推直到显示所有表项。

如何使用 for..do 在 Lua 中循环?

我的当前代码:

WordTable = {
  {lv = 1, v_random = "LEOHL", v_word = "HELLO"},
  {lv = 1, v_random = "GEEINN", v_word = "ENGINE"},
  {lv = 1, v_random = "TECHA", v_word = "CHEAT"},
  {lv = 2, v_random = "dwIl prEARmgorm", v_word = "WILD PROGRAMMER"},
  {lv = 2, v_random = "abDEKory deEPRss", v_word = "KEYBOARD PRESSED"},
 }

-- 得到表的长度
function tablelength(T)
  local count = 0
  for _ in pairs(T) do count = count + 1 end
  return count
end

-- 获取键入的单词
function getTypingWord()
 local score = 0
 local point = 0
 index = 1
 count = tablelength(WordTable)
 tab = WordTable[index]

 for index=1,count do
 local rdmWord = tab.v_random
 local crtWord = tab.v_word
 labelWrd.Caption = rdmWord

 local mcWord = string.upper(edtWrd.Text)
 -- edtWrd 是一个文本框

 if mcWord == '' or mcWord == nil then return nil end

 if mcWord == crtWord then
  showMessage('牛,答案是 '..crtWord)
  edtWrd.Text = ''
  point = point+1
  score = point*200
  labelLevel.Caption = 'True : '..point  -- 一个标签
  labelScore.Caption = 'Score : '..score -- 一个标签
  index = index + 1
  tab = WordTable[index]
 else
  showMessage('请再试一次')
  edtWrd.Text = ''
 end
 end
end

-- 等待用户按 ENTER 键回答
edtWrd.OnKeyPress = function(sender, key)
if isKeyPressed(VK_RETURN) then getTypingWord() end
 return key
end
点赞
用户3670853
用户3670853
data = {
   {id = 'ronald', say = 'reagan'},
   {id = 'tom', say = 'hank'},
   {id = 'angelina', say = 'jolie'}
}

function tablelength(T)
   local count = 0
   for _ in pairs(T) do count = count + 1 end
   return count
end

count = tablelength(data)
i = 1
edt = UDF1.CEEdit1  -- edt 是文本框的名称

function CEEdit1KeyPress(sender, key)
   answer = data[i]
   v_word = answer.id..' '..answer.say
   tipo = string.lower(UDF1.CEEdit1.Text)

   if tipo == "" and isKeyPressed(VK_RETURN) == true then return nil end

   if tipo ~= v_word then
      if isKeyPressed(VK_RETURN) == true then
         showMessage('再试一次..')
         edt.Text = ''
      end
   elseif tipo == v_word then
      if isKeyPressed(VK_RETURN) == true then
         showMessage('OK. 答案是:'..v_word)
         edt.Text = ''
         i = i+1
         if i > count then showMessage('所有单词已显示') end
      end
   end
   return key
end

UDF1.show()  -- 显示表格
2019-05-01 03:16:52