在此游戏中,不同的字母会在一个时间间隔后从屏幕顶部掉落,当您敲击键盘上的相应键时,这些字母会消失。每个字母的x位置是随机的,下降速度将随着游戏的进行而加快。游戏将在特定条件下结束(例如,屏幕高度被字母占据)。对我来说,这似乎是巨大的挑战。因此,在第一阶段,我的代码被简化为相同的字母“ A”,而不是变化的字母。 问题是如何控制游戏中每个“ A”的生成速度。目前,它太快了。我已经尝试过time.sleep(5),但是它也阻止了每个字母的掉落。 这是代码:
import sys
import pygame
from pygame.locals import *
from settings import Settings
from letter import Letter
import game_functions as gf
from pygame.sprite import Group
def run_game():
pygame.init()
az_settings =Settings()
screen = pygame.display.set_mode((0,0), RESIZABLE)
pygame.display.set_caption("Alphabet Zoo")
letters = pygame.sprite.Group()
while True:
gf.letter_generator(az_settings ,screen, letters)
gf.check_events(letters)
letters.update()
gf.update_screen(az_settings, screen, letters)
run_game()
def __init__(self):
self.bg_color = (0, 0, 0)
self.letter_speed_factor = 1
import sys
import pygame
import time
from letter import Letter
def letter_generator(az_settings, screen, letters):
# time.sleep(5)
# This setting not only slowdowns the generating of A
# but also stops the falling down of each A for a short time.
new_letter = Letter(az_settings, screen)
letters.add(new_letter)
def check_events(letters):
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
elif event.type == pygame.KEYDOWN:
if event.key == pygame.K_a:
letters.empty()
def update_screen(az_settings, screen, letters):
screen.fill(az_settings.bg_color)
letters.draw(screen)
letters.update()
pygame.display.flip()
import pygame
import random
from pygame.sprite import Sprite
class Letter(Sprite):
def __init__(self, az_settings, screen):
super().__init__()
self.screen = screen
self.az_settings = az_settings
self.image = pygame.image.load('images/A.png')
self.rect = self.image.get_rect()
self.screen_rect = screen.get_rect()
self.rect.centerx = random.randint(0, self.screen_rect.right)
self.rect.top = self.screen_rect.top
self.center = float(self.rect.centerx)
def update(self):
if self.rect.bottom < self.screen_rect.bottom:
self.rect.centery += self.az_settings.letter_speed_factor
我如何实现控制A生成速度的目标?
答案 0 :(得分:2)
您可以从时间模块中查看time.time()
函数。示例:
import time
start = time.time()
sleepTime = 1
while True:
print("This is being printed meaning the program isn't stopped")
now = time.time()
if now - start > sleepTime:
print("generate A in this area. This will only happen every one second.")
start = now