如何解决在不减慢整个游戏的情况下减慢 pygame 功能
我正在尝试在 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()
输出:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。