基于计时器的评分系统在 Pygame 中不起作用



所以,我和几个朋友正在为学校做一个Python项目,我们想实现一个分数系统,在这个系统中,分数每隔几秒钟就会变大。我们已经在网上搜索了可能的解决方案,但我们找不到任何对我们有用的东西

现在这是我们的代码:

import pgzrun
import pygame
import time
import random
TITLE = "___Title___"
WIDTH = 800
HEIGHT = 1180
CENTRE_X = WIDTH / 2
CENTRE_Y = HEIGHT / 2
game_over = False
finalised = False
xpos_list = [225,344,463,582]
autofarbe_list = ["carblau","carrot","cargruen"]
class Vehicle(Actor):
def __init__(self,name):
super().__init__(name)
self.vy = random.randint(8,10)
self.lane = random.randint(0,len(xpos_list)-1)
self.x = xpos_list[self.lane]
self.y = -50
self.vmax = 10
def move(self):
self.y += self.vy
def farbwechsel(self):
self.image = random.choice(autofarbe_list)
def update(self):
self.draw()
def accelerate(self):
self.vy += 1
if self.vy >= self.vmax:
self.vy = self.vmax
class Player(Vehicle):
def __init__(self, name):
super().__init__(name)
self.lane = random.randint(0,len(xpos_list)-1)
self.x = xpos_list[self.lane]
def timer():
global score, seconds
score = 0
seconds = 0
start_ticks = pygame.time.get_ticks()
while not game_over:
seconds = (pygame.time.get_ticks()-start_ticks)/1000
if seconds > 10:
score = score + 1
seconds = 0
class Car(Vehicle):
def __init__(self,name):
super().__init__(name)
player = Player("player")
player.pos = 338, 900
cars = []
for i in range(4):
cars.append(Car(random.choice(autofarbe_list)))
def update():
player.update()
player.timer()
for car in cars:
car.move()
if not game_over:
if keyboard.left and player.x > 220:
player.x -= 7
elif keyboard.right and player.x < 582:
player.x += 7
for car in cars:
car.draw()
if car.y > 1300:
car.y = -50
car.farbwechsel()
car.x = random.choice(xpos_list)
def draw():
screen.clear()
screen.blit("strasselang", (0, 0))
for car in cars:
car.draw()
for m in cars:
player.draw()
screen.draw.text(
"Progress: " +
str(score) + " Punkte",
topleft=(10, 10), color="black")
pgzrun.go()

这怎么能解决?

我要做的是,定义一个变量,该变量将计算事件之间的刻度数。在while循环中的每一帧,你都会检查变量是否等于你想要的任何值,并添加分数,否则你会将x添加到该变量中(例如,如果我想每秒添加一个,而我运行的是60 FPS,我会每帧添加1/60(。

最新更新