c++ - programar - ¿Python y pygame son una buena forma de aprender SDL?
juegos en python codigo (9)
No consideraría Python (o cualquier lenguaje administrado o interpretado, para el caso) una buena forma de aprender cualquier tarea compleja, ya que aísla demasiado al programador del funcionamiento del sistema. Como dijo un amigo mío, "Python te ama y quiere que seas feliz". Y eso está muy bien si ya conoces los fundamentos, pero si quieres aprender , lo último que quieres es un lenguaje que haga todo el trabajo por ti.
Aprenderá lo que muy rápidamente, pero no el por qué, y luego, cuando algo vaya mal, (y eventualmente, en cualquier proyecto no trivial), se quedará sin idea de lo que está sucediendo o por qué.
Si quiero pasar a C ++ y SDL en el futuro, ¿Python y pygame son una buena forma de aprender SDL?
Para su propósito, PySDL2 es mejor que pygame. Importa SDL2 API casi directamente.
Podrías probar Pyglet si estás apuntando a OpenGL. Es una biblioteca mucho mejor pensada que lo que es el pygame.
Pero luego, si desea pasar a C ++ y SDL en el futuro, hágalo ahora. De esa forma, realmente aprendes SDL. Pero antes de hacer algo tan irresponsable, sería una buena idea comprobar primero en pyglet . Solo por diseñar sus aplicaciones correctamente en C ++ también, sin importar qué tan malas sean sus bibliotecas.
Por supuesto. Puedes escribir un juego sdl o herramientas en menos tiempo.
Puede comenzar con este código que muestra los datos / chimp.bmp en una pantalla de 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())
Cuando esté familiarizado con los objetos SDL, puede pasar fácilmente a C ++ (si lo desea de nuevo: p Pygame es rápido y puede hacer un juego complejo con él).
Puedes aprender algunas técnicas, formas de implementar la lógica del juego, etc., en un entorno basado en SDL, pero después de pasar a C ++ / SDL deberás usar las funciones SDL directamente, las funciones auxiliares / objetos de pyGame serán completamente útiles.
Python + PyGame es una gran idea para aprender SDL.
Escribí un juego algo popular de esa manera . Python / PyGame parece mucho más avanzado que los enlaces SDL a cualquier otro lenguaje, y una gran ventaja en comparación con C ++ es que no tiene que compilar código, y con algunos simples ataques incluso puede modificar un programa en ejecución, y ver los comentarios en vivo. Hace una gran diferencia, como usar un programa de gráficos vectoriales GUI versus escribir SVG en un editor de texto. Desafortunadamente no se obtiene esto de la caja, porque necesita adaptar un poco su programa para verlo.
En cuanto a otras ventajas de PyGame, jrpg se ejecutó con cambios muy pequeños en Linux, Windows y OSX. Tuve que hacer algunos ajustes al cambio de modo de pantalla completa, y el doble buffer ya que había algunas diferencias entre los sistemas operativos, pero nunca fue necesaria ninguna recompilación. Si tiene algún problema, puede obtener un buen seguimiento de pila y depurar sus problemas en tiempo real, eso no es posible con C ++ una vez que se produce una corrupción de memoria o una segfault.
Realmente no sé cuán fácil o difícil sería mezclar C ++ y Python para tus juegos SDL. Creo que no puede ser demasiado difícil, ya que PyGame es un contenedor bastante sencillo pero muy bien hecho para SDL, y se supone que la mezcla de Python / C ++ es bastante fácil.
Python no evitará que aprendas diseño y eso es lo más importante para aprender OMI, estoy haciendo un clon de smash bros con pygame y aprendí mucho en diseño. Y sin embargo, aprenderás a no escribir demasiado código subóptimo también, Python tiene ingeniosos y hermosos hacks también.
pygame abstrae bastante la interfaz SDL, por lo tanto, no creo que haya mucha ventaja transferida.
Sí . Si Python es mucho más natural para usted que C ++, podría ser una buena idea aprender pygame primero. Tendrá que realizar un proceso de traducción al migrar a SDL y C, pero debería ser un mapeo más o menos uno a uno.