用于表示AI反应时间的计时器

我在为大学项目使用pygame创建一张卡牌游戏,游戏的一个重要方面是AI如何对当前情况做出反应。我有一个函数可以随机生成两个参数之间的数字,我希望程序等待这个生成的时间长度。我的AI代码全部包含在一个if语句中,一旦被调用,我希望程序等待生成的时间,然后决定接下来做什么。最初我使用的是:

pygame.time.delay(calcAISpeed(AIspeed))

如果不是在AI等待时暂停了程序的其他部分,阻止用户与程序互动,这将是一个很好的解决方案。这意味着我不能使用while循环来创建我的计时器。

在不涉及多线程或其他复杂解决方案的情况下,绕过这个问题的更好方法是什么?我的项目即将到期,我不想做大幅度的更改。我尝试使用pygame.time.Clock函数来比较当前时间和生成的时间,但是一旦操作完成后重置时钟证明是麻烦的。

感谢您的帮助,我期待您的意见。


回答:

解决这个问题的简单方法是在您的AI中添加一个名为“wait”的变量,并将其设置为一个随机数(当然,您需要根据程序速度进行调整…我将在下面的代码中解释)。然后在您的更新函数中添加一个条件,检查这个等待数是否为零或更低,如果不是,则从中减去一定的时间。下面是一段基本代码来解释这个方法…

class AI(object):def __init__(self):    #在这里放入您想要的AI内容    self.currentwait = 100    #^^^ 您只需要在这里定义这个变量    #如果您想要一个静态的等待时间,请添加这个变量    self.wait = 100 #在这里输入您的数字def updateAI(self):    #如果等待数小于或等于零,则执行操作    if self.currentwait <= 0:        #在这里执行您的AI操作    else:        #根据您的游戏tick速度和您希望AI等待的时间        #您可以更改从“current wait”变量中减去的数量        self.currentwait -= 100 #在这里输入您的数字

为了让您了解上面的情况,您有一个名为currentwait的变量。这个变量描述了程序还需要等待的时间。如果这个数字大于0,则仍有等待时间,因此不会执行任何操作。然而,时间会从这个变量中减去,因此每次tick等待的时间都会减少。您可以通过使用时钟tick率来控制这个速率。例如,如果您的时钟速率设置为60,那么您可以通过将currentwait设置为60,并在每次tick时减去1,直到数字达到零,使程序等待1秒钟。

正如我所说,这非常基础,因此您可能需要稍作调整以适应您的程序,但它应该能解决问题。希望这对您有帮助,祝您的项目好运 🙂

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注