18

如果我将来想转向 C++ 和 SDL,Python 和 pygame 是不是学习 SDL 的好方法?

4

9 回答 9

15

Python+PyGame 是学习 SDL 的好主意。

我就是这样写了一个有点流行的游戏。Python/PyGame 似乎比 SDL 绑定到任何其他语言要先进得多,与 C++ 相比的一个巨大优势是不必编译代码,并且通过一些简单的黑客攻击甚至可以修改正在运行的程序,并实时查看反馈。它产生了巨大的差异 - 就像使用 GUI 矢量图形程序与在文本编辑器中编写 SVG 一样。不幸的是,您并没有开箱即用,因为您需要稍微调整您的程序才能看到它。

至于 PyGame 的其他优点,jrpg 在 Linux、Windows 和 OSX 上运行的变化非常小。我不得不对全屏模式切换和双缓冲进行一些调整,因为操作系统之间存在一些差异,但不需要重新编译。如果您有任何问题,您可以获得良好的堆栈跟踪并实时调试您的问题,一旦您遇到内存损坏或段错误,这对于 C++ 来说是不可能的。

我真的不知道为您的 SDL 游戏混合 C++ 和 Python 有多容易或多难。我认为这不会太难,因为 PyGame 是一个非常简单但制作精良的 SDL 包装器,并且 Python/C++ 混合应该很容易。

于 2009-01-11T01:29:49.687 回答
6

pygame 对 SDL 接口进行了相当多的抽象,因此我认为没有太多优势。

于 2008-10-26T21:28:02.720 回答
6

您可以在基于 SDL 的环境中学习一些技术、实现游戏逻辑的方法等,但是在迁移到 C++/SDL 之后,您将不得不直接使用 SDL 函数,pyGame 中的辅助函数/对象将完全无用。

于 2008-10-26T21:37:15.510 回答
6

的。如果 python 对您来说比 C++ 更自然,那么首先学习 pygame 可能是个好主意。迁移到使用 SDL 和 C 时,您必须经历一个转换过程,但它应该是或多或少的一对一映射。

于 2008-10-27T05:45:11.640 回答
3

当然。您可以在更短的时间内编写 sdl 游戏或工具。

您可以从将 data/chimp.bmp 显示为 468x60 屏幕的代码开始:

import pygame, sys,os
from pygame.locals import * 

pygame.init() 

window = pygame.display.set_mode((468, 60)) 
pygame.display.set_caption('Monkey Fever') 
screen = pygame.display.get_surface() 

monkey_head_file_name = os.path.join("data","chimp.bmp")

monkey_surface = pygame.image.load(monkey_head_file_name)

screen.blit(monkey_surface, (0,0)) 
pygame.display.flip() 

def input(events): 
   for event in events: 
      if event.type == QUIT: 
         sys.exit(0) 
      else: 
         print event 

while True: 
   input(pygame.event.get())

当您熟悉 SDL 对象时,您可以轻松迁移到 C++(如果您想再次使用:p Pygame 速度很快,您可以用它制作复杂的游戏)。

于 2008-10-27T09:57:48.387 回答
3

出于您的目的,PySDL2比 pygame 更好。它几乎直接导入 SDL2 API。

于 2013-12-16T18:42:43.173 回答
1

python 不会阻止你学习设计,这对于学习 IMO 来说是更重要的事情,我正在用 pygame 做一个粉碎兄弟克隆,我在设计方面学到了很多东西。然而,你也将学会不要编写太多次优代码,python 也有聪明而漂亮的 hack。

于 2008-11-09T01:07:21.460 回答
1

如果你的目标是 OpenGL,你可以试试pyglet 。它比 pygame 的库要好得多。

但是,如果您将来想迁移到 C++ 和 SDL,现在就去做。这样您就可以真正学习 SDL。但是在做这种不负责任的事情之前,先检查一下pyglet可能是个好主意。仅仅因为无论您的库有多糟糕,都可以在 C++ 中正确设计您的应用程序。

于 2008-10-27T09:43:06.730 回答
0

我不会认为 Python(或任何托管或解释语言,就此而言)是学习任何复杂任务的好方法,因为它使程序员与系统的工作隔离了太多。正如我的一个朋友所说,“Python 爱你,希望你快乐。” 如果您已经了解基础知识,那一切都很好,但是如果您想学习,那么您最不想要的就是一种可以为您完成所有工作的语言。

您将很快了解什么,但不是为什么,然后当出现严重错误时(最终会在任何不平凡的项目中),您将不知道发生了什么或为什么。

于 2008-10-31T22:28:28.163 回答