我正在使用pygame創建一個游戲,有一些怪物在追趕玩家。我想讓這些怪物每隔8秒增加一次速度。因此,我制作了一個秒表作為后臺任務(所以它不會中斷游戲代碼的執行),并使用執行緒。所以,我寫了這樣的代碼:
from time import time, sleep
import執行緒
monsters_speed = 0.3
x =0
# 怪物增加速度的時間
def time_speed():
global monsters_speed, x
start_time = time()
while True:
multiple_of_eight = list(range(8, x, 8)
time_elapsed = round(time() - start_time)
if multiple_of_eight.count(time_elapsed) > 0:
monsters_speed = 1 1:
print(monsters_speed)
列印(time_elapsed)
x = 1 1
sleep(1)
time_speed_thread = threading.Thread(target=time_speed)
time_speed_thread.start()
如果你注意到x變數,它只是我添加的一個額外的變數,這樣multiple_of_eight串列就會無限地超時,直到while回圈被打破。
現在,我期望的結果是:
0.3。
0
0.3
1
0.3
2
0.3
3 3
0.3
4 4
0.3 0.3
5 5
0.3 0.3
6
0.3 0.3
7
0.3 0.3
8
1.3
9
and so on...
注意到monster_speed變數是如何比之前的值多了1。 但實際上,其結果是:
0.3。
0
0.3
1
0.3
2
0.3
3 3
0.3
4 4
0.3 0.3
5 5
0.3 0.3
6
0.3 0.3
7
0.3 0.3
8
0.3 0.3
9
and so on...
怪物的速度并沒有增加。這就是為什么我需要幫助,以便得到我想要的結果。
uj5u.com熱心網友回復:
試試這個:
from time import time, sleep
import執行緒
monsters_speed =0.3
# 怪物增加速度的時間。
def time_speed() 。
global monsters_speed
start_time = time()
while True:
time_elapsed = round(time() - start_time)
##你需要跟蹤time_elapsed并檢查它是否可以被分割。
## by 8
if time_elapsed%8 == 0 and not time_elapsed == 0:
print(monsters_speed)
print(time_elapsed)
sleep(1)
time_speed_thread = threading.Thread(target=time_speed)
time_speed_thread.start()
uj5u.com熱心網友回復:
你可以使用Timer類來代替:
monster_timer = None
monster_speed = 0 0
def increaseMonsterSpeed()。
global monster_speed, monster_timer
monster_speed = 1: monster_timer = threading.Timeline.com.
monster_timer = threading.Timer(8, increaseMonsterSpeed)
monster_timer.start()
# 呼叫一次函式來啟動增速程序:
increaseMonsterSpeed()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/332529.html
標籤:
