Pygame简单评分系统

时间:2012-04-26 19:59:03

标签: python pygame

我为我的pygame创建了一个简单的分数系统。但它暂停了比赛。我知道这是因为time.sleep但我不知道如何解决它。

得分系统每5秒+100,而start为true,代码:

while start == True:
   time.sleep(5)
   score = score + 100 

包含缩进的完整代码:http://pastebin.com/QLd3YTdJ 代码:156-158

谢谢

2 个答案:

答案 0 :(得分:3)

不要使用sleep,它会暂停游戏直到时间结束,而是要计算一个内部计时器,其中包含已经过的秒数。当你达到5秒时,增加分数,然后重置计时器。

这样的事情:

scoreIncrementTimer = 0
lastFrameTicks = pygame.time.get_ticks()
while start == True:
    thisFrameTicks = pygame.time.get_ticks()
    ticksSinceLastFrame = thisFrameTicks - lastFrameTicks
    lastFrameTicks = thisFrameTicks

    scoreIncrementTimer = scoreIncrementTimer + ticksSinceLastFrame
    if scoreIncrementTimer > 5000:
        score = score + 100
        scoreIncrementTimer = 0

这可以很容易地改进(如果您的帧速率如此低,帧之间的时间超过5秒怎么办?)但这是一般的想法。这通常称为“增量时间”游戏计时器实现。

答案 1 :(得分:2)

如果我理解正确,你不希望while True: score += 100循环阻止整个程序?

您应该通过将分数添加到单独的函数来解决它 并使用APScheduler http://packages.python.org/APScheduler/intervalschedule.html

的区间函数
from apscheduler.scheduler import Scheduler

# Start the scheduler
sched = Scheduler()
sched.start()

# Schedule job_function to be called every 5 seconds
@sched.interval_schedule(seconds=5)
def incr_score():
    score += 100

这将导致APScheduler为您每隔5秒运行一次该线程创建一个线程。

您可能需要对该功能进行一些更改才能使其正常工作,但至少应该让您开始:)。