如何将计算时间整合到AI反应中?

问题描述 投票:0回答:1

我的程序是Pong的一种实现,其中一个板将由计算机移动,另一个板将由用户移动。

该程序在AI为实现真实性而出错时可以正常工作。但是,我的桨在屏幕上的移动是断断续续的,似乎正在跳过一两个帧。

程序在Lua(+ Love2D)中。

function Paddle:comp_move(dt)

error = math.random(3) == 2 and true or false
start_time = os.time()
diff = 0
if ball:collides(self) == false then

    if ball.y  > self.y + self.height then -- Ball is below paddle
            -- Ball is moving up  and difference is more than 20 pixels
            if ball.dy < 0 and (ball.y - self.y - self.height) > 20 then 
                -- move down
                if error == false then
                    diff = os.difftime(os.time() - start_time)
                    self.y = math.min(VIRTUAL_HEIGHT - 20, self.y + PADDLE_SPEED*(dt))
                end
            end
            -- Ball is moving down
            if ball.dy > 0 then
                -- move down
                if error == false then
                    diff = os.difftime(os.time() - start_time)
                    self.y = math.min(VIRTUAL_HEIGHT - 20, self.y + PADDLE_SPEED*(dt))
                end
            end
    elseif ball.y + ball.height < self.y then -- Ball is above paddle
        -- Ball is moving down
        if ball.dy > 0 and (self.y - ball.y - ball.height) > 20 then
            -- move up
            if error == false then 
                diff = os.difftime(os.time() - start_time)
                self.y = math.max(0,self.y - PADDLE_SPEED*(dt))
            end
        elseif ball.dy < 0 then -- Ball is moving up
            -- move up
            if error == false then 
                diff = os.difftime(os.time() - start_time)
                self.y = math.max(0,self.y - PADDLE_SPEED*(dt))
            end
        end
    end
end

我正在计算PC所需的时间,但是我应该对它进行什么操作才能使桨的运动正常化。

lua artificial-intelligence game-physics love2d pong
1个回答
0
投票

从您的代码看来,桨速度是恒定的;用功能代替它可能是一个主意,这样一来,桨叶移动得更慢,然后加速,然后在到达所需位置时再次减速。

这将使它在移动行为方面更加现实,也可能解决您的口吃问题。

您的常数PADDLE_SPEED需要用某个函数代替,该函数需要执行一个步骤并在适当的时间返回一个值(可能在0.0到PADDLE_SPEED之间)。

© www.soinside.com 2019 - 2024. All rights reserved.