如何在保持其余编程以正常速度运行的同时定期更改变量?

时间:2015-02-10 23:22:56

标签: python pygame

我试图制作一款类似于点击曲目的游戏,但我遇到的问题是我想要更改" money"每秒变化一次,同时保持程序的其余部分以正常速度运行。 (即,当您单击按钮以显示菜单时,它不会花费一秒钟来刷新。

2 个答案:

答案 0 :(得分:4)

创建一个允许您同时运行任务的线程:

from threading import *
import time

class CookieThread(Thread):
    def __init__(self, rate):
        self.money = 0
        self.rate = rate
        self.running = False
        super(Thread, self).__init__()

    def start(self):
        self.running = True
        super(Thread, self).start()

    def run(self):
        while self.running:
            self.money += self.rate
            time.sleep(1) # wait a second

现在创建一个线程并启动它:

cookie = CookieThread(10)
cookie.start()

答案 1 :(得分:3)

您有两个主要选择(适用于Python或任何语言):

  • 创建一个线程(在无限循环中执行,并在n秒内唤醒以异步工作),或者

  • 创建一个计时器(异步跳转到你的"中断处理程序"每隔N秒)。

这是一个很好的主题教程:

这是一个简单的警报"处理程序:

https://docs.python.org/3/library/signal.html

import signal, os

def handler(signum, frame):
    print('Signal handler called with signal', _)

# Set the alarm to fire every second
signal.signal(signal.SIGALRM, handler)
signal.alarm(1)

# ... Do stuff - the alarm will keep firing ...

# Done: clear alarm
signal.alarm(0)