lua - lua (love2d): 函数应该没有结束
问题描述
它说第 98 行的函数没有“结束”。我发誓没有遗漏的“结尾”,我一遍又一遍地验证,我找不到它是关于什么的。
错误
语法错误:main.lua:142: 'end' 应在 '' 附近(在第 98 行关闭 'function')
追溯
[C]:在 0x07f9a11328f0 [C]:在函数“要求”中 [C]:在函数“xpcall”中 [C]:在函数“xpcall”中
player = {}
opponent = {}
ball = {}
screen ={}
function love.load()
screen.top = 0
screen.bottom = love.graphics.getHeight()
screen.left = 0
screen.right = love.graphics.getWidth()
player.x = 50
player.y = screen.bottom / 2
player.width = 20
player.height = 100
player.speed = 500
opponent.x = screen.right - 50
opponent.y = screen.bottom / 2
opponent.width = 20
opponent.height = 100
opponent.speed = 400
ball.x = screen.right / 2 - 10
ball.y = screen.bottom / 2 - 10
ball.width = 20
ball.height = 20
ball.speed = 200
ball.xVel = -ball.speed
ball.yVel = 0
end
function love.update(dt)
player.move(dt)
opponent.move(dt)
ball.move(dt)
ball.collide(dt)
end
function love.draw(dt)
player.draw()
opponent.draw()
ball.draw()
end
function checkCollision(a, b)
if a.x + a.width > b.x and a.x < b.x + b.width and a.y + a.height > b.y and a.y < b.y + b.height then
return true
else
return false
end
end
function player.draw()
love.graphics.rectangle('fill', player.x, player.y, player.width, player.height)
end
function player.move(dt)
if love.keyboard.isDown('w') then
player.y = player.y - player.speed * dt
elseif love.keyboard.isDown('s') then
player.y = player.y + player.speed * dt
end
if player.y < screen.top then
player.y = screen.top
elseif player.y + player.height > screen.bottom then
player.y = screen.bottom - player.height
end
end
function opponent.draw()
love.graphics.rectangle('fill', opponent.x, opponent.y, opponent.width, opponent.height)
end
function opponent.move(dt)
if ball.y + ball.height < opponent.y then
opponent.y = opponent.y - opponent.speed
else if ball.y > opponent.y + opponent.height then
opponent.y = opponent.y + opponent.speed
end
if opponent.y < screen.top then
opponent.y = screen.top
elseif opponent.y + opponent.height > screen.bottom then
opponent.y = opponent.bottom - opponent.height
end
end
function ball.draw()
love.graphics.rectangle('fill', ball.x, ball.y, ball.width, ball.height)
end
function ball.move(dt)
ball.x = ball.x + ball.xVel * dt
ball.y = ball.y + ball.yVel * dt
if ball.y < screen.top then
ball.y = screen.top
ball.yVel = -ball.yVel
elseif ball.y + ball.height > screen.bottom then
ball.y = screen.bottom
ball.yVel = -ball.yVel
end
end
function ball.collide(dt)
if checkCollision(ball, player) then
ball.xVel = -ball.xVel
local middleBall = ball.y + (ball.height / 2)
local middlePlayer = player.y + (player.height / 2)
local collisionPosition = middleBall - middlePlayer
ball.yVel = collisionPosition
end
end
解决方案
我将它粘贴到vi
语法突出显示中,乍一看,opponent.move(dt)
很明显end
缺少蓝色来关闭功能块。
但我不想决定if
丢失的end
属于哪个更正它。
哎呀,现在我明白了。
你做一个else if
而不是:elseif
推荐阅读
- amazon-web-services - 跟踪多个 AWS SQS 队列上的消息
- node.js - 当用户在对话框流中从另一个意图键入列表项时如何触发列表
- mysql - 查找未与另一个 id 关联的 id 的 SQL 查询
- android - 与第三方库的数据绑定
- docker - 构建docker镜像时如何修改`core_pattern`
- material-design - Material Design 风格图标如何基于文本节点子节点
- python - 为什么图像不会闪烁?
- swift - UserDefaults.integer 是否适用于 32 位平台?
- python - 高嵌套/括号的编码指南
- python - 如何用类的单个标签替换嵌套的块引用标签?