1. Conociendo las herramientas con las que daremos vida a nuestros videojuegos

Se trabajará con el lenguaje de programación Python y el framework para desarrollo de videojuegos Pilas Engine: se conocerán las carácteristicas, ventajas y desventajas de las herramientas. Se definirá el flujo de trabajo.


Python


In [1]:
import this


The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

¿Qué es?

Python es un lenguaje de programación creado por Guido van Rossum a principios de los años 90 cuyo nombre está inspirado en el grupo de cómicos ingleses “Monty Python”. Su sintaxis es limpia y favorece un código legible. Se trata de un lenguaje interpretado o de script, con tipado dinámico, fuertemente tipado, multiplataforma y orientado a objetos. [1]

¿Por qué Python?

Su sintaxis simple, clara y sencilla; el tipado dinámico, el gestor de memoria, la gran cantidad de librerías disponibles y la potencia del lenguaje, entre otros, hacen que desarrollar una aplicación en Python sea sencillo, muy rápido y, lo que es más importante, divertido

La sintaxis de Python es tan sencilla y cercana al lenguaje natural que los programas elaborados en Python parecen pseudocódigo. Por este motivo se trata además de uno de los mejores lenguajes para comenzar a programar. [1]

<br >

Etiquetas o nombres(variables)


In [2]:
# Esto es un comentario, no se ejecuta
# Hey estoy dando u curso :p

In [3]:
nombre = 'Wolowitz' # String o cadena de texto
print type(nombre)
print nombre


<type 'str'>
Wolowitz

In [4]:
edad = 25 # numero entero
print type(edad)
print edad


<type 'int'>
25

In [5]:
estatura = 1.60 # numero flotante
print type(estatura)
print estatura


<type 'float'>
1.6

In [6]:
tiene_doctorado = False # Booleano
print type(tiene_doctorado)
print tiene_doctorado


<type 'bool'>
False

In [7]:
astronauta = True # Booleano
print type(astronauta)
print astronauta


<type 'bool'>
True

In [8]:
amigos = ['Leonard', 'Rajesh', 'Sheldon'] # lista
amigos.append("Pedro") # Append funciona para agregar más valores
amigos.append(2)
del amigos[1] # Borramos el elemento en la posición numero 1, el indice empieza por cero
print type(amigos)
print amigos


<type 'list'>
['Leonard', 'Sheldon', 'Pedro', 2]

In [9]:
amigas = ('Penny', 'Amy') # tupla
print amigas
print type(amigas)
print amigas


('Penny', 'Amy')
<type 'tuple'>
('Penny', 'Amy')

In [10]:
mi_nombre = raw_input('Cual es tu nombre? ')
print "\nHola "+ mi_nombre


Cual es tu nombre? Pedro

Hola Pedro

In [11]:
mi_edad = raw_input('Cual es tu edad? ')
print "Ya veo que tienes " + str(mi_edad) + " años" # Especificamos el tipo de dato de mi_edad para poder sumarlo


Cual es tu edad? 20
Ya veo que tienes 20 años

<br >

Funciones


In [12]:
def cenar(quien, con_quienes):
    '''Imprimir quien está cenando y con quien'''
    print quien + " esta cenando con " + str(con_quienes)

In [13]:
cenar(nombre, amigos)


Wolowitz esta cenando con ['Leonard', 'Sheldon', 'Pedro', 2]

In [14]:
cenar(nombre, amigas)


Wolowitz esta cenando con ('Penny', 'Amy')

In [15]:
def sumar_edad(edad_actual, anios):
    '''Sumar edad actual y anios'''
    print "Edad actual: {edad} mas {anios} años, serán: {suma_edad} años".format(
            edad=edad_actual, anios=anios, suma_edad=edad_actual + anios)

In [16]:
sumar_edad(edad, 10)


Edad actual: 25 mas 10 años, serán: 35 años

In [17]:
sumar_edad(20, 5)


Edad actual: 20 mas 5 años, serán: 25 años

<br >

Comparaciones y control de flujo


In [18]:
# edad = 25
# nombre = 'Wolowitz'

In [19]:
edad > 18


Out[19]:
True

In [20]:
edad < 18


Out[20]:
False

In [21]:
edad >= 19


Out[21]:
True

In [22]:
nombre == 'Wolowitz'


Out[22]:
True

In [23]:
nombre == 'Sheldon'


Out[23]:
False

In [24]:
nombre != 'Sheldon'


Out[24]:
True

In [25]:
not nombre == 'Sheldon'


Out[25]:
True

In [26]:
"Amy" in amigas


Out[26]:
True

In [27]:
if edad > 18:
    print "Hey, es mayor de edad"


Hey, es mayor de edad

In [ ]:
if nombre == 'Sheldon':
    print "Hey, se llama Sheldon"
else:
    print "Se llama " + str(nombre)


Se llama Wolowitz

<br >

Bucles

Bucle 'for'


In [ ]:
for numero in range(10):
    print numero

In [ ]:
range(10)

In [ ]:
for numero in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
    print numero

In [ ]:
for amigo in amigos:
    print amigo

In [ ]:
for amiga in amigas:
    print amiga

In [ ]:
for numero in range(5):
    sumar_edad(numero, 10)

Bucle 'while'


In [ ]:
# Aumentando edad
edad_nueva = edad
print "Edad antes del bucle while: {edad}".format(edad=edad_nueva)

while edad_nueva < 35:
    edad_nueva += 1

print "Edad después del bucle while: {edad}".format(edad=edad_nueva)

In [ ]:
# Ciclo de vida
edad_nueva = edad
print edad_nueva

vivo = True
while vivo:
    edad_nueva += 1
    if edad_nueva == 80:
        print "Tiene 80 años: Muere"
        vivo = False

print edad_nueva

<br >

Clases y objetos

La Programación Orientada a Objetos (POO u OOP según sus siglas en inglés) es un paradigma de programación en el que los conceptos del mundo real relevantes para nuestro problema se modelan a través de clases y objetos, y en el que nuestro programa consiste en una serie de interacciones entre estos objetos.[1]

Objeto

Un objeto es una entidad que agrupa un estado y una funcionalidad relacionadas. El estado del objeto se define a través de variables llamadas atributos, mientras que la funcionalidad se modela a través de funciones a las que se les conoce con el nombre de métodos del objeto.[1]

Clase

Una clase es una plantilla genérica a partir de la cuál instanciar los objetos; plantilla que es la que define qué atributos y métodos tendrán los objetos de esa clase. [1]


In [ ]:
class Persona:
    def __init__(self):
        self.nombre = ""
        self.edad = None
        self.estatura = None

In [ ]:
persona1 = Persona() # Creamos el objeto Persona

print persona1

In [ ]:
print persona1.nombre
print persona1.edad
print persona1.estatura

In [ ]:
# Modificar atributos del objeto
persona1.nombre = "Wolowitz"
persona1.edad = 25
persona1.estatura = 1.65

print persona1.nombre
print persona1.edad
print persona1.estatura

Descarga

Documentación Oficial

Documentación-guía rápida

Aprende más:


Irving Rodríguez
irving [dot] prog [at] gmail [dot] com

Referencias

[1] Python para todos, Raúl González Duque.