如何在python3Pygame中连续旋转图像?

问题描述

我正在尝试制作类似Cookie Clicker的游戏,并且试图使中心cookie旋转,但是什么也没发生:(。在它刚离开屏幕旋转之前,但是后来我删除了该代码,因为我给了起来,但是现在我已经做了其他事情,现在还需要轮换(我刚刚从2周前开始,所以不要判断)这是我的代码

import pygame,sys,time,random

pygame.init()

height = 650
width  = 800

cookies = 0
cps = 0

font = pygame.font.SysFont('Arial',25)
clock = pygame.time.Clock()


cookie_surface = pygame.image.load('/Users/cameronbitter/Python/Game/cookie.png')
cookie_surface = pygame.transform.scale(cookie_surface,(275,275))
cookie_rect = cookie_surface.get_rect(center = (width/2,height/2))

screen = pygame.display.set_mode((width,height))

auto_clicker = pygame.image.load('/Users/cameronbitter/Python/Game/mouse_cursor.png')
auto_clicker = pygame.transform.scale(auto_clicker,(480,360))
auto_clicker_rect = auto_clicker.get_rect(topleft = (450,-100))

rotation = 0

while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.QUIT
            sys.exit()
        if event.type == pygame.KEYDOWN:
            cookies += 1
            time.sleep(0)

    screen.fill((0,0))





    cookies_text_surface_p1 = font.render("Cookies :",True,(255,255,255))
    cookies_text_surface_p2 = font.render(f"                {cookies}",255))

    pygame.transform.rotate(cookie_surface,(rotation))

    if rotation >= 360:
        rotation = 0

    rotation += 1
    print(rotation)

    screen.blit(cookies_text_surface_p1,(10,10))
    screen.blit(cookies_text_surface_p2,11))
    screen.blit(cookie_surface,(cookie_rect))
    screen.blit(auto_clicker,(auto_clicker_rect))

    pygame.display.flip()
    clock.tick(60)

解决方法

pygame.transform.rotate返回一个新的旋转后的pygame.Surface对象。您必须blit新表面:

while True:
    # [...]

    rotated_cookie_surface = pygame.transform.rotate(cookie_surface,rotation)
    rotated_cookie_rect = rotated_cookie_surface.get_rect(center = cookie_rect.center)

    # [...]

    screen.blit(rotated_cookie_surface,rotated_cookie_rect)

    # [...]

请参见How do I rotate an image around its center using Pygame?