gpt4 book ai didi

python - 在 Python 中运行游戏循环时多线程显示游戏分数?

转载 作者:行者123 更新时间:2023-12-03 13:08:39 24 4
gpt4 key购买 nike

我希望根据游戏中耗时得分。为此,我希望同时运行两个循环。游戏循环和得分循环,每 1.5 秒将分数加 1。当我运行程序时,分数没有出现。我是否正确使用多线程?这是最好的方法吗?为简单起见,我只发布了相关代码。谢谢!

def text_objects(text, font):
textSurface = font.render(text, True, black)
return textSurface, textSurface.get_rect()

def displayScore(text):
while(True):
textStyle = pygame.font.Font('freesansbold.ttf', 25)
# pop up window defining window and textRect to align text properly
textWindow, textRect = text_objects(text, textStyle)
textRect.center = ((display_width/2)), ((display_height/2))
gameDisplay.blit(textWindow, textRect)
pygame.display.update()
time.sleep(1.5)
text = int(text)
text +=1
text = str(text)

def gameStart():

x_change = 0
y_change = 0
x = (display_width * 0.39)
y = (display_height * 0.7)
car_width = 200
x_brick = (display_width * random.uniform(.05, .95))
y_brick = display_height - 925

# exception for the game crashing and the game loop
gameExit = False

while not gameExit:

# capturing user actions
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()

# key-down events for car movements
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
x_change = -5
elif event.key == pygame.K_RIGHT:
x_change = 5
elif event.key == pygame.K_UP:
y_change = -5
elif event.key == pygame.K_DOWN:
y_change = 5

# cancelling out key-up events
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
x_change = 0
if event.key == pygame.K_UP or event.key == pygame.K_DOWN:
y_change = 0


# crash conditions
if x > display_width - car_width or x < 0:
crash()
if y > display_height - 175 or y < 0 - 10:
crash()


# updating car movements
x += x_change
y += y_change

# generating display
gameDisplay.fill(white)
car(x, y)
brick(x_brick, y_brick)

# moving the brick
y_brick += brick_speed

# updates for parameter given or entire surface
pygame.display.update()

# frames per second, the more frames per second the faster and smoother things move, taxing on processing speed
clock.tick(60)


t1 = Thread(target=gameStart())
t2 = Thread(target=displayScore('0'))
t1.start()
t2.start()

编辑:结束了这个..

import time

score = 0

def timer(oldsec):
currentsec = time.time()
if abs(currentsec - oldsec > 3):
return True
else:
False


oldsec = time.time() # what time is it now

while True:
if timer(oldsec) == True:
score += 1
oldsec = time.time()
print (score)

最佳答案

你可以使用 _thread。

from _thread import *

count = 0

def Your_other_loop():
global count
while True:
#Do loop stuff



def loop():
global count
while True:
print(count)

start_new_thread(Your_other_loop,())
loop()

关于python - 在 Python 中运行游戏循环时多线程显示游戏分数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47283008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com