Programar Juegos Arcade
con Python y Pygame

Antes de empezar...

¿Estás aquí porque quieres crear tus propios juegos? Excelente! Aquí tienes algunos vídeos creados por otros estudiantes que han finalizado este curso:

Vídeo: Primavera 2014 Game Projects
Vídeo: Otoño 2013 Game Projects
Vídeo: Otoño 2012 Game Projects
Vídeo: Primavera 2012 Game Projects

Esta introducción consta de dos partes:

  1. Preparar tu ordenador para que puedas escribir los juegos.
  2. Profesiones y perspectivas en el campo de la tecnología.

0.1 Instalando y Arrancando Python

Para empezar, necesitamos instalar dos programas, Python y Pygame. Python es el lenguaje de ordenador con el que programaremos y Pygame es una biblioteca de comandos que nos ayudarán a que escribir juegos sea algo más fácil de conseguir.

0.1.1 Instalación en Windows

Vídeo: Instalamos Python y Pygame en Windows

Puedes saltarte este paso si en tu ordenador ya están instalados Python y Pygame. Pero si no es así y tienes que instalarlos en tu ordenador Windows, no te preocupes, es muy fácil.

  1. Ejecuta el siguiente instalador de Python:
    ProgramArcadeGames.com/python-3.4.3.msi
  2. Ejecuta el siguiente instalador de Pygame:
    ProgramArcadeGames.com/pygame-1.9.2a0.win32-py3.4.msi

Una vez que todo está instalado, arranca Python a través del Integrated Development Environment (IDLE) como se muestra en la Figura 0.1

fig.starting_python_idle
Figure 0.1: Arrancamos Python

El archivo original que te hemos proporcionado, lo hemos descargado de la página oficial de descargas de Python:
http://www.python.org/download/
...y el archivo Pygame original de:
https://bitbucket.org/pygame/pygame/downloads

Observación: Existen muchas versiones de Python y Pygame. Puede ser complicado escoger las versiones adecuadas y que luego trabajen juntas. Yo recomiendo usar los enlaces de ProgramArcadeGames.com en lugar de descargarlos de sus websites oficiales.

Si estás obligada a utilizar una versión distinta de Python de las que están en la lista, puedes encontrar una versión compatible de Pygame en este website:
www.lfd.uci.edu/~gohlke/pythonlibs/#pygame

0.1.2 Instalación en Mac

Video: Instalamos Python y Pygame en OS X

La instalación sobre Mac es un poco más liosa, pero no hay nada que no se pueda conseguir. Estos son los pasos:

  1. Abre un terminal. Haz click sobre “Buscador” luego sobre “Aplicaciones” y por último sobre “Utilidades.”
    fig.xcode_1
    Figure 0.2: Iniciando un terminal
  2. Haz doble click sobre “Terminal”
    fig.xcode_2
    Figure 0.3: Iniciando un terminal
  3. Podemos enviarle comandos al Mac a la “vieja usanza”, escribiéndolos directamente, en lugar de pinchar y hacer click. Vamos a empezar escribiendo un comando que a lo mejor no lo tienes aún. Este comando es gcc. Escríbleo y pulsa la tecla Enter/Intro. Tu Mac detectará que no tienes este comando y te preguntará si quieres que él lo instale por tí. Avanza y haz lo siguiente.(Si en lugar de eso te dice error: no se ha encontrado el archivo, es que ya lo tienes instalado, por lo tanto, avanza hasta el paso siguiente)
    fig.xcode_3
    Figure 0.4: Iniciando un terminal
  4. Instalar XQuartz desde:
    http://xquartz.macosforge.org
  5. Ahora, copia y pega, línea por línea, lo siguiente sobre tu terminal:
    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    sudo brew doctor
    brew update
    brew install python3
    brew install sdl sdl_image sdl_mixer sdl_ttf portmidi mercurial
    brew install libogg libvorbis
    brew install sdl_mixer --with-libvorbis
    
  6. Si la respuesta del terminal a la última línea dice 'sdl_mixer already installed’, Escribe entonces:
    brew reinstall sdl_mixer -—with-libvorbis
    
  7. Si quieres tener soporte para MP3's y películas, puedes intentar añadir smpeg. Por mi parte he encontrado que la ayuda es un poco irregular, por lo que yo te recomendaría que te saltases esta parte y usaras en su lugar archivos Ogg Vorbis. Pero si aún así quieres intentarlo, usa estos comandos:
    brew install smpeg
    
  8. En este momento ya tienes todas las bibliotecas necesarias. Por último vamos a instalar Pygame. Sustituye TuNombre por el de tu cuenta de usuario. Si no sabes el nombre de tu cuenta, escribe ls /Users para que puedas ver todas las cuentas de usuario que existen en tu ordenador.
    cd /Users/TuNombre/Descargas
    hg clone https://bitbucket.org/pygame/pygame
    cd pygame
    cd src
    pip3 install /Users/TuNombre/Descargas/pygame
    

En este momento, Pygame y Python deberían estar listos y ejecutándose en tu sistema. Python no viene con una aplicación para editar archivos, por ello necesitarás descargarte un IDE como el gratuito Wing 101 IDE.

Es probable que luego de instalar Wing (o el que sea), tu IDE de Python apunte a la versión que por defecto viene instalada de Python en tu Mac, no a la que acabas de instalarte. Por eso, en el terminal, escribe:

which python3

Probablemente obtengas algo como /usr/local/bin/python3, o quizás, otra línea muy larga que contenga la palabra 'Library' en ella. Cópiala del terminal (la línea completa), eso es el “path” hacia tu programa Python. Entonces:

0.1.3 Instalación Unix/Linux

Las distintas distribuciones Unix y similares (Linux) vienen con el paquete Pygame instalado, o la posibilidad de obtenerlo fácilmente. Si lo que quieres es compilarlo desde la fuente, esto es lo que usé para hacerlo sobre Linux Mint:

# Cargamos los paquetes necesarios
sudo apt-get install mercurial libsdl1.2-dev
sudo apt-get install libasound2-doc libglib2.0-doc python3-dev
sudo apt-get install libsdl-ttf2.0-dev  libsdl-image1.2-dev
sudo apt-get install libsdl-mixer1.2-dev libportmidi-dev
sudo apt-get install libavformat-dev libswscale-dev
sudo apt-get install libfreetype6-dev
sudo apt-get install libsmpeg-dev

# Usamos mercurial para clonar el código
hg clone https://bitbucket.org/pygame/pygame

# Preparamos e instalamos
cd pygame
sudo python3 setup.py

El mayor riesgo que corremos con las plataformas UNIX, es que la versión por defecto de Python que viene instalada, puede que pertenezca a la serie 2.x, y que el código de los ejemplos de este libro no pueda ejecutarse. Asegúrate de que estás usando una versión de Python 3.x.

0.1.4 IDE Wing Opcional

Python viene con su propio editor y entorno de trabajo para desarrollar código. Desafortunadamente no es muy bueno. Habitualmente mis estudiantes se encuentran con los siguientes dos tipos de problemas cuando usan el editor por defecto de Python:

Problema 1, cuando trabajamos con varios archivos es difícil llevar la cuenta de todos los que están abiertos. Es fácil olvidarnos de guardar un archivo antes de ejecutar el programa. Cuando esto sucede, el programa se ejecuta con el código antiguo en lugar de hacerlo con el nuevo, algo que produce una verdadera confusión.

Problema 2, si el error se produce en un programa que muestra gráficos, Python se “colgará”. Una vez que esto sucede, es difícil cerrarlo. Además, el mensaje de error que describe el problema del por qué se colgó, estará generalmente sepultado entre muchas líneas siendo difícil su ubicación. Observa la Figura 0.5.

fig.bad_idle
Figure 0.5: Cuelgue de un Programa Python en IDLE

Con el editor Wing resolvemos el problema 1 usando pestañas para cada archivo. También te advertirá que guardes todos los archivos antes de ejecutar el programa. En el caso del problema 2, el depurador de Wing no permitirá que el programa se cuelgue, antes bien, nos llevará inmediatamente a la línea de código donde se ha producido el error. Observa la Figura 0.6.

fig.good_wing
Figure 0.6: Cuelgue de un Programa Python en el IDE Wing

Por lo tanto, aunque implica instalar un tercer programa, yo recomiendo usar el editor Wing. Existe una versión gratuita llamada “Wing IDE 101” en:
wingware.com/downloads/wingide-101/

La versión de pago está llena de utilidades extras, bonitas y llamativas, aunque no hay ninguna necesidad de optar por ella. Tiene utilidades tales como el autocompletado del nombre de las variables. Si te sobra algo de dinero probablemente te interese decantarte por la versión de pago.

Suelo emplear, tanto en los vídeos como en el website, el editor por defecto de Python o el editor Wing. Existen muchos otros editores que podemos utilizar también:

Entre ciertos desarrolladores, la discusión sobre “cuál es el mejor editor” tiene un rango similar al de ciertos grupos que discuten sobre “cuál es la verdadera fe.” Es mejor que escojas el que tú prefieras y evites discutir este tópico con otra gente.

0.2 Visualizar Extensiones de Archivo

Es una muy buena idea cambiar la configuración de tu Windows para que te permita visualizar las extensiones de archivo. Habitualmente, un archivo puede tener un nombre como Informe del Libro.docx, donde la extensión .docx le dice al ordenador de que se trata de un documento compatible con Microsoft Word. Por defecto, Windows oculta la extensión .docx si ya existe un programa instalado que lo maneje. Si estás programando, esto de ocultar esa parte del archivo puede ser molesto.

Vídeo: Cómo mostrar las extensiones de archivo

Para mostrar las extensiones de archivo en Windows 7, abre el Panel de Control de tu ordenador. Luego busca “Opciones de Archivo.” Haz click sobre la pestaña “Ver” y desmarca la opción “Ocultar extensiones para tipos de archivos conocidos.”

En Windows 8 trae a primer plano el Explorador de Archivos pulsando las teclas Windows-E. Luego haz click sobre la pestaña “Ver” y asegúrate de marcar la casilla “Extensiones de nombre de archivos.”

0.3 Aprendamos a Crear Juegos y Que Nos Paguen Por Ello

Tan pronto como empieces a programar, verás que se parece mucho a eso que llaman trabajar. Todos somos conscientes que lo que nos gustaría es empezar a cosechar dinero con juegos como World of Warcraft, Eve Online o cualquier otro, ¿no es cierto? ¿Entonces, para qué programar? ¿Por qué alguien saldría a hacer algo como eso?

fig.money
Figure 0.7: Sacos de dinero

¿Aprender cómo crear juegos y que me paguen por eso? Mira, yo no te pagaré por eso, pero si aprendes a programar, existe mucha gente dispuesta a pagarte por hacerlo. Estas son las claves:

  1. Aprende a programar juegos.
  2. Disfruta haciendo tus propios juegos.
  3. Escoge la oferta de trabajo que más te guste.
  4. Empieza a ganar dinero.

¡Un momento, espera, no! ¿En ese orden?

Piénsalo. Tú ya sabes jugar, y cualquiera puede hacerlo. Pero ser un as en los videojuegos no es precisamente una gran hazaña, ni un gran logro existencial, no? En cambio, tú puedes aprender a crear juegos. Esto sí que interesa a la gente.

Luego, mientras te dedicas a estudiar cómo programar juegos, diles a tus padres o colegas que estás estudiando Informática ¿A que suena mucho mejor?

0.3.1 ¿Por Qué Estudiar Informática?

Volvamos al tema monetario. De acuerdo con el Informe Salarial de abril del 2014 de la National Association of Colleges and Employers (NACE), las ingenierías son las disciplinas mejor pagadas, y las ciencias computacionales las segundas.

Salario Promedio Por Disciplina
Título Universitario Oferta Salarial Promedio
Comercio $53,901
Ciencias de la Comunicación $43,924
Ciencias Computacionales $61,741
Enseñanza $40,863
Ingenierías $62,719
Ciencias de la Salud $51,541
Humanidades & Ciencias Sociales $38,365
Matemáticas & Ciencias $43,414

(Estudio salarial de la NACE, datos de abril 2014.)

Mientras aprendes a programar juegos, podrías estar a la vez estudiando para obtener el título en una de las cuatro carreras universitarias de cuatro años mejor pagadas. Y siendo honestos, los grados en ingeniería suelen tardar cinco años. Por eso, la Informática es una muy buena apuesta como carrera universitaria.

¿Por qué se les paga tan bien a los estudiantes de informática? Pues porque hay una gran demanda, y pocos estudiantes en comparación. Observa la Figura 0.8 y la Figura 0.9.

fig.code_graphics1
Figure 0.8: Graduados en STEM(Science,Technology,Engineering,Maths)/Informática vs. Empleos. Fuente: code.org
fig.code_graphics2
Figure 0.9: Perspectivas de Empleo en Informática. Fuente: code.org

¿Y qué tal una carrera escolar de dos años en programación? Después de todo, dos años de escuela es más barato que cuatro de universidad. Mucho más barato. Pero antes mira la siguiente tabla. Analiza estos datos sobre “Salario Promedio según Nivel Educativo” antes de decidirte por una carrera de dos años:

Salario Promedio según Nivel Educativo
Vocacional/Módulo (2 años)$65,408
Secundaria$75,701
Instituto$79,370
Militar$84,131
Graduado Universitario (4 años)$85,815
Grado de Máster$97,811
Grado de Doctor$113,600

De acuerdo con lo datos del estudio de Dice.com, una persona con una carrera tecnológica de dos años gana $20,000 menos que una persona graduada en una carrera de cuatro. Es más, lo tienen peor que un graduado de Instituto. Por eso, lánzate y haz una carrera universitaria y olvídate de un Módulo de dos años.

Este análisis se ha hecho en función al Estudio Salarial Técnico de 2013-2012 de Dice. Observa que el salario de la lista no es el promedio salarial inicial. Los números representan el salario promedio de todos los trabajadores sin importar el grado de experiencia. Por supuesto, opino que el Simpson College posee el mejor departamento de Informática del medio oeste:
http://simpson.edu/computer-science

0.3.2 Sacar El Mejor Provecho De Este Curso

Los mejores jugadores de béisbol practican. También lo hacen los mejores programadores.

¿Esperas que tu tiempo aquí valga la pena? ¡Pues responde a las preguntas de cada capítulo! No te las saltes, son fundamentales para comprender todo el material.

¡Haz los talleres! Son más importantes aún. Aprender sólo leyendo el material es igual de útil que intentar ser una estrella del baloncesto leyendo solo un libro.

¡Practica! Es posible que veas otra gente que no necesita practicar. No parece justo. O, a lo mejor, eres más listo que otros, pero ellos empezaron antes que tú. Tampoco parece justo. Pero así es la vida. Acostúmbrate. Practica.

¿Te vas a tomar en serio este curso? ¡Bien! ¿Sabes que puedes ahorrarte mucho tiempo, y copiar las respuestas y los talleres de Internet? ¡Claro!, de la misma forma, también puedes sacarte el carnet del gimnasio y pedirle a otra persona que haga los ejercicios por ti. Tiene el mismo sentido.

¿En serio, por qué demonios estás pensando en copiar de otro? Si no estás dispuesto a trabajar, sería mejor que te fueras de este curso y empezaras a rellenar solicitudes de empleo en McDonald's.

Si leer mucho no es lo tuyo, la mayor parte de la información la tienes disponible en forma de vídeos (en inglés) Puedes saltarte enteramente el texto e irte directamente a los vídeos. Puedes hallarlos en la siguiente playlist de YouTube:
http://www.youtube.com/playlist?list=PL1D91F4E6E79E73E1
Lo que sí no puedes es aprender sin hacer los ejercicios. Primero lee, luego pregunta. Haz los talleres, luego pregunta. Haz los cuestionarios, luego pregunta. Mira los vídeos. Y por último, pregúntale a tu profesora.

0.3.3 Envía Tus Comentarios

Este es el libro que empleo para enseñar en mi clase del Simpson College:
Computer Science 150 Fundamentals of Computing I
Existe una versión impresa en Amazon y en Barnes and Noble. También una versión online en:
ProgramArcadeGames.com
El objetivo, tanto del libro como del website, ejercicios, talleres y vídeos, es enseñar conceptos básicos de informática y conseguir que los estudiantes programen sus propios juegos tan pronto como sea posible.

¿Te han gustado los recursos web?
Mándame un mensaje!

Si los usas para estudiar por tu cuenta o para otra clase, por favor, mándame un mensaje. Cuanta más gente use estos recursos, más esfuerzos pondré en mejorarlos.

Unos cuantos institutos me han comentado que usan estos materiales. Si perteneces a alguno de ellos, y te han gustado, considera matricularte en el Computer Science Department del Simpson College. Nos encantaría tener la oportunidad de poder trabajar contigo. Puedes contactar conmigo personalmente o con admisión para mayor información.

Si observas cualquier error u omisión en este libro, por favor envíame un e-mail. Quiero que esto tenga el mejor contenido y calidad posibles.

Dr. Paul Vincent Craven
Department Head, Computer Science Department
Simpson College, Indianola, Iowa, 50125 USA
paul.craven@simpson.edu


You are not logged in. Log in here and track your progress.