Lua值自行改变?

时间:2017-01-12 22:07:53

标签: lua love2d

我很想使用Lua和LOVE2D。我认为熟悉这些工具的一个完美方法就是创造一个蛇式游戏。目前我已经完成了大部分工作。在吃掉食物后加入蛇时遇到问题。我的蛇类目前由一个单元格表组成,每个单元格都有一个gridX和gridY变量。我还有2个名为lastGridX和lastGridY的全局变量,用于跟踪snake类中最后一个单元格的最后位置。我以相反的顺序更新单元格的位置,并将它们设置为等于单元格的位置,表格中的索引少于1。我通过添加一个名为SCALE的常量值来更新第一个单元格,SCALE是网格上每个方块的大小。当第一个细胞的位置与食物的位置相同时,我的问题就出现了。出于某种原因,我的lastGridX和lastGridY也改变为食物的x和y位置,即使我自己也没有改变它们。这使得每个单元都具有相同的位置,这显然不是我想要发生的。任何帮助将不胜感激,谢谢。以下是一些代码。

function love.update(dt)
-- updates the snake's position in set intervals
moveTimer = moveTimer - dt
if moveTimer <= 0 then
    lastGridX = snake[#snake].gridX
    lastGridY = snake[#snake].gridY
    -- updates the body of the snake
    for i = #snake, 2, -1 do
        snake[i].gridX = snake[i - 1].gridX
        snake[i].gridY = snake[i - 1].gridY
    end

    -- updates the head of the snake
    if direction == "right" then
        snake[1].gridX = snake[1].gridX + SCALE
    elseif direction == "left" then
        snake[1].gridX = snake[1].gridX - SCALE
    elseif direction == "up" then
        snake[1].gridY = snake[1].gridY - SCALE
    elseif direction == "down" then
        snake[1].gridY = snake[1].gridY + SCALE
    end
    moveTimer = MOVE_TIMER_MAX
    print(lastGridX, lastGridY)
    print(snake[#snake].gridX, snake[#snake].gridY)
    if snake[1].gridX == newFood.gridX and snake[1].gridY == newFood.gridY then
        -- moves the food to a random location on the grid if it is eaten
        newFood.gridX = math.random(0, 63) * SCALE
        newFood.gridY = math.random(0, 35) * SCALE

        -- adds a new body part to the end of the snake 
        newC = cell
        newC.gridX = lastGridX
        newC.gridY = lastGridY
        print(lastGridX, lastGridY)
        print(snake[#snake].gridX, snake[#snake].gridY)
        os.execute("pause")
        table.insert(snake, newC)
    end
end 

0 个答案:

没有答案