Подтвердить что ты не робот

Является ли Python и pygame хорошим способом изучения SDL?

Если я захочу перейти на С++ и SDL в будущем, это Python и pygame - хороший способ узнать SDL?

4b9b3361

Ответ 1

Python + PyGame - отличная идея для изучения SDL.

Я написал несколько популярную игру. Python/PyGame кажется намного более продвинутым, чем привязки SDL к любому другому языку, и одно огромное преимущество по сравнению с С++ заключается в том, что не нужно компилировать код, а при некотором простом взломе может даже изменить запущенную программу и увидеть обратную связь в реальном времени. Это делает огромную разницу - например, с помощью графической программы графического интерфейса пользователя и написанием SVG в текстовом редакторе. К сожалению, вы не получите это из коробки, потому что вам нужно немного адаптировать свою программу, чтобы увидеть его.

Что касается других преимуществ PyGame, jrpg работал с очень небольшими изменениями в Linux, Windows и OSX. Я должен был сделать некоторые настройки для полноэкранного переключения режимов и двойной буферизации, так как были некоторые различия между ОС, но перекомпиляция никогда не требовалась. Если у вас есть какие-либо проблемы, вы можете получить хорошую трассировку стека и отладить ваши проблемы вживую, что не совсем возможно с С++, как только вы получите повреждение памяти или segfault.

Я действительно не знаю, как легко или как сложно было бы смешивать С++ и Python для ваших игр с SDL. Я думаю, что это не может быть слишком сложно, так как PyGame - довольно простая, но очень красиво сделанная оболочка для SDL, и смешивание Python/С++ должно быть достаточно простым.

Ответ 2

Вы можете изучить некоторые методы, способы реализации игровой логики и т.д. в среде на основе SDL, но после перехода на С++/SDL вам придется использовать функции SDL напрямую, вспомогательные функции/объекты из pyGame будут полностью утилизированы.

Ответ 3

pygame довольно много абстрагирует интерфейс SDL, поэтому я не думаю, что много преимуществ было перенесено.

Ответ 4

Да. Если python для вас намного более естественен, чем С++, лучше изучить pygame. Вам придется пройти процесс перевода при переносе на SDL и C, но это должно быть более или менее однозначное сопоставление.

Ответ 5

Конечно. Вы можете написать игру или инструменты sdl за меньшее время.

Вы можете начать с этого кода, который отображает данные /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, вы можете легко перейти на С++ (если вы хотите еще раз: p Pygame работает быстро, и вы можете создать с ним сложную игру).

Ответ 6

Вы можете попробовать pyglet Если вы нацеливаетесь на OpenGL. Это намного лучше продуманная библиотека, чем то, что является pygame.

Но тогда, если вы захотите перейти на С++ и SDL в будущем, сделайте это сейчас. Таким образом, вы действительно изучаете SDL. Но прежде чем делать такую ​​безответственную вещь, было бы неплохо сначала проверить pyglet. Просто потому, что для правильного проектирования приложений на С++ также неважно, насколько плохи ваши библиотеки.

Ответ 7

python не помешает вам отказаться от обучения дизайну, и что в значительной степени важнее всего научиться ИМО, я делаю бит-бросок с pygame, и я многому научился в дизайне. И все же вы научитесь писать слишком много субоптимального кода тоже, у python тоже есть умные и красивые хаки.

Ответ 8

Для вашей цели PySDL2 лучше, чем pygame. Он импортирует API SDL2 почти напрямую.

Ответ 9

Я бы не рассматривал Python (или любой управляемый или интерпретируемый язык, если на то пошло) хороший способ изучить любую сложную задачу, потому что он слишком много изолирует программиста от работы системы. Как сказал мой друг, "Python любит вас и хочет, чтобы вы были счастливы". И это все хорошо и хорошо, если вы уже знаете основы, но если вы хотите учиться, последнее, что вы хотите, это язык, который делает всю работу за вас.

Вы узнаете, что очень быстро, но не почему, а затем, когда что-то пойдет не так, (и это будет в конечном итоге в любом нетривиальном проекте), вы останетесь без понятия, что происходит или почему.