为什么我们要制作一个单独的函数来检测其他 类 的输入

Why do we make a separate function for detecting input for other classes

这是来自 CS50 关于游戏开发的讲座。 我们已经有一个 table 来检测 main.lua 中的输入(即 love.keyboard.keysPressed):

function love.keypressed(key)
    -- add to our table of keys pressed this frame
    love.keyboard.keysPressed[key] = true

    if key == 'escape' then
        love.event.quit()
    end
end

但我们仍然在main.lua中制作了另一个函数用于其他类:

function love.keyboard.wasPressed(key)
    return love.keyboard.keysPressed[key]
end

用法示例(Class 名称:bird.lua):

-- just sample code, ignore the functionality
if love.keyboard.wasPressed('space') or love.mouse.wasPressed(1) then
    self.dy = -5
    sounds['jump']:play()
end

可以找到整个游戏的代码here

感谢你们花时间阅读这个问题

编辑:据我了解,

函数love.keypressed(key)没有return任何东西,tablelove.keyboard.keysPressed[key]main.lua更新后重置,所以我们调用一个函数直接执行在那个特定时间检查任何输入(即love.keyboard.wasPressed

哈,我刚刚在搜索同样的问题时遇到了这个问题。我认为是这样的鸟 class 处理它自己的密钥 detection/movement.

由于 love.keyboard.keypressed 是一个全局函数,它会一直执行,你必须检查你处于什么状态 in/handle 鸟在 [=17= 中的移动] - 这样(将 waspressed 作为函数传递),bird class 保持与其关联的代码,而 main 保持更高级别的非特定代码