问题描述
我正在尝试在 pygame 中制作我的第一款游戏。
我希望游戏在后台有这个动画
我使用的是 python 3.9.2
import pygame,math,random,sys
from pygame.locals import *
screen = pygame.display.set_mode((400,400))
fps = 60
pygame.init()
mainClock = pygame.time.Clock()
# Colors
black = (0,0)
white = (255,255,255)
# Function for close the game ------------------------------------------------------------------------------------------------------------
def close_game():
pygame.quit()
sys.exit()
# Functions for drawing ------------------------------------------------------------------------------------------------------------------
def background():
screen.fill(black)
def canvas():
margin = pygame.draw.rect(screen,white,(50,50,300,300),1)
def bar_animation():
bar_width = 15
for b in range(0,20):
bar_b_height = random.randint(10,100)
bar_b = pygame.draw.rect(screen,(50 + (bar_width * b),350 - bar_b_height,bar_width,bar_b_height),0)
# Main game loop --------------------------------------------------------------------------------------------------------------------------
def main_loop():
running = True
while running:
background()
bar_animation()
canvas()
for event in pygame.event.get():
if event.type == QUIT:
close_game()
pass
pygame.display.update()
mainClock.tick(fps)
# Run game --
main_loop()
在那个代码上,我重新创建了我想要的游戏背景。 我想让 bar_animation() 函数运行得更慢,而不会使整个游戏或其他函数运行得更慢...
我建议您执行代码以了解我在做什么
解决方法
您可以通过每几个滴答更新一次来减慢您的功能:
import pygame
import random
pygame.init()
screen = pygame.display.set_mode((400,400))
mainClock = pygame.time.Clock()
running = True
bar_b_heights = []
while running:
screen.fill((0,0))
pygame.draw.rect(screen,(255,255,255),(50,50,300,300),1)
if pygame.time.get_ticks() % 10 == 0 or not bar_b_heights:
bar_b_heights = [random.randint(10,100) for b in range(0,20)]
for i,bar_b_height in enumerate(bar_b_heights):
pygame.draw.rect(screen,(50 + (15 * i),350 - bar_b_height,15,bar_b_height),0)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.display.update()
mainClock.tick(60)
pygame.display.quit()
pygame.quit()
输出: