我们如何在Google Colab上使用pygame?

4

我想使用Q学习来自动化我的游戏,并考虑使用Colab获得额外的GPU支持。安装必要的要求并运行代码后,Colab会出现以下错误:

> error:
> Traceback (most recent call last)
<ipython-input-16-28b090095233> in <module>()
      5 
      6 pygame.font.init()
----> 7 pygame.display.list_modes()
      8 pygame.init()
      9 

>error: video system not initialized 

如果有人能解决这个错误或告诉我如何使用VNC来解决这个问题,那就太好了。
我已经尝试过pygame.init()以及pygame.display.list_modes()

1
要使用pygame.display.list_modes(),你必须先使用pygame.init()来初始化视频系统(如果存在的话)。 - undefined
2个回答

6

有一种方法可以在Colab中运行pygame,但有一些限制。

  1. 欺骗系统以认为存在视频设备
  2. 捕获pygame屏幕并将其复制到与Colab兼容的另一个接口,如OpenCV或matplotlib
  3. 使用输出库清除单元格。

这不是最优雅的方式,但它完成了任务。

请查看我创建的这个笔记本: (https://colab.research.google.com/drive/1xtiBrGeRHmXY3KSOixkZBf_rJIgBImJu?usp=sharing)

请注意有以下限制:

  1. 无法从键盘或鼠标读取输入
  2. 无法播放音频

在我的情况下,我对使用pygame进行动画制作感兴趣,所以对此并不太关注。


5
PyGame仅能使用本地的显卡和显示器。
当您在服务器上运行代码时,它会尝试使用安装在服务器上的显卡和连接到此服务器的显示器,而这些显示器是您无法看到的。
但是通常情况下,您甚至无法运行它,因为服务器通常没有安装显卡和显示器,因为除了服务器管理员以外没有人能看到这个显示器。
编辑:如果服务器有显卡,则需要在list_modes()之前运行pygame.display.init()
 pygame.display.init()
 print( pygame.display.list_modes() )

或者pygame.init(),这将运行pygame.display.init()(以及其他init())。

 pygame.init()
 print( pygame.display.list_modes() )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接