如何在保持程序的其余部分 运行 正常速度的同时定期更改变量?
How do I change a variable periodically while keeping the rest of my programming running at normal speed?
我正在尝试制作一款类似于 cookie-clicker 的游戏,但我遇到的问题是我想每秒更改一次 "money" 变量,同时保留程序的其余部分运行 正常速度。 (即当您单击按钮调出菜单时,刷新不会花一秒钟。
创建一个线程,允许您同时执行 运行 个任务:
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()
您有两个主要选择(Python,或任何语言):
创建线程(无限循环执行,每n秒唤醒一次异步工作),或
创建一个计时器(每 N 秒异步跳转到您的 "interrupt handler")。
这里有一个很好的线程教程:
这是一个简单的 "alarm" 处理程序:
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)
我正在尝试制作一款类似于 cookie-clicker 的游戏,但我遇到的问题是我想每秒更改一次 "money" 变量,同时保留程序的其余部分运行 正常速度。 (即当您单击按钮调出菜单时,刷新不会花一秒钟。
创建一个线程,允许您同时执行 运行 个任务:
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()
您有两个主要选择(Python,或任何语言):
创建线程(无限循环执行,每n秒唤醒一次异步工作),或
创建一个计时器(每 N 秒异步跳转到您的 "interrupt handler")。
这里有一个很好的线程教程:
这是一个简单的 "alarm" 处理程序:
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)