Created
October 27, 2012 22:50
-
-
Save slezica/3966745 to your computer and use it in GitHub Desktop.
ejemplo got
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# ============================================================================ # | |
# Bienvenido al país de Python! Acá todos hablan python, idioma del que vos por | |
# ahí no sabés nada. Pero no te preocupes: con esta guía vas a dominar las | |
# frases más comunes en un toque. | |
# Lo primero que tenés que entender es que las frases que empiezan con un '#' | |
# (numeral) son totalmente ignoradas en python. O sea que esta conversación que | |
# estamos teniendo es completamente privada: nadie en Python se está enterando. | |
# Lo segundo que es importante entender por ahora, ya lo entendimos hace banda! | |
# Te acordás del mundo de las Ideas de Platón? Los objetos de la realidad son | |
# cada uno algo diferente e imperfecto, pero nosotros sabemos cómo interactuar | |
# con ellos porque estuvimos expuestos alas Ideas. Si está el objeto silla (cada | |
# silla es diferente), está la Idea de Silla, que uno tiene más o menos calada y | |
# por eso reconoce una silla no importa cómo se vea. | |
# Las Ideas se python se llaman Clases, y las objetos, bueno, objetos. Las | |
# Clases se escriben en mayúscula. Todo lo demás no. | |
# Acá se aprende por el ejemplo porque no voy a tipear tanto. Vamos directo a | |
# ver nuestras primeras líneas de python: | |
class User(Entity): | |
# Opa. Ya pasó algo acá. Acabamos de decidir que en nuestro mundo existe una | |
# Clase de objetos que se llama User, y que "extiende de" Entity. Esto es como | |
# decir que la Idea de Pelota de Rugby extiende de la Idea de Pelota. Una pelota | |
# de rugby "es una" pelota, y un user "es una" entity. | |
first_name = SmallTextField() | |
last_name = SmallTextField() | |
# Estas dos líneas de arriba dicen que todo user (objeto tipo User) va a tener | |
# un campo first_name cuya Clase es SmallTextField, y lo propio con last_name. | |
# Los SmallTextField bancan hasta 32 caracteres de texto. | |
credentials = Credentials() | |
# La Clase Credentials dice que credentials está compuesta por un email de Clase | |
# EmailField, y una password encriptada (de Clase misteriosa, para nosotros). | |
# Y con eso terminamos de describir la Clase User. Felicidades! Ahora ya tenemos | |
# usuarios en el sistema. | |
# Vamos a pasar a describir las Clases de cosas que hay en el juego. Esto lo | |
# vamos a encarar "bottom-up", es decir, de lo chiquito a lo grande. La Clase | |
# más boluda que se me ocurre es House: | |
class House(Entity): | |
name = SmallTextField() | |
player = referenceTo(User, null = True) | |
# Palabra nueva: referenceTo. Por eso el User lo definimos antes, para poder | |
# decir ahora que cada House *puede tener* asociado un User. El "puede tener" | |
# está expresado via "null = True", "esta referencia puede ser nula". | |
class Province(Entity): | |
owner = referenceTo(House) | |
# Acá no aclaramos null nada. Si no decimos nada, null es False: o sea que | |
# la referencia SIEMPRE va a existir. TODO objeto Province TIENE una House | |
# asociada via "owner". SIEMPRE. Es importante saber eso. | |
name = SmallTextField() | |
size = oneOf('town', 'fort', 'city', 'citadel') | |
# Nueva palabra: oneOf. Dice que size va a ser una de esas cosas. | |
# Confío en que lo siguiente se entiende solo: | |
workers = NumberField() | |
farmers = NumberField() | |
merchants = NumberField() | |
gold = NumberField() | |
food = NumberField() | |
metal = NumberField() | |
unrest = NumberField() # rebelión, nombre más corto | |
bandits = NumberField() | |
famine = NumberField() | |
intel = NumberField() # contra-espionaje, más corto | |
defence = NumberField() | |
av_arms = NumberField() | |
av_armor = NumberField() | |
av_forges = NumberField() | |
action = oneOf('construyendo X', 'construyendo Y', 'construyendo Z') | |
# Yeah! |
Alguna manera de comentar sobre una línea específica? (más allá de decir: "#24: hay una lista de classes en algún lado?")
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Interesante. Test.