我正在 pygame 中编写一个类来创建一个精灵对象,并且我希望能够旋转它。它可以很好地处理图像,并且旋转没有问题。但当旋转纯色表面时,盒子似乎会增大和缩小。我知道这是表面改变尺寸以适应内部矩形顶点的结果,但我该如何阻止它呢?我想看到视觉旋转。
我创建了一些示例代码来显示我面临的问题,运行它会导致框的大小发生简单的变化。
import sys, pygame
from pygame.locals import *
pygame.init()
SCREEN = pygame.display.set_mode((200, 200))
CLOCK = pygame.time.Clock()
surface = pygame.Surface((50 , 50))
surface.fill((0, 0, 0))
rotated_surface = surface
rect = surface.get_rect()
angle = 0
while True:
for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
SCREEN.fill((255, 255, 255))
angle += 5
rotated_surface = pygame.transform.rotate(surface, angle)
rect = rotated_surface.get_rect(center = (100, 100))
SCREEN.blit(rotated_surface, (rect.x, rect.y))
pygame.display.update()
CLOCK.tick(30)
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题,使表面按照我想要的方式旋转?
任何帮助,将不胜感激!
我使用pygame在python中创建了一个noughts和crosses的版本,完成的游戏结果比预期好得多,我对它很满意.但是,代码似乎非常混乱,我想稍微清理一下.为了使代码工作,我创建了9个我编写的精灵类的对象.但是每当我需要对它们应用一个方法时,我必须将相同的行写出九次,只有一个数字不同.为了解决这个问题,我想知道我是否可以为九个对象中的每个对象运行相同的脚本.该程序首先创建对象:
board_0 = classes.sprite.Sprite(x = 250, y = 200)
board_0.set_image('board.png')
board_1 = classes.sprite.Sprite(x = 350, y = 200)
board_1.set_image('board.png')
board_2 = classes.sprite.Sprite(x = 450, y = 200)
board_2.set_image('board.png')
board_3 = classes.sprite.Sprite(x = 250, y = 300)
board_3.set_image('board.png')
board_4 = classes.sprite.Sprite(x = 350, y = 300)
board_4.set_image('board.png')
board_5 = classes.sprite.Sprite(x = 450, y = 300)
board_5.set_image('board.png')
board_6 = classes.sprite.Sprite(x = 250, y = 400)
board_6.set_image('board.png')
board_7 = classes.sprite.Sprite(x = 350, y = 400)
board_7.set_image('board.png')
board_8 = classes.sprite.Sprite(x = 450, y = …Run Code Online (Sandbox Code Playgroud)