问题描述
我使用Python和Pygame做了一个简单的游戏。
由于我的游戏方向与打开游戏时的方向相同,因此游戏可以同时在两个方向(纵向和横向)上运行。
如果我在运行游戏时旋转设备以更改方向,则所有内容都会显示在错误的位置。
问题是我不知道如何检测到设备已旋转以正确重绘屏幕。
然后,我的问题是:
如何检测到用户仅使用Python或Pygame代码旋转了设备?
重要提示:建议不应与任何特定的操作系统有关,因为相同的代码必须在带有触摸屏(运行Linux,Windows或OS X)和移动设备(运行Android或iOS)的笔记本上运行。
观察:我试图创建另一个屏幕以获取其尺寸,并使用pygame.display.set_mode()与实际屏幕进行比较,但是此新屏幕返回的尺寸与实际屏幕相同,而不是其宽度等于实际屏幕高度。
感谢您的帮助。
解决方法
通过set_mode()
生成显示表面时,必须设置RESIZABLE
标志。当逻辑显示分辨率改变时,您将得到VIDEORESIZE
event:
screen = pygame.set_mode((0,0),pygame.FULLSCREEN | pygame.pygame.RESIZABLE)
width,height = screen.get_size()
while run:
for event in pygame.event.get():
if event.type == pygame.VIDEORESIZE:
width,height = event.w,event.h