我正在创建一个简单的横向滚动太空游戏,用于我将在学校进行的演示。我决定我应该学习如何使用操纵杆输入作为挑战。这真的很酷,几乎完成了,但是我注意到在我玩的时候,如果我不时不动鼠标,显示器会变暗,看起来就要进入省电状态了。有什么办法可以避免这种情况吗?
答案 0 :(得分:0)
import pygame
x,y = pygame.mouse.get_pos()
pygame.mouse.set_pos([x+1,y+1])
pygame.mouse.set_pos([x,y])
这不是最好的解决方案,但这将模拟鼠标移动。 可能有API可以调用或使用Pythons signal库。 但是根据您的平台,解决方案可能会有很大不同。
或者,如果您需要在窗口未激活时移动光标?
import win32api, win32con
def move(x,y,press=False):
win32api.SetCursorPos((x,y))
if press:
click(x,y)
def click(x,y):
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN,x,y,0,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP,x,y,0,0)
move(10,10,True)
答案 1 :(得分:0)
我猜测您从pygame.joystick
而不是pygame.event
获得操纵杆输入。
如果是这样,您也许可以通过调用pygame.event.pump()
来停止计算机进入睡眠状态。
如果未调用其他任何pygame.event
函数,则应调用此函数,这样可以在后台发生这些错误,并且系统不会将处理过程误认为是无响应的。
如果您还想要活动,pygame.event.get()
也是可行的解决方案。
我在OSX(10.13.3)上进行了测试,但是我知道pump()
在不同的操作系统上的行为不同,因此您的结果可能会有所不同(请评论)。
还值得注意的是pygame.mouse.set_pos()
对我不起作用,因为它目前在MacOS上似乎无能为力(pygame:1.9.4.dev0)。