1. Requerimientos Mínimos
El unico requerimiento para realizar este curso es manejar algún lenguaje de
Programación aunque este curso se tomara como lenguaje Python, por cuestiones varias,
principalmente evitar problemas con las diferentes versiones las version de python
recomendada es la 2.6.x, omito la version 3.0 por encontrarse en desarrollo y no estar
adoptada como estandar y la version 2.7 esta en alfa todavia.
Requerimientos Opcionales
- Conocimientos sobre matemática y física
- Saber manejar alguna herramienta de dibujo tales como PhotoShop, Gimp, etc.
Objetivos del Curso
- Aprender los conceptos necesarios sobre el desarrollo de Juegos
- Aprender a manejarse en un Espacio de trabajo
- Crear un Video Juego Basándose el la Programación orientada a Objectos
- Aprender a Usar la Librería PyGame
- Conocer los conceptos basicos sobre Inteligencia Artificial Aplicada a los Videos Juegos
Creando Nuestro Espacio de Trabajo
Lo primero que debes aprender al empezar un proyecto medianamente grande
es ser organizado, y créeme: cuesta mucho aprender a serlo. Yo te puedo dar algunos
consejos, no hay problema, pero tú debes continuar y hacer del orden tu forma de vivir por lo
menos en la programación porque ante todo te permitirá mantener en un lugar seguro todos
los activos de tu proyecto, fáciles de ubicar, fáciles de rehusar, fáciles de arreglar, en general,
fáciles de mantener.
Estos algunos de los pasos que yo te recomiendo y que también seguiré en mi
proyecto de juego, así también estarán ubicados los códigos y encabezados de mi
proyecto. Esta organización se puede dar como una especie de árbol comúnmente
conocido como directorio. Por ejemplo,
El directorio raíz de nuestro proyecto puede estar en cualquier parte de nuestro disco
duro o disco de red. Además dentro del directorio códigos puede considerarse una sub-
clasificación entre las versiones de nuestro proyecto, por ejemplo la versión 0.1, versión 0.2 ,
2. etc.
Otra recomendación muy útil y no solo para programar juegos es saber manejar algun
sistema de control de versión o CVS tales como Mercurial o Baazar, lo cual nos ayudara tanto
en el desarrollo de Juegos como de proyectos de desarrollo de Software, sobre la metodologia
de desarrollo hay varias, yo no me centrare en ninguna
Estableciendo un estandar en el desarrollo
Es bueno siempre establecer un estándar a través del desarrollo, esto quiere
decir que se debe explicitar cuales son los formatos de archivo, cuales son las
extensiones de cada tipo, cuales son las bibliotecas que se usarán, cuales son las
opciones de compilación, que no se permitirá, etc.
Todo esto sirve cuando se trabaja con muchas personas, un grupo de programadores
sobre un mismo proyecto. Como hacer que un programador no se intrometa en mi código y
como yo no me intrometo en su código o en la parte del proyecto que el está actualmente
desarrollando.
En Internet hay muy buenos artículos sobre como comentar, indentar y
documentar nuestro código, nuestras clases o en un futuro nuestras propias bibliotecas
de desarrollo.
Estableciendo los requerimientos de nuestro proyecto
Antes de empezar a escribir código es necesario establecer que es lo que queremos
hacer, A simple vista puede parecer una pregunta sencilla, pero muchos de los que han
programado y están empezando recién a crear su juego se encuentran ante un gran abanico
de posibilidades de desarrollo de entre las cuales son muy pocas las que parecen desechables,
es decir, queremos que nuestro juego tenga todas las características, todos los modos de
juego, todos géneros, ocupe todos lo periféricos, etc. Sería mucho mejor establecer un
objetivo final, lo mas simple es crear bocetos de lo que queremos que nuestro juego haga.
Convenciones sobre el Codigo Fuente
En si esto se refiere a la manera de escribir codigo fuente, en este curso se usaran
generalmente las convenciones para escritura de codigo fuente en Python. Algunas de ellas
son:
Formateo de Código
Identacion:
Usar 4 espacios, nunca mesclar tabulaciones con espacios.
Tamaño maximo de linea:
Limita todas las líneas de codigo a un máximo de 79 caracteres, las de documentacion a
72 caracteres. La forma preferida de dividir líneas largas es utilizar característica de Python de
continuar las líneas de forma implícita dentro de paréntesis, otra forma mas elegantes es usar
una barra invertida. Asegurate de indentar la línea siguiente de forma apropiada. Algunos
ejemplos:
class Rectangle(Blob):
def __init__(self, width, height,
color='black', emphasis=None, highlight=0):
if width == 0 and height == 0 and
color == 'red' and emphasis == 'strong' or
3. highlight > 100:
raise ValueError("sorry, you lose")
if width == 0 and height == 0 and (color == 'red' or
emphasis is None):
raise ValueError("I don't think so")
Blob.__init__(self, width, height,
color, emphasis, highlight)
Líneas en blanco:
Separa las funciones no anidadas y las definiciones de clases con dos líneas en blanco.
Las definiciones de métodos dentro de una misma clase se separan con una línea en blanco.
Codificación de Caracteres:
El código de la distribución base de Python siempre debería utilizar las codificaciones
ASCII o Latin-1 (también conocida como ISO-8859-1). Para Python 3.0 y superiores, se
recomienda UTF-8 en lugar de Latin-1.
Comentarios:
Los comentarios que contradicen el código son peores que no tener ningún comentario.
¡Manten siempre como prioridad el mantener los comentarios actualizados cuando cambies el
código!
Los comentarios deberían ser frases completas. Si un comentario es una frase o
sentencia, la primera palabra debería estar en mayúsculas, a menos que sea un
identificador que comience con una letra en minúsculas (¡nunca alteres el identificador
sustituyendo mayúsculas o minúsculas!).
Si un comentario es corto, se puede omitir el punto al final. Los comentarios de bloque
generalmente consisten en uno o más párrafos construidos con frases completas, y cada frase
debería terminar con un punto.
Nota: esto es un pequeño resumen de la guía de estilo de código, Para mas info véase:
[1] PEP 7, Guía de Estilo para Código C, Guido van Rossum
[2] http://www.python.org/doc/essays/styleguide.html
[3] PEP 257, Convenciones para Cadenas de Documentación, Goodger, Guido van Rossum
[4] http://www.wikipedia.com/wiki/CamelCase
[5] Guía de estilo de GNU Mailman de Barry http://barry.warsaw.us/software/STYLEGUIDE.txt
[6] PEP 20, El Zen de Python
[7] PEP 328, Imports: Multi-Line and Absolute/Relative