Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何旋转一组pygame对象(矩形或图像)_Python_Pygame - Fatal编程技术网

Python 如何旋转一组pygame对象(矩形或图像)

Python 如何旋转一组pygame对象(矩形或图像),python,pygame,Python,Pygame,一幅画抵得上千言万语,所以最终,我的问题是“我如何才能做到这一点?” 直觉上,我认为这可以通过在由pygame.display.set_mode定义的主显示对象中定义一个曲面来实现,在该曲面上绘制(或闪烁)所需的任何内容,然后使用pygame.transform.rotate旋转它。我假设静态点可以直接绘制到下面代码中的屏幕对象,这是pygame.display.set_mode函数返回的对象 因此,我起草了以下测试代码,但我没有看到任何旋转。我做错了什么 #!/usr/bin/env pyt

一幅画抵得上千言万语,所以最终,我的问题是“我如何才能做到这一点?”

直觉上,我认为这可以通过在由
pygame.display.set_mode
定义的主显示对象中定义一个曲面来实现,在该曲面上绘制(或闪烁)所需的任何内容,然后使用
pygame.transform.rotate
旋转它。我假设静态点可以直接绘制到下面代码中的
屏幕
对象,这是
pygame.display.set_mode
函数返回的对象

因此,我起草了以下测试代码,但我没有看到任何旋转。我做错了什么

#!/usr/bin/env python

import pygame as pg
from pygame.locals import *

SIZE = (800, 600)
BGCOL = (128, 128, 128)
STIMCOL = (80, 255, 80)

screen = pg.display.set_mode((SIZE), HWSURFACE | DOUBLEBUF)
screen.fill(BGCOL)

surf = pg.Surface((200, 200), flags=HWSURFACE)
surf.fill(BGCOL)

pg.draw.rect(surf, STIMCOL, (10, 20, 40, 50))
pg.draw.rect(surf, STIMCOL,  (60, 70, 80, 90))

screen.blit(surf, (100, 100))

pg.display.flip()

running = True
while running:
    pg.transform.rotate(surf, -1)
    pg.display.flip()
当然,如果有更好的办法,我洗耳恭听。也许精灵团体是一个好办法?(虽然我以前从未使用过…=/)


谢谢

代码中有一些错误:

pygame.transform.rotate(曲面,角度)返回一个旋转的曲面

而且你不是在while循环中对曲面进行闪电扫描。因此,您的代码应该如下所示:

import pygame as pg
from pygame.locals import *

SIZE = (800, 600)
BGCOL = (128, 128, 128)
STIMCOL = (80, 255, 80)

screen = pg.display.set_mode((SIZE), HWSURFACE | DOUBLEBUF)
screen.fill(BGCOL)

surf = pg.Surface((200, 200), flags=HWSURFACE)
surf.fill(BGCOL)

pg.draw.rect(surf, STIMCOL, (10, 20, 40, 50))
pg.draw.rect(surf, STIMCOL,  (60, 70, 80, 90))

screen.blit(surf, (100, 100))

pg.display.flip()

running = True
while running:
    surf = pg.transform.rotate(surf, -1) # updating rotation on the surface
    screen.blit(surf, (100, 100)) #bliting the resulting image every frame
    pg.display.flip()

编辑:在查看pygame文档中的注释后,当旋转90度以外的任何角度时,图像的大小调整都存在许多问题。您应该跟踪旋转,并从零开始将图像旋转一个越来越大的角度。

这是朝着正确方向迈出的一步,但我运行了代码,矩形从屏幕上滚下,再也没有返回=(正如我在编辑中所说,如果旋转角度不是90度,则生成的曲面会变大。您可以在“旋转”的注释中找到解决此问题的代码