[asadetris] 3 new revisions pushed by hugoruscitti on 2010-05-23 20:16 GMT

2 views
Skip to first unread message

codesite...@google.com

unread,
May 23, 2010, 4:17:58 PM5/23/10
to losersjue...@googlegroups.com
3 new revisions:

Revision: 6514f178e1
Author: Hugo Ruscitti <hugoru...@gmail.com>
Date: Sun May 23 10:58:24 2010
Log: colocando una imagen de fondo en la escena de creditos.
http://code.google.com/p/asadetris/source/detail?r=6514f178e1

Revision: 044c360990
Author: Hugo Ruscitti <hugoru...@gmail.com>
Date: Sun May 23 11:12:11 2010
Log: creando parametro de configuracion para que la rotacion animada de
pie...
http://code.google.com/p/asadetris/source/detail?r=044c360990

Revision: 8aada7c97e
Author: Hugo Ruscitti <hugoru...@gmail.com>
Date: Sun May 23 13:05:52 2010
Log: mejorando la escena de juego, colocando mensajes al inicio de la
parti...
http://code.google.com/p/asadetris/source/detail?r=8aada7c97e

==============================================================================
Revision: 6514f178e1
Author: Hugo Ruscitti <hugoru...@gmail.com>
Date: Sun May 23 10:58:24 2010
Log: colocando una imagen de fondo en la escena de creditos.
http://code.google.com/p/asadetris/source/detail?r=6514f178e1

Added:
/images/creditscene/background.png
Deleted:
/images/creditscene/title.png
Modified:
/doc/build/doctrees/alcance.doctree
/doc/build/doctrees/diseno_etapa_1.doctree
/doc/build/doctrees/diseno_etapa_2.doctree
/doc/build/doctrees/diseno_etapa_3.doctree
/doc/build/doctrees/diseno_etapa_4.doctree
/doc/build/doctrees/diseno_etapa_5.doctree
/doc/build/doctrees/documento_de_diseno.doctree
/doc/build/doctrees/environment.pickle
/doc/build/doctrees/estilo.doctree
/doc/build/doctrees/index.doctree
/doc/build/doctrees/integrantes.doctree
/doc/build/doctrees/modules.doctree
/doc/build/doctrees/tareas_y_etapas.doctree
/doc/build/html/_static/basic.css
/doc/build/html/_static/default.css
/doc/build/html/_static/jquery.js
/doc/build/html/_static/searchtools.js
/doc/build/html/alcance.html
/doc/build/html/diseno_etapa_1.html
/doc/build/html/diseno_etapa_2.html
/doc/build/html/diseno_etapa_3.html
/doc/build/html/diseno_etapa_4.html
/doc/build/html/diseno_etapa_5.html
/doc/build/html/documento_de_diseno.html
/doc/build/html/estilo.html
/doc/build/html/genindex.html
/doc/build/html/index.html
/doc/build/html/integrantes.html
/doc/build/html/modules.html
/doc/build/html/search.html
/doc/build/html/searchindex.js
/doc/build/html/tareas_y_etapas.html
/lib/credits_scene.py

=======================================
--- /dev/null
+++ /images/creditscene/background.png Sun May 23 10:58:24 2010
Binary file, no diff available.
=======================================
--- /images/creditscene/title.png Mon Jul 20 19:28:58 2009
+++ /dev/null
Binary file, no diff available.
=======================================
--- /doc/build/doctrees/alcance.doctree Wed Jul 8 21:48:56 2009
+++ /doc/build/doctrees/alcance.doctree Sun May 23 10:58:24 2010
Binary file, no diff available.
=======================================
--- /doc/build/doctrees/diseno_etapa_1.doctree Sat Jul 18 13:34:43 2009
+++ /doc/build/doctrees/diseno_etapa_1.doctree Sun May 23 10:58:24 2010
@@ -1,149 +1,192 @@
-€ (cdocutils.nodes
+€ cdocutils.nodes
document
-q oq }q (U nametypesq }q (X escenas, ampliandoq NX objeto principal:
directorq NX diagrama de clasesq NX. el director no sabe de que vá la
película...q NX escenas, las partes de un juegoq
+q ) q }q (U nametypesq }q (X escenas, ampliandoq NX objeto
principal: directorq NX diagrama de clasesq NX. el director no sabe de
que vá la película...q NX escenas, las partes de un juegoq
NX diseño de la etapa 1q NX objetos y
desacoplamientoq NuU substitution_defsq
}q U parse_messagesq ]q U current_sourceq NU
-decorationq NU autofootnote_startq K U nameidsq }q (h U escenas-ampliandoq h U objeto-principal-directorq h U diagrama-de-clasesq h
U(el-director-no-sabe-de-que-v-la-pel-culaq h
+decorationq NU autofootnote_startq K U nameidsq }q (h U escenas-ampliandoq h U objeto-principal-directorq h U diagrama-de-clasesq h
U)el-director-no-sabe-de-que-va-la-peliculaq h
U
-escenas-las-partes-de-un-juegoq h U dise-o-de-la-etapa-1q h U objetos-y-desacoplamientoq
+escenas-las-partes-de-un-juegoq h U diseno-de-la-etapa-1q h U objetos-y-desacoplamientoq
uU childrenq
]q
-(cdocutils.nodes
+cdocutils.nodes
section
-q oq }q!(U
rawsourceq"U U parentq#h U sourceq$UD/home/hugoruscitti/proyectos/asadetris/doc/source/diseno_etapa_1.rstq%U tagnameq&U sectionq'U
-attributesq(}q)(U dupnamesq*]q+U classesq,]q-U backrefsq.]q/U idsq0]q1h aU namesq2]q3h auU lineq4K U documentq5h h
-]q6((cdocutils.nodes
+q ) q }q!(U rawsourceq"U U parentq#h U sourceq$cdocutils.nodes
+reprunicode
+q%XD /home/hugoruscitti/proyectos/asadetris/doc/source/diseno_etapa_1.rstq&
+ q'}q(bU tagnameq)U sectionq*U
+attributesq+}q,(U dupnamesq-]q.U classesq/]q0U backrefsq1]q2U idsq3]q4h aU namesq5]q6h auU lineq7K U documentq8h h
+]q9(cdocutils.nodes
title
-q7oq8}q9(h"X Diseño de la etapa 1q:h#h
h$h%h&U titleq;h(}q<(h*]q=h,]q>h.]q?h0]q@h2]qAuh4K h5h h
-]qBcdocutils.nodes
+q:) q;}q<(h"X Diseño de la etapa 1q=h#h
h$h'h)U titleq>h+}q?(h-]q@h/]qAh1]qBh3]qCh5]qDuh7K h8h h
+]qEcdocutils.nodes
Text
-qC) qD}qE(h"h:U dataqFX Diseño de la etapa 1qGh#h8ubaub(cdocutils.nodes
+qFX Diseño de la etapa 1qG
+ qH}qI(h"h=h#h;ubaubcdocutils.nodes
paragraph
-qHoqI}qJ(h"X[ Este documento explica parte de las decisiones e ideas que
-definen la estructura del juego.qKh#h h$h%h&U
paragraphqLh(}qM(h*]qNh,]qOh.]qPh0]qQh2]qRuh4K h5h h
-]qShC) qT}qU(h"hKhFX[ Este documento explica parte de las decisiones e
ideas que
-definen la estructura del juego.qVh#hIubaub(hHoqW}qX(h"X• Puede usar el
contenido de este texto para conocer de manera
+qJ) qK}qL(h"X[ Este documento explica parte de las decisiones e ideas que
+definen la estructura del juego.qMh#h h$h'h)U
paragraphqNh+}qO(h-]qPh/]qQh1]qRh3]qSh5]qTuh7K h8h h
+]qUhFX[ Este documento explica parte de las decisiones e ideas que
+definen la estructura del juego.qV
+ qW}qX(h"hMh#hKubaubhJ) qY}qZ(h"X• Puede usar el contenido de este texto
para conocer de manera
sencilla cómo funciona el juego, que componentes tiene y cómo
-se relacionan entre sí.qYh#h
h$h%h&hLh(}qZ(h*]q[h,]q\h.]q]h0]q^h2]q_uh4K h5h h
-]q`hC) qa}qb(h"hYhFX• Puede usar el contenido de este texto para conocer
de manera
+se relacionan entre sí.q[h#h
h$h'h)hNh+}q\(h-]q]h/]q^h1]q_h3]q`h5]qauh7K h8h h
+]qbhFX• Puede usar el contenido de este texto para conocer de manera
sencilla cómo funciona el juego, que componentes tiene y cómo
-se relacionan entre sí.qch#hWubaub(h oqd}qe(h"U h#h
h$h%h&h'h(}qf(h*]qgh,]qhh.]qih0]qjh
-ah2]qkh auh4K
-h5h h
-]ql((h7oqm}qn(h"X Objetos y
desacoplamientoqoh#hdh$h%h&h;h(}qp(h*]qqh,]qrh.]qsh0]qth2]quuh4K
-h5h h
-]qvhC) qw}qx(h"hohFX Objetos y desacoplamientoqyh#hmubaub(hHoqz}q{(h"X
- El juego va a incluir mucha complejidad, necesitamos gestionar eventos,
-dibujar en pantalla, analizar colisiones, puntajes y sonidos.q|
h#hdh$h%h&hLh(}q}(h*]q~h,]q h.]q€h0]q h2]q‚uh4K h5h h
-]qƒhC) q„}q
-(h"h|hFX
- El juego va a incluir mucha complejidad, necesitamos gestionar eventos,
-dibujar en pantalla, analizar colisiones, puntajes y
sonidos.q†h#hzubaub(hHoq‡}qˆ(h"X Esta complejidad se suele resolver en
programación utilizando una
+se relacionan entre sí.qc
+ qd}qe(h"h[h#hYubaubh ) qf}qg(h"U h#h h$h'h)h*h+}qh(h-]qih/]qjh1]qkh3]qlh
+ah5]qmh auh7K
+h8h h
+]qn(h:) qo}qp(h"X Objetos y
desacoplamientoqqh#hfh$h'h)h>h+}qr(h-]qsh/]qth1]quh3]qvh5]qwuh7K
+h8h h
+]qxhFX Objetos y desacoplamientoqy
+ qz}q{(h"hqh#houbaubhJ) q|}q}(h"X
+ El juego va a incluir mucha complejidad, necesitamos gestionar eventos,
+dibujar en pantalla, analizar colisiones, puntajes y
sonidos.q~h#hfh$h'h)hNh+}q (h-]q€h/]q h1]q‚h3]qƒh5]q„uh7K h8h h
+]q
+hFX
+ El juego va a incluir mucha complejidad, necesitamos gestionar eventos,
+dibujar en pantalla, analizar colisiones, puntajes y sonidos.q†
+ q‡}qˆ(h"h~h#h|ubaubhJ) q‰}qŠ(h"X Esta complejidad se suele resolver en
programación utilizando una
estrategia muy simple, que consiste en dividir el sistema completo
en componentes mas pequeños. Es mucho mas previsible y sencillo
-gestionar unidades de funcionalidad pequeñas que
grandes.q‰h#hdh$h%h&hLh(}qŠ(h*]q‹h,]qŒh.]q h0]qŽh2]q uh4K h5h h
-]q hC) q‘}q’(h"h‰hFX Esta complejidad se suele resolver en
programación utilizando una
+gestionar unidades de funcionalidad pequeñas que
grandes.q‹h#hfh$h'h)hNh+}qŒ(h-]q h/]qŽh1]q h3]q h5]q‘uh7K h8h h
+]q’hFX Esta complejidad se suele resolver en programación utilizando
una
estrategia muy simple, que consiste en dividir el sistema completo
en componentes mas pequeños. Es mucho mas previsible y sencillo
-gestionar unidades de funcionalidad pequeñas que
grandes.q“h#h‡ubaub(hHoq”}q•(h"X A grandes rasgos, hay muchas
estrategias para dividir todo el
+gestionar unidades de funcionalidad pequeñas que grandes.q“
+ q”}q•(h"h‹h#h‰ubaubhJ) q–}q—(h"X A grandes rasgos, hay muchas
estrategias para dividir todo el
diseño en componentes pequeños. Aquí utilizaremos conceptos de
programación orientada a objetos, en donde el funcionamiento
del sistema se basa en Objetos individuales que intercambian
-mensajes entre sí.q–h#hdh$h%h&hLh(}q—(h*]q˜h,]q™h.]qšh0]q›h2]qœuh4K h5h h
-]q hC) qž}qŸ(h"h–hFX A grandes rasgos, hay muchas estrategias para
dividir todo el
+mensajes entre sí.q˜h#hfh$h'h)hNh+}q™(h-]qšh/]q›h1]qœh3]q h5]qžuh7K h8h h
+]qŸhFX A grandes rasgos, hay muchas estrategias para dividir todo el
diseño en componentes pequeños. Aquí utilizaremos conceptos de
programación orientada a objetos, en donde el funcionamiento
del sistema se basa en Objetos individuales que intercambian
-mensajes entre sí.q h#h”ubaubeub(h oq¡}q¢(h"U h#h
h$h%h&h'h(}q£(h*]q¤h,]q¥h.]q¦h0]q§h ah2]q¨h auh4K h5h h
-]q©((h7oqª}q«(h"X Objeto principal:
Directorq¬h#h¡h$h%h&h;h(}q­(h*]q®h,]q¯h.]q°h0]q±h2]q²uh4K h5h h
-]q³hC) q´}qµ(h"h¬hFX Objeto principal:
Directorq¶h#hªubaub(hHoq·}q¸(h"X\ El objeto ``Director`` (director.py) es
el encargado de mantener
-el juego en
funcionamiento.q¹h#h¡h$h%h&hLh(}qº(h*]q»h,]q¼h.]q½h0]q¾h2]q¿uh4K!h5h h
-]qÀ(hC) qÁ}qÂ(h"X
- El objeto qÃhFX
+mensajes entre sí.q 
+ q¡}q¢(h"h˜h#h–ubaubeubh ) q£}q¤(h"U h#h
h$h'h)h*h+}q¥(h-]q¦h/]q§h1]q¨h3]q©h ah5]qªh auh7K h8h h
+]q«(h:) q¬}q­(h"X Objeto principal:
Directorq®h#h£h$h'h)h>h+}q¯(h-]q°h/]q±h1]q²h3]q³h5]q´uh7K h8h h
+]qµhFX Objeto principal: Directorq¶
+ q·}q¸(h"h®h#h¬ubaubhJ) q¹}qº(h"X\ El objeto ``Director`` (director.py)
es el encargado de mantener
+el juego en
funcionamiento.q»h#h£h$h'h)hNh+}q¼(h-]q½h/]q¾h1]q¿h3]qÀh5]qÁuh7K!h8h h
+]qÂ(hFX
+ El objeto qÃ
+ qÄ}qÅ(h"X
El objeto qÄh#h·ub(cdocutils.nodes
literal
-qÅoqÆ}qÇ(h"X ``Director``qÈh(}qÉ(h*]qÊh,]qËh.]qÌh0]qÍh2]qÎuh#h·h
-]qÏhC) qÐ}qÑ(h"U hFX DirectorqÒh#hÆubah&U literalqÓubhC) qÔ}qÕ(h"XF
(director.py) es el encargado de mantener
-el juego en funcionamiento.qÖhFXF (director.py) es el encargado de
mantener
-el juego en funcionamiento.q×h#h·ubeub(hHoqØ}qÙ(h"Xx Este objeto hace lo
mínimo y necesario para mantener operable la
-ventana principal, básicamente hace solo estas
cosas:qÚh#h¡h$h%h&hLh(}qÛ(h*]qÜh,]qÝh.]qÞh0]qßh2]qàuh4K$h5h h
-]qáhC) qâ}qã(h"hÚhFXx Este objeto hace lo mínimo y necesario para
mantener operable la
-ventana principal, básicamente hace solo estas
cosas:qäh#hØubaub(cdocutils.nodes
+qÇ) qÈ}qÉ(h"X ``Director``qÊh+}qË(h-]qÌh/]qÍh1]qÎh3]qÏh5]qÐuh#h¹h
+]qÑhFX DirectorqÒ
+ qÓ}qÔ(h"U h#hÈubah)U literalqÕubhFXF (director.py) es el encargado de
mantener
+el juego en funcionamiento.qÖ
+ q×}qØ(h"XF (director.py) es el encargado de mantener
+el juego en funcionamiento.qÙh#h¹ubeubhJ) qÚ}qÛ(h"Xx Este objeto hace lo
mínimo y necesario para mantener operable la
+ventana principal, básicamente hace solo estas
cosas:qÜh#h£h$h'h)hNh+}qÝ(h-]qÞh/]qßh1]qàh3]qáh5]qâuh7K$h8h h
+]qãhFXx Este objeto hace lo mínimo y necesario para mantener operable la
+ventana principal, básicamente hace solo estas cosas:qä
+ qå}qæ(h"hÜh#hÚubaubcdocutils.nodes
bullet_list
-qåoqæ}qç(h"U h#h¡h$h%h&U bullet_listqèh(}qé(U bulletqêX -h0]qëh.]qìh*]qíh,]qîh2]qïuh4K'h5h h
-]qð((cdocutils.nodes
+qç) qè}qé(h"U h#h£h$h'h)U bullet_listqêh+}që(U bulletqìX -h3]qíh1]qîh-]qïh/]qðh5]qñuh7K'h8h h
+]qò(cdocutils.nodes
list_item
-qñoqò}qó(h"X% Genera la ventana del juego (inicia).qôh#hæh$h%h&U
list_itemqõh(}qö(h*]q÷h,]qøh.]qùh0]qúh2]qûuh4Nh5h h
-]qü(hHoqý}qþ(h"hôh#hòh&hLh(}qÿ(h*]r h,]r h.]r h0]r h2]r uh4K'h
-]r hC) r }r (h"hôhFX% Genera la ventana del juego
(inicia).r h#hýubaubaub(hñor }r
+qó) qô}qõ(h"X% Genera la ventana del juego (inicia).qöh#hèh$h'h)U
list_itemq÷h+}qø(h-]qùh/]qúh1]qûh3]qüh5]qýuh7Nh8h h
+]qþhJ) qÿ}r (h"höh#hôh)hNh+}r (h-]r h/]r h1]r h3]r h5]r uh7K'h
+]r hFX% Genera la ventana del juego (inicia).r
+ r }r
(h"X* Dibuja constantemente la ventana
(dibuja).r h#hæh$h%h&hõh(}r (h*]r
h,]r h.]r h0]r h2]r uh4Nh5h h
-]r (hHor }r (h"j h#j
h&hLh(}r (h*]r h,]r h.]r h0]r h2]r uh4K(h
-]r hC) r
+]r hJ) r }r (h"j
}r
(h"j hFX* Dibuja constantemente la ventana (dibuja).r
+]r
h#j ubaubaub(hñor }r (h"X: Mantiene en movimiento los
objetos en pantalla
(actualiza)r! h#hæh$h%h&hõh(}r" (h*]r# h,]r$ h.]r% h0]r& h2]r' uh4Nh5h h
-]r( (hHor) }r* (h"j! h#j h&hLh(}r+ (h*]r, h,]r- h.]r. h0]r/ h2]r0 uh4K)h
-]r1 hC) r2 }r3 (h"j! hFX: Mantiene en movimiento los objetos en
pantalla (actualiza)r4 h#j) ubaubaub(hñor5 }r6 (h"X, Atiene los
eventos del usuario (responde).
-
-r7 h#hæh$h%h&hõh(}r8 (h*]r9 h,]r: h.]r; h0]r< h2]r= uh4Nh5h h
-]r> (hHor? }r@ (h"X* Atiene los eventos del usuario
(responde).rA h#j5 h&hLh(}rB (h*]rC h,]rD h.]rE h0]rF h2]rG uh4K*h
-]rH hC) rI }rJ (h"jA hFX* Atiene los eventos del usuario
(responde).rK h#j? ubaubaubeubeub(h orL }rM (h"U h#h
h$h%h&h'h(}rN (h*]rO h,]rP h.]rQ h0]rR h ah2]rS h
-auh4K.h5h h
-]rT ((h7orU }rV (h"X Escenas, las partes de un
juegorW h#jL h$h%h&h;h(}rX (h*]rY h,]rZ h.]r[ h0]r\ h2]r] uh4K.h5h h
-]r^ hC) r_ }r` (h"jW hFX Escenas, las partes de un
juegora h#jU ubaub(hHorb }rc (h"X En realidad, el objeto
director representa solo la ``caja`` que
-mantiene en funcionamiento el juego, esa es su
responsabilidad.rd h#jL h$h%h&hLh(}re (h*]rf h,]rg h.]rh h0]ri h2]rj uh4K0h5h h
-]rk (hC) rl }rm (h"X3 En realidad, el objeto director representa
solo la rn hFX3 En realidad, el objeto director representa solo la
ro h#jb ub(hÅorp }rq (h"X ``caja``rr h(}rs (h*]rt h,]ru h.]rv h0]rw h2]rx uh#jb h
-]ry hC) rz }r{ (h"U hFX cajar|
h#jp ubah&hÓubhC) r} }r~ (h"XD que
+
+ r }r (h"j
+ h#j ubaubaubhó) r! }r" (h"X: Mantiene en movimiento los
objetos en pantalla
(actualiza)r# h#hèh$h'h)h÷h+}r$ (h-]r% h/]r& h1]r' h3]r( h5]r) uh7Nh8h h
+]r* hJ) r+ }r, (h"j# h#j! h)hNh+}r- (h-]r. h/]r/ h1]r0 h3]r1 h5]r2 uh7K)h
+]r3 hFX: Mantiene en movimiento los objetos en pantalla
(actualiza)r4
+ r5 }r6 (h"j# h#j+ ubaubaubhó) r7 }r8 (h"X, Atiene los
eventos del usuario (responde).
+
+r9 h#hèh$h'h)h÷h+}r: (h-]r; h/]r< h1]r= h3]r> h5]r? uh7Nh8h h
+]r@ hJ) rA }rB (h"X* Atiene los eventos del usuario
(responde).rC h#j7 h)hNh+}rD (h-]rE h/]rF h1]rG h3]rH h5]rI uh7K*h
+]rJ hFX* Atiene los eventos del usuario (responde).rK
+ rL }rM (h"jC h#jA ubaubaubeubeubh ) rN }rO (h"U h#h
h$h'h)h*h+}rP (h-]rQ h/]rR h1]rS h3]rT h ah5]rU h
+auh7K.h8h h
+]rV (h:) rW }rX (h"X Escenas, las partes de un
juegorY h#jN h$h'h)h>h+}rZ (h-]r[ h/]r\ h1]r] h3]r^ h5]r_ uh7K.h8h h
+]r` hFX Escenas, las partes de un juegora
+ rb }rc (h"jY h#jW ubaubhJ) rd }re (h"X En realidad, el
objeto director representa solo la ``caja`` que
+mantiene en funcionamiento el juego, esa es su
responsabilidad.rf h#jN h$h'h)hNh+}rg (h-]rh h/]ri h1]rj h3]rk h5]rl uh7K0h8h h
+]rm (hFX3 En realidad, el objeto director representa solo la rn
+ ro }rp (h"X3 En realidad, el objeto director representa solo la
rq h#jd ubhÇ) rr }rs (h"X ``caja``rt h+}ru (h-]rv h/]rw h1]rx h3]ry h5]rz uh#jd h
+]r{ hFX cajar|
+ r} }r~ (h"U h#jr ubah)hÕubhFXD que
mantiene en funcionamiento el juego, esa es su
responsabilidad.r hFXD que
-mantiene en funcionamiento el juego, esa es su
responsabilidad.r€ h#jb ubeub(hHor }r‚ (h"XÆ Pero falta algo, en
realidad este juego estará compuesto de
+ r€ }r (h"XD que
+mantiene en funcionamiento el juego, esa es su
responsabilidad.r‚ h#jd ubeubhJ) rƒ }r„ (h"XÆ Pero falta algo, en
realidad este juego estará compuesto de
varias escenas como una *presentación*, el *menú de opciones*, la
-pantalla de *juego* (con las piezas), *el ranking de puntajes*
etc...rƒ h#jL h$h%h&hLh(}r„ (h*]r
+pantalla de *juego* (con las piezas), *el ranking de puntajes* etc...r
h,]r† h.]r‡ h0]rˆ h2]r‰ uh4K3h5h h
-]rŠ (hC) r‹ }rŒ (h"XU Pero falta algo, en realidad este juego
estará compuesto de
+]rŒ (hFXU Pero falta algo, en realidad este juego estará compuesto de
varias escenas como una r hFXU Pero falta algo, en realidad este
juego estará compuesto de
-varias escenas como una rŽ h#j ub(cdocutils.nodes
+ rŽ }r (h"XU Pero falta algo, en realidad este juego estará
compuesto de
+varias escenas como una r h#jƒ ubcdocutils.nodes
emphasis
-r or }r‘ (h"X *presentación*r’ h(}r“ (h*]r” h,]r• h.]r– h0]r— h2]r˜ uh#j h
-]r™ hC) rš }r› (h"U hFX
- presentaciónrœ h#j ubah&U emphasisr ubhC) rž }rŸ (h"X ,
el r  hFX , el r¡ h#j ub(j or¢ }r£ (h"X *menú de
opciones*r¤ h(}r¥ (h*]r¦ h,]r§ h.]r¨ h0]r© h2]rª uh#j h
-]r« hC) r¬ }r­ (h"U hFX menú de
opcionesr® h#j¢ ubah&j ubhC) r¯ }r° (h"X , la
+r‘ ) r’ }r“ (h"X *presentación*r” h+}r• (h-]r– h/]r— h1]r˜ h3]r™ h5]rš uh#jƒ h
+]r› hFX
+ presentaciónrœ
+ r }rž (h"U h#j’ ubah)U emphasisrŸ ubhFX , el r 
+ r¡ }r¢ (h"X , el r£ h#jƒ ubj‘ ) r¤ }r¥ (h"X *menú de
opciones*r¦ h+}r§ (h-]r¨ h/]r© h1]rª h3]r« h5]r¬ uh#jƒ h
+]r­ hFX menú de opcionesr®
+ r¯ }r° (h"U h#j¤ ubah)jŸ ubhFX , la
pantalla de r± hFX , la
-pantalla de
r² h#j ub(j or³ }r´ (h"X *juego*rµ h(}r¶ (h*]r· h,]r¸ h.]r¹ h0]rº h2]r» uh#j h
-]r¼ hC) r½ }r¾ (h"U hFX juegor¿ h#j³ ubah&j ubhC) rÀ }rÁ (h"X
(con
las piezas), r hFX (con las piezas),
rà h#j ub(j orÄ }rÅ (h"X *el ranking de
puntajes*rÆ h(}rÇ (h*]rÈ h,]rÉ h.]rÊ h0]rË h2]rÌ uh#j h
-]rÍ hC) rÎ }rÏ (h"U hFX el ranking de
puntajesrÐ h#jÄ ubah&j ubhC) rÑ }rÒ (h"X etc...rÓ hFX
etc...rÔ h#j ubeub(hHorÕ }rÖ (h"XÛ Si eligiéramos escribir
todas estas funcionalidades en el mismo
+ r² }r³ (h"X , la
+pantalla de
r´ h#jƒ ubj‘ ) rµ }r¶ (h"X *juego*r· h+}r¸ (h-]r¹ h/]rº h1]r» h3]r¼ h5]r½ uh#jƒ h
+]r¾ hFX juegor¿
+ rÀ }rÁ (h"U h#jµ ubah)jŸ ubhFX (con las piezas), rÂ
+ rà }rÄ (h"X (con las piezas),
rÅ h#jƒ ubj‘ ) rÆ }rÇ (h"X *el ranking de
puntajes*rÈ h+}rÉ (h-]rÊ h/]rË h1]rÌ h3]rÍ h5]rÎ uh#jƒ h
+]rÏ hFX el ranking de puntajesrÐ
+ rÑ }rÒ (h"U h#jÆ ubah)jŸ ubhFX etc...rÓ
+ rÔ }rÕ (h"X etc...rÖ h#jƒ ubeubhJ) r× }rØ (h"XÛ Si
eligiéramos escribir todas estas funcionalidades en el mismo
objeto Director, llegaríamos a tener una rutina algo difícil
de manejar, con variables de control (estilo
-``if etapa == 'menu' or etapa
== 'opci...'``).r× h#jL h$h%h&hLh(}rØ (h*]rÙ h,]rÚ h.]rÛ h0]rÜ h2]rÝ uh4K7h5h h
-]rÞ (hC) rß }rà (h"X­ Si eligiéramos escribir todas estas
funcionalidades en el mismo
+``if etapa == 'menu' or etapa
== 'opci...'``).rÙ h#jN h$h'h)hNh+}rÚ (h-]rÛ h/]rÜ h1]rÝ h3]rÞ h5]rß uh7K7h8h h
+]rà (hFX­ Si eligiéramos escribir todas estas funcionalidades en el
mismo
objeto Director, llegaríamos a tener una rutina algo difícil
de manejar, con variables de control (estilo
rá hFX­ Si eligiéramos escribir todas estas funcionalidades en el
mismo
+ râ }rã (h"X­ Si eligiéramos escribir todas estas funcionalidades
en el mismo
objeto Director, llegaríamos a tener una rutina algo difícil
de manejar, con variables de control (estilo
-râ h#jÕ ub(hÅorã }rä (h"X, ``if etapa == 'menu' or etapa
== 'opci...'``rå h(}ræ (h*]rç h,]rè h.]ré h0]rê h2]rë uh#jÕ h
-]rì hC) rí }rî (h"U hFX( if etapa == 'menu' or etapa
== 'opci...'rï h#jã ubah&hÓubhC) rð }rñ (h"X ).rò hFX ).ró h#jÕ ubeub(hHorô }rõ (h"XÎ En
lugar de ello, vamos a optar por una solución que recibe el
+rä h#j× ubhÇ) rå }ræ (h"X, ``if etapa == 'menu' or etapa
== 'opci...'``rç h+}rè (h-]ré h/]rê h1]rë h3]rì h5]rí uh#j× h
+]rî hFX( if etapa == 'menu' or etapa == 'opci...'rï
+ rð }rñ (h"U h#jå ubah)hÕubhFX ).rò
+ ró }rô (h"X ).rõ h#j× ubeubhJ) rö }r÷ (h"XÎ En lugar de
ello, vamos a optar por una solución que recibe el
nombre de **Patrón estrategia**, una solución que en programación
-se suele agrupar en un conjunto mas grande llamado *patrones de
diseño*.rö h#jL h$h%h&hLh(}r÷ (h*]rø h,]rù h.]rú h0]rû h2]rü uh4K<h5h h
-]rý (hC) rþ }rÿ (h"XJ En lugar de ello, vamos a optar por una
solución que recibe el
+se suele agrupar en un conjunto mas grande llamado *patrones de
diseño*.rø h#jN h$h'h)hNh+}rù (h-]rú h/]rû h1]rü h3]rý h5]rþ uh7K<h8h h
+]rÿ (hFXJ En lugar de ello, vamos a optar por una solución que recibe
el
nombre de r hFXJ En lugar de ello, vamos a optar por una solución
que recibe el
-nombre de r h#jô ub(cdocutils.nodes
+ r }r (h"XJ En lugar de ello, vamos a optar por una solución que
recibe el
+nombre de r h#jö ubcdocutils.nodes
strong
-r or }r (h"X **Patrón
estrategia**r h(}r (h*]r h,]r h.]r h0]r
+r ) r }r (h"X **Patrón estrategia**r h+}r (h-]r h/]r
h2]r uh#jô h
-]r hC) r
}r (h"U hFX Patrón
estrategiar h#j ubah&U strongr ubhC) r }r (h"XX , una
solución que en programación
+]r hFX Patrón estrategiar
+ r }r (h"U h#j ubah)U strongr ubhFXX , una solución que en
programación
se suele agrupar en un conjunto mas grande llamado r hFXX , una
solución que en programación
-se suele agrupar en un conjunto mas grande llamado
r h#jô ub(j or }r (h"X *patrones de
diseño*r h(}r (h*]r h,]r h.]r h0]r
+ r }r (h"XX , una solución que en programación
+se suele agrupar en un conjunto mas grande llamado
r h#jö ubj‘ ) r }r (h"X *patrones de
diseño*r h+}r (h-]r h/]r
h2]r
uh#jô h
-]r
hC) r }r (h"U hFX patrones de
diseñor! h#j ubah&j ubhC) r" }r# (h"X .hFX .h#jô ubeub(hHor$ }r% (h"Xl Bajo
esta solución, podemos representar el funcionamiento del juego
-como la colaboración entre dos
clases:r& h#jL h$h%h&hLh(}r' (h*]r( h,]r) h.]r* h0]r+ h2]r, uh4KAh5h h
-]r- hC) r. }r/ (h"j& hFXl Bajo esta solución, podemos
representar el funcionamiento del juego
+]r hFX patrones de diseñor!
+ r" }r# (h"U h#j ubah)jŸ ubhFX .
+ r$ }r% (h"X .h#jö ubeubhJ) r& }r' (h"Xl Bajo esta
solución, podemos representar el funcionamiento del juego
+como la colaboración entre dos
clases:r( h#jN h$h'h)hNh+}r) (h-]r* h/]r+ h1]r, h3]r- h5]r. uh7KAh8h h
+]r/ hFXl Bajo esta solución, podemos representar el funcionamiento
del juego
como la colaboración entre dos
clases:r0 h#j$ ubaub(csphinx.ext.graphviz
+ r1 }r2 (h"j( h#j& ubaubcsphinx.ext.graphviz
graphviz
-r1 or2 }r3 (h"U h#jL h$h%h&U graphvizr4 h(}r5 (U coder6 X digraph "digraph"
{
+r3 ) r4 }r5 (h"U h#jN h$h'h)U graphvizr6 h+}r7 (U coder8 X digraph "digraph"
{
node [shape=ellipse, fontsize="11.0", fontname=Verdana];
Director [shape=record, fontsize=10, fontname=Verdana,
label="{Director|screen\nscene|loop()\nchange_scene()}"];
Scene [shape=record, fontsize=10, fontname=Verdana,
label="{Scene|...|}"];
@@ -151,46 +194,51 @@
Director -> Scene [label="dibujar", fontsize="11.0",
fontname=Verdana]
Director -> Scene [label="actualizar",fontsize="11.0",
fontname=Verdana]
Director -> Scene [label="procesar evento", fontsize="11.0",
fontname=Verdana]
-}r7 h0]r8 h.]r9 h*]r: h,]r; h2]r< U optionsr= ]r> uh4KQh5h h
-]r? ub(hHor@ }rA (h"Xµ El objeto director se encarga solamente de
mantener en funcionamiento
+}r9 h3]r: h1]r; h-]r< h/]r= h5]r> U optionsr? ]r@ uh7KQh8h h
+]rA ubhJ) rB }rC (h"Xµ El objeto director se encarga solamente de
mantener en funcionamiento
la aplicación, esto consiste en actualizar periódicamente la pantalla,
-atender eventos y actualizar
objetos.rB h#jL h$h%h&hLh(}rC (h*]rD h,]rE h.]rF h0]rG h2]rH uh4KRh5h h
-]rI hC) rJ }rK (h"jB hFXµ El objeto director se encarga
solamente de mantener en funcionamiento
+atender eventos y actualizar
objetos.rD h#jN h$h'h)hNh+}rE (h-]rF h/]rG h1]rH h3]rI h5]rJ uh7KRh8h h
+]rK hFXµ El objeto director se encarga solamente de mantener en
funcionamiento
la aplicación, esto consiste en actualizar periódicamente la pantalla,
atender eventos y actualizar
objetos.rL h#j@ ubaub(hHorM }rN (h"Xü El objeto escena, en
cambio, contiene todo el código necesario para
+ rM }rN (h"jD h#jB ubaubhJ) rO }rP (h"Xü El objeto escena,
en cambio, contiene todo el código necesario para
representar una sola escena del juego. Cuando llega la orden de
actualizar la pantalla, la escena dibuja lo que le corresponde. Cuando
-llega un evento, la escena lo atiene y
responde.rO h#jL h$h%h&hLh(}rP (h*]rQ h,]rR h.]rS h0]rT h2]rU uh4KVh5h h
-]rV hC) rW }rX (h"jO hFXü El objeto escena, en cambio, contiene
todo el código necesario para
+llega un evento, la escena lo atiene y
responde.rQ h#jN h$h'h)hNh+}rR (h-]rS h/]rT h1]rU h3]rV h5]rW uh7KVh8h h
+]rX hFXü El objeto escena, en cambio, contiene todo el código
necesario para
representar una sola escena del juego. Cuando llega la orden de
actualizar la pantalla, la escena dibuja lo que le corresponde. Cuando
llega un evento, la escena lo atiene y
responde.rY h#jM ubaub(hHorZ }r[ (h"Xú Lo interesante de diseñar
estos objetos por separado radica en poder
+ rZ }r[ (h"jQ h#jO ubaubhJ) r\ }r] (h"Xú Lo interesante de
diseñar estos objetos por separado radica en poder
desacoplarlos en cualquier momento, por ejemplo si queremos ir
de la presentación del juego al menú principal, solamente
-tendremos que eliminar un objeto y reemplazarlo por
otro:r\ h#jL h$h%h&hLh(}r] (h*]r^ h,]r_ h.]r` h0]ra h2]rb uh4K[h5h h
-]rc hC) rd }re (h"j\ hFXú Lo interesante de diseñar estos
objetos por separado radica en poder
+tendremos que eliminar un objeto y reemplazarlo por
otro:r^ h#jN h$h'h)hNh+}r_ (h-]r` h/]ra h1]rb h3]rc h5]rd uh7K[h8h h
+]re hFXú Lo interesante de diseñar estos objetos por separado radica
en poder
desacoplarlos en cualquier momento, por ejemplo si queremos ir
de la presentación del juego al menú principal, solamente
tendremos que eliminar un objeto y reemplazarlo por
otro:rf h#jZ ubaub(j1 org }rh (h"U h#jL h$h%h&j4 h(}ri (j6 X@ digraph "digraph"
{
+ rg }rh (h"j^ h#j\ ubaubj3 ) ri }rj (h"U h#jN h$h'h)j6 h+}rk (j8 X@ digraph "digraph"
{
node [shape=ellipse, fontsize="11.0", fontname=Verdana];
Director [shape=record, fontsize=10, fontname=Verdana,
label="{Director|screen\nscene|loop()\nchange_scene()}"];
Scene [shape=record, fontsize=10, fontname=Verdana,
label="{MainMenu|...|}"];

Director -> Scene
-}rj h0]rk h.]rl h*]rm h,]rn h2]ro j= ]rp uh4Kjh5h h
-]rq ub(hHorr }rs (h"X– En términos de programación, no hay mayor
dificultad, el objeto
+}rl h3]rm h1]rn h-]ro h/]rp h5]rq j? ]rr uh7Kjh8h h
+]rs ubhJ) rt }ru (h"X– En términos de programación, no hay mayor
dificultad, el objeto
Director está diseñado para operar con una escena, e incluso
-para
intercambiarlas.rt h#jL h$h%h&hLh(}ru (h*]rv h,]rw h.]rx h0]ry h2]rz uh4Kkh5h h
-]r{ hC) r| }r} (h"jt hFX– En términos de programación, no hay
mayor dificultad, el objeto
+para
intercambiarlas.rv h#jN h$h'h)hNh+}rw (h-]rx h/]ry h1]rz h3]r{ h5]r|
uh7Kkh8h h
+]r} hFX– En términos de programación, no hay mayor dificultad, el
objeto
Director está diseñado para operar con una escena, e incluso
para intercambiarlas.r~ h#jr ubaub(hHor }r€ (h"X Este ejemplo
ilustrativo (no ejecutable) muestra como crear una
-escena, imprimirla sobre la pantalla y luego cambiarla por
otra::r h#jL h$h%h&hLh(}r‚ (h*]rƒ h,]r„ h.]r
+ r }r€ (h"jv h#jt ubaubhJ) r }r‚ (h"X Este ejemplo
ilustrativo (no ejecutable) muestra como crear una
+escena, imprimirla sobre la pantalla y luego cambiarla por
otra::rƒ h#jN h$h'h)hNh+}r„ (h-]r
h0]r† h2]r‡ uh4Koh5h h
-]rˆ hC) r‰ }rŠ (h"X€ Este ejemplo ilustrativo (no ejecutable)
muestra como crear una
+]rŠ hFX€ Este ejemplo ilustrativo (no ejecutable) muestra como crear
una
escena, imprimirla sobre la pantalla y luego cambiarla por
otra:r‹ hFX€ Este ejemplo ilustrativo (no ejecutable) muestra como
crear una
-escena, imprimirla sobre la pantalla y luego cambiarla por
otra:rŒ h#j ubaub(cdocutils.nodes
+ rŒ }r (h"X€ Este ejemplo ilustrativo (no ejecutable) muestra como
crear una
+escena, imprimirla sobre la pantalla y luego cambiarla por
otra:rŽ h#j ubaubcdocutils.nodes
literal_block
-r orŽ }r (h"XE presentacion = new Presentacion()
+r ) r }r‘ (h"XE presentacion = new Presentacion()
director.set_scene(presentacion)

director.draw() # imprime la escena menu.
@@ -198,18 +246,29 @@

juego = new Juego()
director.set_scene(juego) # descarta la escena anterior.
-director.draw() # imprime la escena de
juego.r h#jL h$h%h&U
-literal_blockr‘ h(}r’ (U
xml:spacer“ U preserver” h0]r• h.]r– h*]r— h,]r˜ h2]r™ uh4Krh5h h
-]rš hC) r› }rœ (h"U hFj h#jŽ ubaubeub(h or }rž (h"U h#h
h$h%h&h'h(}rŸ (h*]r  h,]r¡ h.]r¢ h0]r£ h ah2]r¤ h auh4K~h5h h
-]r¥ ((h7or¦ }r§ (h"X Escenas,
ampliandor¨ h#j h$h%h&h;h(}r© (h*]rª h,]r« h.]r¬ h0]r­ h2]r® uh4K~h5h h
-]r¯ hC) r° }r± (h"j¨ hFX Escenas,
ampliandor² h#j¦ ubaub(hHor³ }r´ (h"XÖ Algo interesante para
observar, es que las escenas son muy
+director.draw() # imprime la escena de
juego.r’ h#jN h$h'h)U
+literal_blockr“ h+}r” (U
xml:spacer• U preserver– h3]r— h1]r˜ h-]r™ h/]rš h5]r› uh7Krh8h h
+]rœ hFXE presentacion = new Presentacion()
+director.set_scene(presentacion)
+
+director.draw() # imprime la escena menu.
+director.draw() # imprime la escena menu por segunda vez.
+
+juego = new Juego()
+director.set_scene(juego) # descarta la escena anterior.
+director.draw() # imprime la escena de juego.r
+ rž }rŸ (h"U h#j ubaubeubh ) r  }r¡ (h"U h#h
h$h'h)h*h+}r¢ (h-]r£ h/]r¤ h1]r¥ h3]r¦ h ah5]r§ h auh7K~h8h h
+]r¨ (h:) r© }rª (h"X Escenas,
ampliandor« h#j  h$h'h)h>h+}r¬ (h-]r­ h/]r® h1]r¯ h3]r° h5]r± uh7K~h8h h
+]r² hFX Escenas, ampliandor³
+ r´ }rµ (h"j« h#j© ubaubhJ) r¶ }r· (h"XÖ Algo interesante
para observar, es que las escenas son muy
parecidas entre sí. Una escena tiene que definir solamente 3
métodos obligatorios, y por lo tanto se pueden crear nuevas
-escenas a partir de una
general:rµ h#j h$h%h&hLh(}r¶ (h*]r· h,]r¸ h.]r¹ h0]rº h2]r» uh4K€h5h h
-]r¼ hC) r½ }r¾ (h"jµ hFXÖ Algo interesante para observar, es que
las escenas son muy
+escenas a partir de una
general:r¸ h#j  h$h'h)hNh+}r¹ (h-]rº h/]r» h1]r¼ h3]r½ h5]r¾ uh7K€h8h h
+]r¿ hFXÖ Algo interesante para observar, es que las escenas son muy
parecidas entre sí. Una escena tiene que definir solamente 3
métodos obligatorios, y por lo tanto se pueden crear nuevas
-escenas a partir de una
general:r¿ h#j³ ubaub(j1 orÀ }rÁ (h"U h#j h$h%h&j4 h(}r (j6 XÊ digraph "dhigraph"
{
+escenas a partir de una general:rÀ
+ rÁ }r (h"j¸ h#j¶ ubaubj3 ) rà }rÄ (h"U h#j  h$h'h)j6 h+}rÅ (j8 XÊ digraph "dhigraph"
{
graph [rankdir=BT];
node [shape=ellipse, fontsize="11.0", fontname=Verdana];
Scene [shape=record, fontsize=10, fontname=Verdana,
label="{Scene|...|on_update()\non_draw(screen)\non_event()}"];
@@ -220,59 +279,64 @@
S2 -> Scene [label="hereda de...", fontsize=10, fontname=Verdana]
S3 -> Scene [label="hereda de...", fontsize=10, fontname=Verdana]
S4 -> Scene [label="hereda de...", fontsize=10, fontname=Verdana];
-}rà h0]rÄ h.]rÅ h*]rÆ h,]rÇ h2]rÈ j= ]rÉ uh4K—h5h h
-]rÊ ub(hHorË }rÌ (h"X£ Si bien puede haber muchas escenas, es
importante notar que
+}rÆ h3]rÇ h1]rÈ h-]rÉ h/]rÊ h5]rË j? ]rÌ uh7K—h8h h
+]rÍ ubhJ) rÎ }rÏ (h"X£ Si bien puede haber muchas escenas, es
importante notar que
en tiempo de ejecución solo habrá una escena activa (el objeto
-Director solo sabe administrar
una...)rÍ h#j h$h%h&hLh(}rÎ (h*]rÏ h,]rÐ h.]rÑ h0]rÒ h2]rÓ uh4K˜h5h h
-]rÔ hC) rÕ }rÖ (h"jÍ hFX£ Si bien puede haber muchas escenas, es
importante notar que
+Director solo sabe administrar
una...)rÐ h#j  h$h'h)hNh+}rÑ (h-]rÒ h/]rÓ h1]rÔ h3]rÕ h5]rÖ uh7K˜h8h h
+]r× hFX£ Si bien puede haber muchas escenas, es importante notar que
en tiempo de ejecución solo habrá una escena activa (el objeto
-Director solo sabe administrar
una...)r× h#jË ubaubeub(h orØ }rÙ (h"U h#h
h$h%h&h'h(}rÚ (h*]rÛ h,]rÜ h.]rÝ h0]rÞ h ah2]rß h auh4KŸh5h h
-]rà ((h7orá }râ (h"X. El Director no sabe de que vá la
película...rã h#jØ h$h%h&h;h(}rä (h*]rå h,]ræ h.]rç h0]rè h2]ré uh4KŸh5h h
-]rê hC) rë }rì (h"jã hFX. El Director no sabe de que vá la
película...rí h#já ubaub(hHorî }rï (h"Xß El objeto director
tampoco sabe con certeza en que etapa
+Director solo sabe administrar una...)rØ
+ rÙ }rÚ (h"jÐ h#jÎ ubaubeubh ) rÛ }rÜ (h"U h#h
h$h'h)h*h+}rÝ (h-]rÞ h/]rß h1]rà h3]rá h ah5]râ h auh7KŸh8h h
+]rã (h:) rä }rå (h"X. El Director no sabe de que vá la
película...ræ h#jÛ h$h'h)h>h+}rç (h-]rè h/]ré h1]rê h3]rë h5]rì uh7KŸh8h h
+]rí hFX. El Director no sabe de que vá la película...rî
+ rï }rð (h"jæ h#jä ubaubhJ) rñ }rò (h"Xß El objeto director
tampoco sabe con certeza en que etapa
del juego se encuentra el usuario, para el objeto Director
todas las scenas son iguales, solo le interesa llamar a los
-3 métodos que obligatoriamente tiene cada
una.rð h#jØ h$h%h&hLh(}rñ (h*]rò h,]ró h.]rô h0]rõ h2]rö uh4K¡h5h h
-]r÷ hC) rø }rù (h"jð hFXß El objeto director tampoco sabe con
certeza en que etapa
+3 métodos que obligatoriamente tiene cada
una.ró h#jÛ h$h'h)hNh+}rô (h-]rõ h/]rö h1]r÷ h3]rø h5]rù uh7K¡h8h h
+]rú hFXß El objeto director tampoco sabe con certeza en que etapa
del juego se encuentra el usuario, para el objeto Director
todas las scenas son iguales, solo le interesa llamar a los
-3 métodos que obligatoriamente tiene cada
una.rú h#jî ubaub(hHorû }rü (h"Xš De hecho, cuando se quiere
cambiar de una escena a la
+3 métodos que obligatoriamente tiene cada una.rû
+ rü }rý (h"jó h#jñ ubaubhJ) rþ }rÿ (h"Xš De hecho, cuando se
quiere cambiar de una escena a la
otra, es precisamente una escena la que le dice al
-objeto director a que otra escena debe
cambiar...rý h#jØ h$h%h&hLh(}rþ (h*]rÿ h,]r h.]r h0]r h2]r uh4K¦h5h h
-]r hC) r }r (h"jý hFXš De hecho, cuando se quiere cambiar de
una escena a la
+objeto director a que otra escena debe
cambiar...r h#jÛ h$h'h)hNh+}r (h-]r h/]r h1]r h3]r h5]r uh7K¦h8h h
+]r hFXš De hecho, cuando se quiere cambiar de una escena a la
otra, es precisamente una escena la que le dice al
-objeto director a que otra escena debe
cambiar...r h#jû ubaubeub(h or }r (h"U h#h h$h%h&h'h(}r
+objeto director a que otra escena debe cambiar...r
+ r }r
(h*]r h,]r h.]r
h0]r h ah2]r h auh4K¬h5h h
-]r ((h7or }r (h"X Diagrama de
clasesr h#j h$h%h&h;h(}r (h*]r h,]r h.]r h0]r h2]r uh4K¬h5h h
-]r hC) r }r
+]r (h:) r }r (h"X Diagrama de
clasesr h#j h$h'h)h>h+}r (h-]r h/]r h1]r h3]r h5]r
(h"j hFX Diagrama de clasesr
+]r
h#j ubaub(hHor
}r (h"X? Al finalizar esta etapa, el diagrama de clases
-simplificado es:r
h#j h$h%h&hLh(}r! (h*]r" h,]r# h.]r$ h0]r% h2]r& uh4K®h5h h
-]r' hC) r( }r) (h"j hFX? Al finalizar esta etapa, el diagrama
de clases
-simplificado es:r* h#j
- ubaub(cdocutils.nodes
+ r }r (h"j h#j ubaubhJ) r! }r" (h"X? Al finalizar esta
etapa, el diagrama de clases
+simplificado
es:r# h#j h$h'h)hNh+}r$ (h-]r% h/]r& h1]r' h3]r( h5]r) uh7K®h8h h
+]r* hFX? Al finalizar esta etapa, el diagrama de clases
+simplificado es:r+
+ r, }r- (h"j# h#j! ubaubcdocutils.nodes
image
-r+ or, }r- (h"X$ .. image::
images/etapa_1_clases.pngr. h#j h$h%h&U imager/ h(}r0 (U urir1 X images/etapa_1_clases.pngr2 h0]r3 h.]r4 h*]r5 h,]r6 U
-candidatesr7 }r8 U *j2 sh2]r9 uh4K±h5h h
-]r: ubeubeubah"U U transformerr; NU
-footnote_refsr< }r= U refnamesr> }r? U symbol_footnotesr@ ]rA U autofootnote_refsrB ]rC U symbol_footnote_refsrD ]rE U
citationsrF ]rG h5h U current_linerH NU transform_messagesrI ]rJ U reporterrK NU id_startrL K U
-autofootnotesrM ]rN U
-citation_refsrO }rP U indirect_targetsrQ ]rR U settingsrS (cdocutils.frontend
+r. ) r/ }r0 (h"X$ .. image::
images/etapa_1_clases.pngr1 h#j h$h'h)U imager2 h+}r3 (U urir4 X images/etapa_1_clases.pngr5 h3]r6 h1]r7 h-]r8 h/]r9 U
+candidatesr: }r; U *j5 sh5]r< uh7K±h8h h
+]r= ubeubeubah"U U transformerr> NU
+footnote_refsr? }r@ U refnamesrA }rB U symbol_footnotesrC ]rD U autofootnote_refsrE ]rF U symbol_footnote_refsrG ]rH U
citationsrI ]rJ h8h U current_linerK NU transform_messagesrL ]rM U reporterrN NU id_startrO K U
+autofootnotesrP ]rQ U
+citation_refsrR }rS U indirect_targetsrT ]rU U settingsrV (cdocutils.frontend
Values
-rT orU }rV (U footnote_backlinksrW K U record_dependenciesrX NU rfc_base_urlrY U http://tools.ietf.org/html/rZ U
tracebackr[ K U pep_referencesr\ NU strip_commentsr] NU
-toc_backlinksr^ U entryr_ U
-language_coder` U enra U
datestamprb NU report_levelrc K U _destinationrd NU
-halt_levelre K U
-strip_classesrf Nh;NU
-error_encoding_error_handlerrg U backslashreplacerh U debugri NU embed_stylesheetrj ‰U
-output_encoding_error_handlerrk U strictrl U
-sectnum_xformrm K U dump_transformsrn NU
-docinfo_xformro K U warning_streamrp NU pep_file_url_templaterq U pep-%04drr U exit_status_levelrs K U configrt NU strict_visitorru NU cloak_email_addressesrv ˆU
-trim_footnote_reference_spacerw ‰U envrx NU dump_pseudo_xmlry NU expose_internalsrz NU sectsubtitle_xformr{ ‰U source_linkr|
NU rfc_referencesr} NU output_encodingr~ U utf-8r U
-source_urlr€ NU input_encodingr U utf-8r‚ U _disable_configrƒ NU
id_prefixr„ U U tab_widthr
+rW orX }rY (U footnote_backlinksrZ K U record_dependenciesr[ NU rfc_base_urlr\ U http://tools.ietf.org/html/r] U
tracebackr^ K U pep_referencesr_ NU strip_commentsr` NU
+toc_backlinksra U entryrb U
+language_coderc U enrd U
datestampre NU report_levelrf K U _destinationrg NU
+halt_levelrh K U
+strip_classesri Nh>NU
+error_encoding_error_handlerrj U backslashreplacerk U debugrl NU embed_stylesheetrm ‰U
+output_encoding_error_handlerrn U strictro U
+sectnum_xformrp K U dump_transformsrq NU
+docinfo_xformrr K U warning_streamrs NU pep_file_url_templatert U pep-%04dru U exit_status_levelrv K U configrw NU strict_visitorrx NU cloak_email_addressesry ˆU
+trim_footnote_reference_spacerz ‰U envr{ NU dump_pseudo_xmlr|
NU expose_internalsr} NU sectsubtitle_xformr~ ‰U source_linkr NU rfc_referencesr€ NU output_encodingr U utf-8r‚ U
+source_urlrƒ NU input_encodingr„ U utf-8-sigr
K U error_encodingr† U asciir‡ U _sourcerˆ h%U
generatorr‰ NU dump_internalsrŠ NU pep_base_urlr‹ U http://www.python.org/dev/peps/rŒ U
-input_encoding_error_handlerr jl U auto_id_prefixrŽ U idr U doctitle_xformr ‰U strip_elements_with_classesr‘ NU
-_config_filesr’ ]r“ U file_insertion_enabledr” K U raw_enabledr• K U
-dump_settingsr– NubU symbol_footnote_startr— K U idsr˜ }r™ (h j h
-hdh jL h j h h
h jØ h h¡uU substitution_namesrš }r› h&h5h(}rœ (h*]r h0]rž h.]rŸ U sourcer  h%h,]r¡ h2]r¢ uU
footnotesr£ ]r¤ U refidsr¥ }r¦ ub.
+input_encoding_error_handlerr‘ jo U auto_id_prefixr’ U idr“ U doctitle_xformr” ‰U strip_elements_with_classesr• NU
+_config_filesr– ]r— U file_insertion_enabledr˜ K U raw_enabledr™ K U
+dump_settingsrš NubU symbol_footnote_startr› K U idsrœ }r (h j  h
+hfh jN h j h jÛ h h
h h£uU substitution_namesrž }rŸ h)h8h+}r  (h-]r¡ h3]r¢ h1]r£ U sourcer¤ h'h/]r¥ h5]r¦ uU
footnotesr§ ]r¨ U refidsr© }rª ub.
=======================================
--- /doc/build/doctrees/diseno_etapa_2.doctree Thu Jul 23 18:53:12 2009
+++ /doc/build/doctrees/diseno_etapa_2.doctree Sun May 23 10:58:24 2010
@@ -1,164 +1,215 @@
-€ (cdocutils.nodes
+€ cdocutils.nodes
document
-q oq }q (U nametypesq }q (X inicialización de piezasq NX objetivos
de la etapaq NX diseño de la etapa 2q NX interacción entre piece y
boardq NX pieceq
+q ) q }q (U nametypesq }q (X inicialización de piezasq NX objetivos
de la etapaq NX diseño de la etapa 2q NX interacción entre piece y
boardq NX pieceq
NX objetosq NX boardq NuU substitution_defsq
}q U parse_messagesq ]q U current_sourceq NU
-decorationq NU autofootnote_startq K U nameidsq }q (h U inicializaci-n-de-piezasq h U objetivos-de-la-etapaq h U dise-o-de-la-etapa-2q h
U interacci-n-entre-piece-y-boardq h
+decorationq NU autofootnote_startq K U nameidsq }q (h U inicializacion-de-piezasq h U objetivos-de-la-etapaq h U diseno-de-la-etapa-2q h
U interaccion-entre-piece-y-boardq h
U pieceq h U objetosq h U boardq
uU childrenq
]q
-(cdocutils.nodes
+cdocutils.nodes
section
-q oq }q!(U
rawsourceq"U U parentq#h U sourceq$UD/home/hugoruscitti/proyectos/asadetris/doc/source/diseno_etapa_2.rstq%U tagnameq&U sectionq'U
-attributesq(}q)(U dupnamesq*]q+U classesq,]q-U backrefsq.]q/U idsq0]q1h aU namesq2]q3h auU lineq4K U documentq5h h
-]q6((cdocutils.nodes
+q ) q }q!(U rawsourceq"U U parentq#h U sourceq$cdocutils.nodes
+reprunicode
+q%XD /home/hugoruscitti/proyectos/asadetris/doc/source/diseno_etapa_2.rstq&
+ q'}q(bU tagnameq)U sectionq*U
+attributesq+}q,(U dupnamesq-]q.U classesq/]q0U backrefsq1]q2U idsq3]q4h aU namesq5]q6h auU lineq7K U documentq8h h
+]q9(cdocutils.nodes
title
-q7oq8}q9(h"X Diseño de la etapa 2q:h#h
h$h%h&U titleq;h(}q<(h*]q=h,]q>h.]q?h0]q@h2]qAuh4K h5h h
-]qBcdocutils.nodes
+q:) q;}q<(h"X Diseño de la etapa 2q=h#h
h$h'h)U titleq>h+}q?(h-]q@h/]qAh1]qBh3]qCh5]qDuh7K h8h h
+]qEcdocutils.nodes
Text
-qC) qD}qE(h"h:U dataqFX Diseño de la etapa 2qGh#h8ubaub(cdocutils.nodes
+qFX Diseño de la etapa 2qG
+ qH}qI(h"h=h#h;ubaubcdocutils.nodes
paragraph
-qHoqI}qJ(h"Xs En esta etapa se comienza a definir el modelo de las
piezas, como
-se representan en pantalla y cómo es su lógica.qKh#h h$h%h&U
paragraphqLh(}qM(h*]qNh,]qOh.]qPh0]qQh2]qRuh4K h5h h
-]qShC) qT}qU(h"hKhFXs En esta etapa se comienza a definir el modelo de
las piezas, como
-se representan en pantalla y cómo es su
lógica.qVh#hIubaub(h oqW}qX(h"U h#h
h$h%h&h'h(}qY(h*]qZh,]q[h.]q\h0]q]h ah2]q^h auh4K h5h h
-]q_((h7oq`}qa(h"X Objetivos de la
etapaqbh#hWh$h%h&h;h(}qc(h*]qdh,]qeh.]qfh0]qgh2]qhuh4K h5h h
-]qihC) qj}qk(h"hbhFX Objetivos de la
etapaqlh#h`ubaub(hHoqm}qn(h"Xk Se debe crear una nueva escena, que de
manera similar a las
-anteriores etapas tiene que heredar de
*Scene*:qoh#hWh$h%h&hLh(}qp(h*]qqh,]qrh.]qsh0]qth2]quuh4K h5h h
-]qv(hC) qw}qx(h"Xc Se debe crear una nueva escena, que de manera similar
a las
-anteriores etapas tiene que heredar de qyhFXc Se debe crear una nueva
escena, que de manera similar a las
-anteriores etapas tiene que heredar de qzh#hmub(cdocutils.nodes
+qJ) qK}qL(h"Xs En esta etapa se comienza a definir el modelo de las
piezas, como
+se representan en pantalla y cómo es su lógica.qMh#h h$h'h)U
paragraphqNh+}qO(h-]qPh/]qQh1]qRh3]qSh5]qTuh7K h8h h
+]qUhFXs En esta etapa se comienza a definir el modelo de las piezas, como
+se representan en pantalla y cómo es su lógica.qV
+ qW}qX(h"hMh#hKubaubh ) qY}qZ(h"U h#h
h$h'h)h*h+}q[(h-]q\h/]q]h1]q^h3]q_h ah5]q`h auh7K h8h h
+]qa(h:) qb}qc(h"X Objetivos de la
etapaqdh#hYh$h'h)h>h+}qe(h-]qfh/]qgh1]qhh3]qih5]qjuh7K h8h h
+]qkhFX Objetivos de la etapaql
+ qm}qn(h"hdh#hbubaubhJ) qo}qp(h"Xk Se debe crear una nueva escena, que
de manera similar a las
+anteriores etapas tiene que heredar de
*Scene*:qqh#hYh$h'h)hNh+}qr(h-]qsh/]qth1]quh3]qvh5]qwuh7K h8h h
+]qx(hFXc Se debe crear una nueva escena, que de manera similar a las
+anteriores etapas tiene que heredar de qy
+ qz}q{(h"Xc Se debe crear una nueva escena, que de manera similar a las
+anteriores etapas tiene que heredar de q|h#houbcdocutils.nodes
emphasis
-q{oq|}q}(h"X *Scene*q~h(}q (h*]q€h,]q h.]q‚h0]qƒh2]q„uh#hmh
-]q
-hC) q†}q‡(h"U hFX Sceneqˆh#h|
ubah&U emphasisq‰ubhC) qŠ}q‹(h"X :hFX :h#hmubeub(cdocutils.nodes
+q}) q~}q (h"X *Scene*q€h+}q (h-]q‚h/]qƒh1]q„h3]q
+h5]q†uh#hoh
+]q‡hFX Sceneqˆ
+ q‰}qŠ(h"U h#h~ubah)U emphasisq‹ubhFX :
+ qŒ}q (h"X :h#houbeubcdocutils.nodes
image
-qŒoq }qŽ(h"X, .. image:: images/etapa_2_nueva_escena.png
-
-q h#hWh$h%h&U imageq h(}q‘(U uriq’X images/etapa_2_nueva_escena.pngq“h0]q”h.]q•h*]q–h,]q—U
-candidatesq˜}q™U *h“sh2]qšuh4K h5h h
-]q›ub(hHoqœ}q (h"Xš Y en pantalla la escena solamente ofrece la
posibilidad de mover
+qŽ) q }q (h"X, .. image:: images/etapa_2_nueva_escena.png
+
+q‘h#hYh$h'h)U imageq’h+}q“(U uriq”X images/etapa_2_nueva_escena.pngq•h3]q–h1]q—h-]q˜h/]q™U
+candidatesqš}q›U *h•sh5]qœuh7K h8h h
+]q ubhJ) qž}qŸ(h"Xš Y en pantalla la escena solamente ofrece la
posibilidad de mover
una sola pieza (similar a una letra L) y regresar a la escena
-anterior, la de la etapa
1.qžh#hWh$h%h&hLh(}qŸ(h*]q h,]q¡h.]q¢h0]q£h2]q¤uh4K h5h h
-]q¥hC) q¦}q§(h"hžhFXš Y en pantalla la escena solamente ofrece la
posibilidad de mover
+anterior, la de la etapa
1.q h#hYh$h'h)hNh+}q¡(h-]q¢h/]q£h1]q¤h3]q¥h5]q¦uh7K h8h h
+]q§hFXš Y en pantalla la escena solamente ofrece la posibilidad de mover
una sola pieza (similar a una letra L) y regresar a la escena
-anterior, la de la etapa 1.q¨h#hœubaub(hHoq©}qª(h"X6 Esta es una
representación preliminar de la
pantalla:q«h#hWh$h%h&hLh(}q¬(h*]q­h,]q®h.]q¯h0]q°h2]q±uh4K h5h h
-]q²hC) q³}q´(h"h«hFX6 Esta es una representación preliminar de la
pantalla:qµh#h©ubaub(hŒoq¶}q·(h"X, .. image::
images/etapa_2_en_pantalla.png
+anterior, la de la etapa 1.q¨
+ q©}qª(h"h h#hžubaubhJ) q«}q¬(h"X6 Esta es una representación
preliminar de la
pantalla:q­h#hYh$h'h)hNh+}q®(h-]q¯h/]q°h1]q±h3]q²h5]q³uh7K h8h h
+]q´hFX6 Esta es una representación preliminar de la pantalla:qµ
+ q¶}q·(h"h­h#h«ubaubhŽ) q¸}q¹(h"X, .. image::
images/etapa_2_en_pantalla.png


-q¸h#hWh$h%h&h h(}q¹(U uriqºX
- images/etapa_2_en_pantalla.pngq»h0]q¼h.]q½h*]q¾h,]q¿h˜}qÀU *h»sh2]qÁuh4K h5h h
-]qÂubeub(h oqÃ}qÄ(h"U h#h h$h%h&h'h(}qÅ(h*]qÆh,]qÇh.]qÈh0]qÉh ah2]qÊh auh4K
-h5h h
-]qË((h7oqÌ}qÍ(h"X ObjetosqÎh#hÃh$h%h&h;h(}qÏ(h*]qÐh,]qÑh.]qÒh0]qÓh2]qÔuh4K
-h5h h
-]qÕhC) qÖ}q×(h"hÎhFX ObjetosqØh#hÌubaub(hHoqÙ}qÚ(h"X; Esta etapa
incorpora dos clases importantes, Board y
Piece.qÛh#hÃh$h%h&hLh(}qÜ(h*]qÝh,]qÞh.]qßh0]qàh2]qáuh4K
-h5h h
-]qâhC) qã}qä(h"hÛhFX; Esta etapa incorpora dos clases importantes, Board
y
Piece.qåh#hÙubaub(h oqæ}qç(h"U h#hÃh$h%h&h'h(}qè(h*]qéh,]qêh.]qëh0]qìh ah2]qíh
-auh4K"h5h h
-]qî((h7oqï}qð(h"X Pieceqñh#hæh$h%h&h;h(}qò(h*]qóh,]qôh.]qõh0]qöh2]q÷uh4K"h5h h
-]qøhC) qù}qú(h"hñhFX Pieceqûh#hïubaub(hHoqü}qý(h"Xx La clase Piece
representa una pieza del juego. El usuario puede
-mover esta pieza pulsando los direccionales del
teclado.qþh#hæh$h%h&hLh(}qÿ(h*]r h,]r h.]r h0]r h2]r uh4K$h5h h
-]r hC) r }r (h"hþhFXx La clase Piece representa una pieza del
juego. El usuario puede
+qºh#hYh$h'h)h’h+}q»(U uriq¼X
+ images/etapa_2_en_pantalla.pngq½h3]q¾h1]q¿h-]qÀh/]qÁhš}qÂU *h½sh5]qÃuh7K h8h h
+]qÄubeubh ) qÅ}qÆ(h"U h#h h$h'h)h*h+}qÇ(h-]qÈh/]qÉh1]qÊh3]qËh ah5]qÌh auh7K
+h8h h
+]qÍ(h:) qÎ}qÏ(h"X ObjetosqÐh#hÅh$h'h)h>h+}qÑ(h-]qÒh/]qÓh1]qÔh3]qÕh5]qÖuh7K
+h8h h
+]q×hFX ObjetosqØ
+ qÙ}qÚ(h"hÐh#hÎubaubhJ) qÛ}qÜ(h"X; Esta etapa incorpora dos clases
importantes, Board y Piece.qÝh#hÅh$h'h)hNh+}qÞ(h-]qßh/]qàh1]qáh3]qâh5]qãuh7K
+h8h h
+]qähFX; Esta etapa incorpora dos clases importantes, Board y Piece.qå
+ qæ}qç(h"hÝh#hÛubaubh ) qè}qé(h"U h#hÅh$h'h)h*h+}qê(h-]qëh/]qìh1]qíh3]qîh ah5]qïh
+auh7K"h8h h
+]qð(h:) qñ}qò(h"X Pieceqóh#hèh$h'h)h>h+}qô(h-]qõh/]qöh1]q÷h3]qøh5]qùuh7K"h8h h
+]qúhFX Pieceqû
+ qü}qý(h"hóh#hñubaubhJ) qþ}qÿ(h"Xx La clase Piece representa una pieza
del juego. El usuario puede
+mover esta pieza pulsando los direccionales del
teclado.r h#hèh$h'h)hNh+}r (h-]r h/]r h1]r h3]r h5]r uh7K$h8h h
+]r hFXx La clase Piece representa una pieza del juego. El usuario
puede
mover esta pieza pulsando los direccionales del
teclado.r h#hüubaub(hHor }r
+ r }r
(h"XŒ Internamente la pieza está representada de dos formas, una
imagen que ve el usuario y una estructura de colisiones similar
-a lo siguiente::r h#hæh$h%h&hLh(}r (h*]r
+a lo siguiente::r
h,]r h.]r h0]r h2]r uh4K'h5h h
-]r hC) r }r (h"X‹ Internamente la pieza está representada de
dos formas, una
+]r hFX‹ Internamente la pieza está representada de dos formas, una
imagen que ve el usuario y una estructura de colisiones similar
a lo siguiente:r hFX‹ Internamente la pieza está representada de dos
formas, una
+ r }r (h"X‹ Internamente la pieza está representada de dos
formas, una
imagen que ve el usuario y una estructura de colisiones similar
-a lo siguiente:r h#j ubaub(cdocutils.nodes
+a lo siguiente:r h#j ubaubcdocutils.nodes
literal_block
-r or }r (h"X/ [ ] [X] [ ] [ ]
+r ) r }r (h"X/ [ ] [X] [ ] [ ]
[ ] [X] [ ] [ ]
-[ ] [X] [X] [ ]r h#hæh$h%h&U
-literal_blockr h(}r
+[ ] [X] [X] [ ]r
(U xml:spacer
+literal_blockr
U preserver
h0]r h.]r h*]r! h,]r" h2]r# uh4K+h5h h
-]r$ hC) r% }r& (h"U hFj h#j ubaub(hHor' }r( (h"Xª De
esta forma, es muy sencillo verificar si dos piezas están
+]r& hFX/ [ ] [X] [ ] [ ]
+[ ] [X] [ ] [ ]
+[ ] [X] [X] [ ]r'
+ r( }r) (h"U h#j ubaubhJ) r* }r+ (h"Xª De esta forma, es muy
sencillo verificar si dos piezas están
en colisión o constituyen una linea. El juego tiene una
-lógica de estructuras invisibles pero muy
simples.r) h#hæh$h%h&hLh(}r* (h*]r+ h,]r, h.]r- h0]r. h2]r/ uh4K/h5h h
-]r0 hC) r1 }r2 (h"j) hFXª De esta forma, es muy sencillo
verificar si dos piezas están
+lógica de estructuras invisibles pero muy
simples.r, h#hèh$h'h)hNh+}r- (h-]r. h/]r/ h1]r0 h3]r1 h5]r2 uh7K/h8h h
+]r3 hFXª De esta forma, es muy sencillo verificar si dos piezas están
en colisión o constituyen una linea. El juego tiene una
-lógica de estructuras invisibles pero muy
simples.r3 h#j' ubaub(hHor4 }r5 (h"XŒ La siguiente es una imagen
que resume la pantalla que ve
+lógica de estructuras invisibles pero muy simples.r4
+ r5 }r6 (h"j, h#j* ubaubhJ) r7 }r8 (h"XŒ La siguiente es una
imagen que resume la pantalla que ve
el usuario (a la izquierda) y la representación interna
-del juego con
estructuras:r6 h#hæh$h%h&hLh(}r7 (h*]r8 h,]r9 h.]r: h0]r; h2]r< uh4K3h5h h
-]r= hC) r> }r? (h"j6 hFXŒ La siguiente es una imagen que resume
la pantalla que ve
+del juego con
estructuras:r9 h#hèh$h'h)hNh+}r: (h-]r; h/]r< h1]r= h3]r> h5]r? uh7K3h8h h
+]r@ hFXŒ La siguiente es una imagen que resume la pantalla que ve
el usuario (a la izquierda) y la representación interna
-del juego con estructuras:r@ h#j4 ubaub(hŒorA }rB (h"X/ ..
image:: images/etapa_2_visual_y_logica.png
-
-rC h#hæh$h%h&h h(}rD (U urirE X" images/etapa_2_visual_y_logica.pngrF h0]rG h.]rH h*]rI h,]rJ h˜}rK U *jF sh2]rL uh4K9h5h h
-]rM ub(hHorN }rO (h"Xn Tanto la imagen de la izquierda, como el
modelo de la derecha, se
-almacenan internamente en el objeto
*Piece*.rP h#hæh$h%h&hLh(}rQ (h*]rR h,]rS h.]rT h0]rU h2]rV uh4K:h5h h
-]rW (hC) rX }rY (h"Xf Tanto la imagen de la izquierda, como el
modelo de la derecha, se
-almacenan internamente en el objeto rZ hFXf Tanto la imagen de la
izquierda, como el modelo de la derecha, se
+del juego con estructuras:rA
+ rB }rC (h"j9 h#j7 ubaubhŽ) rD }rE (h"X/ .. image::
images/etapa_2_visual_y_logica.png
+
+rF h#hèh$h'h)h’h+}rG (U urirH X" images/etapa_2_visual_y_logica.pngrI h3]rJ h1]rK h-]rL h/]rM hš}rN U *jI sh5]rO uh7K9h8h h
+]rP ubhJ) rQ }rR (h"Xn Tanto la imagen de la izquierda, como el
modelo de la derecha, se
+almacenan internamente en el objeto
*Piece*.rS h#hèh$h'h)hNh+}rT (h-]rU h/]rV h1]rW h3]rX h5]rY uh7K:h8h h
+]rZ (hFXf Tanto la imagen de la izquierda, como el modelo de la
derecha, se
almacenan internamente en el objeto
r[ h#jN ub(h{or\ }r] (h"X *Piece*r^ h(}r_ (h*]r` h,]ra h.]rb h0]rc h2]rd uh#jN h
-]re hC) rf }rg (h"U hFX Piecerh h#j\ ubah&h‰ubhC) ri }rj (h"X .hFX .h#jN ubeubeub(h ork }rl (h"U h#hÃh$h%h&h'h(}rm (h*]rn h,]ro h.]rp h0]rq h
-ah2]rr h auh4K?h5h h
-]rs ((h7ort }ru (h"X Boardrv h#jk h$h%h&h;h(}rw (h*]rx h,]ry h.]rz h0]r{ h2]r|
uh4K?h5h h
-]r} hC) r~ }r (h"jv hFX Boardr€ h#jt ubaub(hHor }r‚ (h"X  El
objeto
*Board* representa el tablero completo, y al igual que
-*Piece* tiene una estructura invisible al usuario en donde se
-almacenan los bloques utilizados.rƒ h#jk h$h%h&hLh(}r„ (h*]r
+ r\ }r] (h"Xf Tanto la imagen de la izquierda, como el modelo de la
derecha, se
+almacenan internamente en el objeto
r^ h#jQ ubh}) r_ }r` (h"X *Piece*ra h+}rb (h-]rc h/]rd h1]re h3]rf h5]rg uh#jQ h
+]rh hFX Pieceri
+ rj }rk (h"U h#j_ ubah)h‹ubhFX .
+ rl }rm (h"X .h#jQ ubeubeubh ) rn }ro (h"U h#hÅh$h'h)h*h+}rp (h-]rq h/]rr h1]rs h3]rt h
+ah5]ru h auh7K?h8h h
+]rv (h:) rw }rx (h"X Boardry h#jn h$h'h)h>h+}rz (h-]r{ h/]r|
h1]r} h3]r~ h5]r uh7K?h8h h
+]r€ hFX Boardr
+ r‚ }rƒ (h"jy h#jw ubaubhJ) r„ }r
h,]r† h.]r‡ h0]rˆ h2]r‰ uh4KAh5h h
-]rŠ (hC) r‹ }rŒ (h"X
- El objeto r hFX
- El objeto
rŽ h#j ub(h{or }r (h"X *Board*r‘ h(}r’ (h*]r“ h,]r” h.]r• h0]r– h2]r— uh#j h
-]r˜ hC) r™ }rš (h"U hFX Boardr› h#j ubah&h‰ubhC) rœ }r (h"X0
representa
el tablero completo, y al igual que
-rž hFX0 representa el tablero completo, y al igual que
+*Piece* tiene una estructura invisible al usuario en donde se
+almacenan los bloques
utilizados.r† h#jn h$h'h)hNh+}r‡ (h-]rˆ h/]r‰ h1]rŠ h3]r‹ h5]rŒ uh7KAh8h h
+]r (hFX
+ El objeto rŽ
+ r }r (h"X
+ El objeto
r‘ h#j„ ubh}) r’ }r“ (h"X *Board*r” h+}r• (h-]r– h/]r— h1]r˜ h3]r™ h5]rš uh#j„ h
+]r› hFX Boardrœ
+ r }rž (h"U h#j’ ubah)h‹ubhFX0 representa el tablero completo, y
al igual que

rŸ h#j ub(h{or  }r¡ (h"X *Piece*r¢ h(}r£ (h*]r¤ h,]r¥ h.]r¦ h0]r§ h2]r¨ uh#j h
-]r© hC) rª }r« (h"U hFX Piecer¬ h#j  ubah&h‰ubhC) r­ }r® (h"XX
tiene
una estructura invisible al usuario en donde se
-almacenan los bloques utilizados.r¯ hFXX tiene una estructura
invisible al usuario en donde se
+ r  }r¡ (h"X0 representa el tablero completo, y al igual que
+r¢ h#j„ ubh}) r£ }r¤ (h"X *Piece*r¥ h+}r¦ (h-]r§ h/]r¨ h1]r© h3]rª h5]r« uh#j„ h
+]r¬ hFX Piecer­
+ r® }r¯ (h"U h#j£ ubah)h‹ubhFXX tiene una estructura invisible al
usuario en donde se
almacenan los bloques utilizados.r° h#j ubeub(hHor± }r² (h"X~ Y
también tiene una representación visual, en donde se dibujan
-las piezas que tocan el suelo y el usuario ya no puede
mover.r³ h#jk h$h%h&hLh(}r´ (h*]rµ h,]r¶ h.]r· h0]r¸ h2]r¹ uh4KEh5h h
-]rº hC) r» }r¼ (h"j³ hFX~ Y también tiene una representación
visual, en donde se dibujan
-las piezas que tocan el suelo y el usuario ya no puede
mover.r½ h#j± ubaubeubeub(h or¾ }r¿ (h"U h#h
h$h%h&h'h(}rÀ (h*]rÁ h,]r h.]rà h0]rÄ h ah2]rÅ h auh4KJh5h h
-]rÆ ((h7orÇ }rÈ (h"X Interacción entre Piece y
BoardrÉ h#j¾ h$h%h&h;h(}rÊ (h*]rË h,]rÌ h.]rÍ h0]rÎ h2]rÏ uh4KJh5h h
-]rÐ hC) rÑ }rÒ (h"jÉ hFX Interacción entre Piece y
BoardrÓ h#jÇ ubaub(hHorÔ }rÕ (h"XÀ El objeto *Piece* responde a
las ordenes del usuario, pero a la vez
+ r± }r² (h"XX tiene una estructura invisible al usuario en donde se
+almacenan los bloques utilizados.r³ h#j„ ubeubhJ) r´ }rµ (h"X~ Y
también tiene una representación visual, en donde se dibujan
+las piezas que tocan el suelo y el usuario ya no puede
mover.r¶ h#jn h$h'h)hNh+}r· (h-]r¸ h/]r¹ h1]rº h3]r» h5]r¼ uh7KEh8h h
+]r½ hFX~ Y también tiene una representación visual, en donde se
dibujan
+las piezas que tocan el suelo y el usuario ya no puede mover.r¾
+ r¿ }rÀ (h"j¶ h#j´ ubaubeubeubh ) rÁ }r (h"U h#h
h$h'h)h*h+}rà (h-]rÄ h/]rÅ h1]rÆ h3]rÇ h ah5]rÈ h auh7KJh8h h
+]rÉ (h:) rÊ }rË (h"X Interacción entre Piece y
BoardrÌ h#jÁ h$h'h)h>h+}rÍ (h-]rÎ h/]rÏ h1]rÐ h3]rÑ h5]rÒ uh7KJh8h h
+]rÓ hFX Interacción entre Piece y BoardrÔ
+ rÕ }rÖ (h"jÌ h#jÊ ubaubhJ) r× }rØ (h"XÀ El objeto *Piece*
responde a las ordenes del usuario, pero a la vez
tiene que prohibir movimientos incorrectos, ya sea porque salen
-de la pantalla o porque existe una colisión con otra
pieza.rÖ h#j¾ h$h%h&hLh(}r× (h*]rØ h,]rÙ h.]rÚ h0]rÛ h2]rÜ uh4KLh5h h
-]rÝ (hC) rÞ }rß (h"X
- El objeto rà hFX
- El objeto
rá h#jÔ ub(h{orâ }rã (h"X *Piece*rä h(}rå (h*]ræ h,]rç h.]rè h0]ré h2]rê uh#jÔ h
-]rë hC) rì }rí (h"U hFX Piecerî h#jâ ubah&h‰ubhC) rï }rð (h"X¯
responde
a las ordenes del usuario, pero a la vez
-tiene que prohibir movimientos incorrectos, ya sea porque salen
-de la pantalla o porque existe una colisión con otra pieza.rñ hFX¯
responde a las ordenes del usuario, pero a la vez
+de la pantalla o porque existe una colisión con otra
pieza.rÙ h#jÁ h$h'h)hNh+}rÚ (h-]rÛ h/]rÜ h1]rÝ h3]rÞ h5]rß uh7KLh8h h
+]rà (hFX
+ El objeto rá
+ râ }rã (h"X
+ El objeto
rä h#j× ubh}) rå }ræ (h"X *Piece*rç h+}rè (h-]ré h/]rê h1]rë h3]rì h5]rí uh#j× h
+]rî hFX Piecerï
+ rð }rñ (h"U h#jå ubah)h‹ubhFX¯ responde a las ordenes del
usuario, pero a la vez
tiene que prohibir movimientos incorrectos, ya sea porque salen
de la pantalla o porque existe una colisión con otra
pieza.rò h#jÔ ubeub(hHoró }rô (h"X¹ Para manejar las
restricciones, el objeto *Piece* consulta en cada
+ ró }rô (h"X¯ responde a las ordenes del usuario, pero a la vez
+tiene que prohibir movimientos incorrectos, ya sea porque salen
+de la pantalla o porque existe una colisión con otra
pieza.rõ h#j× ubeubhJ) rö }r÷ (h"X¹ Para manejar las
restricciones, el objeto *Piece* consulta en cada
momento al objeto *Board*, y a su vez, *Board* inspecciona en su
-modelo de matriz si tiene lugar para situar la
pieza.rõ h#j¾ h$h%h&hLh(}rö (h*]r÷ h,]rø h.]rù h0]rú h2]rû uh4KPh5h h
-]rü (hC) rý }rþ (h"X* Para manejar las restricciones, el objeto
rÿ hFX* Para manejar las restricciones, el objeto
r h#jó ub(h{or }r (h"X *Piece*r h(}r (h*]r h,]r h.]r h0]r h2]r
uh#jó h
+modelo de matriz si tiene lugar para situar la
pieza.rø h#jÁ h$h'h)hNh+}rù (h-]rú h/]rû h1]rü h3]rý h5]rþ uh7KPh8h h
+]rÿ (hFX* Para manejar las restricciones, el objeto r
+ r }r (h"X* Para manejar las restricciones, el objeto
r h#jö ubh}) r }r (h"X *Piece*r h+}r (h-]r h/]r
h1]r
+ h3]r h5]r uh#jö h
]r
hC) r }r (h"U hFX Piecer
- h#j ubah&h‰ubhC) r }r (h"X$ consulta en cada
-momento al objeto r hFX$ consulta en cada
+ r }r (h"U h#j ubah)h‹ubhFX$ consulta en cada
momento al objeto
r h#jó ub(h{or }r (h"X *Board*r h(}r (h*]r h,]r h.]r h0]r h2]r uh#jó h
-]r hC) r
+ r }r (h"X$ consulta en cada
+momento al objeto
r h#jö ubh}) r }r (h"X *Board*r h+}r (h-]r h/]r h1]r h3]r
}r
(h"U hFX Boardr
+]r
h#j ubah&h‰ubhC) r }r (h"X , y a su vez, r! hFX , y a
su vez,
r" h#jó ub(h{or# }r$ (h"X *Board*r% h(}r& (h*]r' h,]r( h.]r) h0]r* h2]r+ uh#jó h
-]r, hC) r- }r. (h"U hFX Boardr/ h#j# ubah&h‰ubhC) r0 }r1 (h"XH
inspecciona
en su
-modelo de matriz si tiene lugar para situar la pieza.r2 hFXH
inspecciona en su
+ r }r! (h"U h#j ubah)h‹ubhFX , y a su vez, r"
+ r# }r$ (h"X , y a su vez,
r% h#jö ubh}) r& }r' (h"X *Board*r( h+}r) (h-]r* h/]r+ h1]r, h3]r- h5]r. uh#jö h
+]r/ hFX Boardr0
+ r1 }r2 (h"U h#j& ubah)h‹ubhFXH inspecciona en su
modelo de matriz si tiene lugar para situar la
pieza.r3 h#jó ubeubeub(h or4 }r5 (h"U h#h
h$h%h&h'h(}r6 (h*]r7 h,]r8 h.]r9 h0]r: h ah2]r; h auh4KVh5h h
-]r< ((h7or= }r> (h"X Inicialización de
piezasr? h#j4 h$h%h&h;h(}r@ (h*]rA h,]rB h.]rC h0]rD h2]rE uh4KVh5h h
-]rF hC) rG }rH (h"j? hFX Inicialización de
piezasrI h#j= ubaub(hHorJ }rK (h"XZ Cada pieza tiene una forma
que está compuesta por bloques que
-colisionan, y otros que
no.rL h#j4 h$h%h&hLh(}rM (h*]rN h,]rO h.]rP h0]rQ h2]rR uh4KXh5h h
-]rS hC) rT }rU (h"jL hFXZ Cada pieza tiene una forma que está
compuesta por bloques que
-colisionan, y otros que no.rV h#jJ ubaub(hHorW }rX (h"X~ La
forma de estas piezas se encuentra en archivos separados, uno
-por cada pieza, y se almacenan todos en el directorio
*mask*.rY h#j4 h$h%h&hLh(}rZ (h*]r[ h,]r\ h.]r] h0]r^ h2]r_ uh4K[h5h h
-]r` (hC) ra }rb (h"Xw La forma de estas piezas se encuentra en
archivos separados, uno
-por cada pieza, y se almacenan todos en el directorio rc hFXw La forma
de estas piezas se encuentra en archivos separados, uno
+ r4 }r5 (h"XH inspecciona en su
+modelo de matriz si tiene lugar para situar la
pieza.r6 h#jö ubeubeubh ) r7 }r8 (h"U h#h
h$h'h)h*h+}r9 (h-]r: h/]r; h1]r< h3]r= h ah5]r> h auh7KVh8h h
+]r? (h:) r@ }rA (h"X Inicialización de
piezasrB h#j7 h$h'h)h>h+}rC (h-]rD h/]rE h1]rF h3]rG h5]rH uh7KVh8h h
+]rI hFX Inicialización de piezasrJ
+ rK }rL (h"jB h#j@ ubaubhJ) rM }rN (h"XZ Cada pieza tiene
una forma que está compuesta por bloques que
+colisionan, y otros que
no.rO h#j7 h$h'h)hNh+}rP (h-]rQ h/]rR h1]rS h3]rT h5]rU uh7KXh8h h
+]rV hFXZ Cada pieza tiene una forma que está compuesta por bloques que
+colisionan, y otros que no.rW
+ rX }rY (h"jO h#jM ubaubhJ) rZ }r[ (h"X~ La forma de estas
piezas se encuentra en archivos separados, uno
+por cada pieza, y se almacenan todos en el directorio
*mask*.r\ h#j7 h$h'h)hNh+}r] (h-]r^ h/]r_ h1]r` h3]ra h5]rb uh7K[h8h h
+]rc (hFXw La forma de estas piezas se encuentra en archivos separados,
uno
por cada pieza, y se almacenan todos en el directorio
rd h#jW ub(h{ore }rf (h"X *mask*rg h(}rh (h*]ri h,]rj h.]rk h0]rl h2]rm uh#jW h
-]rn hC) ro }rp (h"U hFX maskrq h#je ubah&h‰ubhC) rr }rs (h"X .hFX .h#jW ubeub(hHort }ru (h"Xb Este
es
un ejemplo de la figura "L", el archivo tiene marcado
-con *x* los bloques que
colisionan::rv h#j4 h$h%h&hLh(}rw (h*]rx h,]ry h.]rz h0]r{ h2]r|
uh4K^h5h h
-]r} (hC) r~ }r (h"XB Este es un ejemplo de la figura "L", el
archivo tiene marcado
-con r€ hFXB Este es un ejemplo de la figura "L", el archivo tiene
marcado
+ re }rf (h"Xw La forma de estas piezas se encuentra en archivos
separados, uno
+por cada pieza, y se almacenan todos en el directorio
rg h#jZ ubh}) rh }ri (h"X *mask*rj h+}rk (h-]rl h/]rm h1]rn h3]ro h5]rp uh#jZ h
+]rq hFX maskrr
+ rs }rt (h"U h#jh ubah)h‹ubhFX .
+ ru }rv (h"X .h#jZ ubeubhJ) rw }rx (h"Xb Este es un ejemplo
de la figura "L", el archivo tiene marcado
+con *x* los bloques que
colisionan::ry h#j7 h$h'h)hNh+}rz (h-]r{ h/]r|
h1]r} h3]r~ h5]r uh7K^h8h h
+]r€ (hFXB Este es un ejemplo de la figura "L", el archivo tiene marcado
con r h#jt ub(h{or‚ }rƒ (h"X *x*r„ h(}r
+ r‚ }rƒ (h"XB Este es un ejemplo de la figura "L", el archivo tiene
marcado
+con r„ h#jw ubh}) r
(h*]r† h,]r‡ h.]rˆ h0]r‰ h2]rŠ uh#jt h
-]r‹ hC) rŒ }r (h"U hFX xh#j‚ ubah&h‰ubhC) rŽ }r (h"X
- los bloques que colisionan:r hFX
+]rŽ hFX x
+ r }r (h"U h#j
+ ubah)h‹ubhFX
+ los bloques que colisionan:r‘
+ r’ }r“ (h"X
los bloques que
colisionan:r‘ h#jt ubeub(j or’ }r“ (h"XM ..x.
xxx.
....
@@ -176,26 +227,45 @@
xx..
.x..
.x..
-....r” h#j4 h$h%h&j h(}r• (j
+....r— h#j7 h$h'h)j
j
- h0]r– h.]r— h*]r˜ h,]r™ h2]rš uh4Kbh5h h
-]r› hC) rœ }r (h"U hFj” h#j’ ubaubeubeubah"U U transformerrž NU
-footnote_refsrŸ }r  U refnamesr¡ }r¢ U symbol_footnotesr£ ]r¤ U autofootnote_refsr¥ ]r¦ U symbol_footnote_refsr§ ]r¨ U
citationsr© ]rª h5h U current_liner« NU transform_messagesr¬ ]r­ U reporterr® NU id_startr¯ K U
-autofootnotesr° ]r± U
-citation_refsr² }r³ U indirect_targetsr´ ]rµ U settingsr¶ (cdocutils.frontend
+]rž hFXM ..x.
+xxx.
+....
+
+.x..
+.x..
+.xx.
+....
+
+....
+xxx.
+x...
+....
+
+xx..
+.x..
+.x..
+....rŸ
+ r  }r¡ (h"U h#j• ubaubeubeubah"U U transformerr¢ NU
+footnote_refsr£ }r¤ U refnamesr¥ }r¦ U symbol_footnotesr§ ]r¨ U autofootnote_refsr© ]rª U symbol_footnote_refsr« ]r¬ U
citationsr­ ]r® h8h U current_liner¯ NU transform_messagesr° ]r± U reporterr² NU id_startr³ K U
+autofootnotesr´ ]rµ U
+citation_refsr¶ }r· U indirect_targetsr¸ ]r¹ U settingsrº (cdocutils.frontend
Values
-r· or¸ }r¹ (U footnote_backlinksrº K U record_dependenciesr» NU rfc_base_urlr¼ U http://tools.ietf.org/html/r½ U
tracebackr¾ K U pep_referencesr¿ NU strip_commentsrÀ NU
-toc_backlinksrÁ U entryr U
-language_coderà U enrÄ U
datestamprÅ NU report_levelrÆ K U _destinationrÇ NU
-halt_levelrÈ K U
-strip_classesrÉ Nh;NU
-error_encoding_error_handlerrÊ U backslashreplacerË U debugrÌ NU embed_stylesheetrÍ ‰U
-output_encoding_error_handlerrÎ U strictrÏ U
-sectnum_xformrÐ K U dump_transformsrÑ NU
-docinfo_xformrÒ K U warning_streamrÓ NU pep_file_url_templaterÔ U pep-%04drÕ U exit_status_levelrÖ K U configr× NU strict_visitorrØ NU cloak_email_addressesrÙ ˆU
-trim_footnote_reference_spacerÚ ‰U envrÛ NU dump_pseudo_xmlrÜ NU expose_internalsrÝ NU sectsubtitle_xformrÞ ‰U source_linkrß NU rfc_referencesrà NU output_encodingrá U utf-8râ U
-source_urlrã NU input_encodingrä U utf-8rå U _disable_configræ NU
id_prefixrç U U
tab_widthrè K U error_encodingré U asciirê U _sourcerë h%U
generatorrì NU dump_internalsrí NU pep_base_urlrî U http://www.python.org/dev/peps/rï U
-input_encoding_error_handlerrð jÏ U auto_id_prefixrñ U idrò U doctitle_xformró ‰U strip_elements_with_classesrô NU
-_config_filesrõ ]rö U file_insertion_enabledr÷ K U raw_enabledrø K U
-dump_settingsrù NubU symbol_footnote_startrú K U idsrû }rü (h j4 h j¾ h hWh h
h
-jk h hæh hÃuU substitution_namesrý }rþ h&h5h(}rÿ (h*]r h0]r h.]r U sourcer h%h,]r h2]r uU
footnotesr ]r U refidsr }r
ub.
+r» or¼ }r½ (U footnote_backlinksr¾ K U record_dependenciesr¿ NU rfc_base_urlrÀ U http://tools.ietf.org/html/rÁ U
tracebackr K U pep_referencesrà NU strip_commentsrÄ NU
+toc_backlinksrÅ U entryrÆ U
+language_coderÇ U enrÈ U
datestamprÉ NU report_levelrÊ K U _destinationrË NU
+halt_levelrÌ K U
+strip_classesrÍ Nh>NU
+error_encoding_error_handlerrÎ U backslashreplacerÏ U debugrÐ NU embed_stylesheetrÑ ‰U
+output_encoding_error_handlerrÒ U strictrÓ U
+sectnum_xformrÔ K U dump_transformsrÕ NU
+docinfo_xformrÖ K U warning_streamr× NU pep_file_url_templaterØ U pep-%04drÙ U exit_status_levelrÚ K U configrÛ NU strict_visitorrÜ NU cloak_email_addressesrÝ ˆU
+trim_footnote_reference_spacerÞ ‰U envrß NU dump_pseudo_xmlrà NU expose_internalsrá NU sectsubtitle_xformrâ ‰U source_linkrã NU rfc_referencesrä NU output_encodingrå U utf-8ræ U
+source_urlrç NU input_encodingrè U
utf-8-sigré U _disable_configrê NU id_prefixrë U U
tab_widthrì K U error_encodingrí U UTF-8rî U _sourcerï UD/home/hugoruscitti/proyectos/asadetris/doc/source/diseno_etapa_2.rstrð U
generatorrñ NU dump_internalsrò NU pep_base_urlró U http://www.python.org/dev/peps/rô U
+input_encoding_error_handlerrõ jÓ U auto_id_prefixrö U idr÷ U doctitle_xformrø ‰U strip_elements_with_classesrù NU
+_config_filesrú ]rû U file_insertion_enabledrü K U raw_enabledrý K U
+dump_settingsrþ NubU symbol_footnote_startrÿ K U idsr }r (h jÁ h j7 h hYh
+jn h h
h hèh hÅuU substitution_namesr }r h)h8h+}r (h-]r h3]r h1]r U sourcer h'h/]r
h5]r
+ uU footnotesr ]r U refidsr
+ }r ub.
=======================================
--- /doc/build/doctrees/diseno_etapa_3.doctree Sat Aug 15 19:44:04 2009
+++ /doc/build/doctrees/diseno_etapa_3.doctree Sun May 23 10:58:24 2010
@@ -1,321 +1,369 @@
-€ (cdocutils.nodes
+€ cdocutils.nodes
document
-q oq }q (U nametypesq }q (X aspecto visual del tableroq NX
+q ) q }q (U nametypesq }q (X aspecto visual del tableroq NX
nuevas piezasq NX diseño de la etapa 3q NX colisiones entre
piezasq NuU substitution_defsq
}q U parse_messagesq ]q
U current_sourceq NU

decorationq NU autofootnote_startq K U nameidsq }q (h U aspecto-visual-del-tableroq h U
-nuevas-piezasq h U dise-o-de-la-etapa-3q h
U colisiones-entre-piezasq uU childrenq ]q (cdocutils.nodes
+nuevas-piezasq h U diseno-de-la-etapa-3q h
U colisiones-entre-piezasq uU childrenq ]q cdocutils.nodes
section
-q oq }q (U rawsourceq
+q ) q }q (U rawsourceq
U U parentq
h U sourceq
-UD/home/hugoruscitti/proyectos/asadetris/doc/source/diseno_etapa_3.rstq U tagnameq
U sectionq!U
-attributesq"}q#(U dupnamesq$]q%U classesq&]q'U backrefsq(]q)U idsq*]q+h aU namesq,]q-h auU lineq.K U documentq/h h ]q0((cdocutils.nodes
+cdocutils.nodes
+reprunicode
+q XD /home/hugoruscitti/proyectos/asadetris/doc/source/diseno_etapa_3.rstq
+ q!}q"bU tagnameq#U sectionq$U
+attributesq%}q&(U dupnamesq']q(U classesq)]q*U backrefsq+]q,U idsq-]q.h aU namesq/]q0h auU lineq1K U documentq2h h ]q3(cdocutils.nodes
title
-q1oq2}q3(h
+q4) q5}q6(h
X Diseño de la etapa 3q4h
h h
-h h U titleq5h"}q6(h$]q7h&]q8h(]q9h*]q:h,]q;uh.K h/h h ]q<cdocutils.nodes
+h!h#U titleq8h%}q9(h']q:h)]q;h+]q<h-]q=h/]q>uh1K h2h h ]q?cdocutils.nodes
Text
-q=) q>}q?(h
-h4U dataq@X Diseño de la etapa 3qAh
-h2ubaub(cdocutils.nodes
+q@X Diseño de la etapa 3qA
+ qB}qC(h
+h7h
+h5ubaubcdocutils.nodes
paragraph
-qBoqC}qD(h
+qD) qE}qF(h
X§ Esta etapa tiene 2 grandes cambios, se generan las piezas restantes
y se implementa la colisión entre las piezas que han tocado el suelo
-y la que controla el usuario.qEh
+y la que controla el usuario.qGh
h h
-h h U paragraphqFh"}qG(h$]qHh&]qIh(]qJh*]qKh,]qLuh.K h/h h ]qMh=) qN}qO(h
-hEh@X§ Esta etapa tiene 2 grandes cambios, se generan las piezas
restantes
+h!h#U paragraphqHh%}qI(h']qJh)]qKh+]qLh-]qMh/]qNuh1K h2h h ]qOh@X§ Esta
etapa tiene 2 grandes cambios, se generan las piezas restantes
y se implementa la colisión entre las piezas que han tocado el suelo
-y la que controla el usuario.qPh
-hCubaub(h oqQ}qR(h
+y la que controla el usuario.qP
+ qQ}qR(h
+hGh
+hEubaubh ) qS}qT(h
U h
h h
-h h h!h"}qS(h$]qTh&]qUh(]qVh*]qWh ah,]qXh auh.K
-h/h h ]qY((h1oqZ}q[(h
+h!h#h$h%}qU(h']qVh)]qWh+]qXh-]qYh ah/]qZh auh1K
+h2h h ]q[(h4) q\}q](h
X
Nuevas piezasq\h
-hQh
-h h h5h"}q](h$]q^h&]q_h(]q`h*]qah,]qbuh.K
-h/h h ]qch=) qd}qe(h
-h\h@X
- Nuevas piezasqfh
-hZubaub(hBoqg}qh(h
+hSh
+h!h#h8h%}q_(h']q`h)]qah+]qbh-]qch/]qduh1K
+h2h h ]qeh@X
+ Nuevas piezasqf
+ qg}qh(h
+h^h
+h\ubaubhD) qi}qj(h
XM Cada una de las piezas tiene su *Mapa* de colisiones en el
-directorio `mask`.qih
-hQh
-h h hFh"}qj(h$]qkh&]qlh(]qmh*]qnh,]qouh.K h/h h ]qp(h=) qq}qr(h
+directorio `mask`.qkh
+hSh
+h!h#hHh%}ql(h']qmh)]qnh+]qoh-]qph/]qquh1K h2h h ]qr(h@X Cada una de las
piezas tiene su qs
+ qt}qu(h
X Cada una de las piezas tiene su qsh@X Cada una de las piezas tiene
su qth
-hgub(cdocutils.nodes
+hiubcdocutils.nodes
emphasis
-quoqv}qw(h
+qw) qx}qy(h
X *Mapa*qxh"}qy(h$]qzh&]q{h(]q|h*]q}h,]q~uh
-hgh ]q h=) q€}q (h
+hih ]q h@X Mapaq‚
+ qƒ}q„(h
U h@X Mapaq‚h
-hvubah U emphasisqƒubh=) q„}q
-(h
+hxubah#U emphasisq
+ubh@X de colisiones en el
+directorio q†
+ q‡}qˆ(h
X de colisiones en el
-directorio q†h@X de colisiones en el
-directorio q‡h
-hgub(cdocutils.nodes
+directorio q‰h
+hiubcdocutils.nodes
title_reference
-qˆoq‰}qŠ(h
+qŠ) q‹}qŒ(h
X `mask`q‹h"}qŒ(h$]q h&]qŽh(]q h*]q h,]q‘uh
-hgh ]q’h=) q“}q”(h
+hih ]q”h@X maskq•
+ q–}q—(h
U h@X maskq•h
-h‰ubah U title_referenceq–ubh=) q—}q˜(h
+h‹ubah#U title_referenceq˜ubh@X .
+ q™}qš(h
X .h@X .h
-hgubeub(hBoq™}qš(h
+hiubeubhD) q›}qœ(h
Xm Para implementar el resto de las piezas solo se debe crear
-una imagen y un mapa de colisión para cada pieza.q›h
-hQh
-h h hFh"}qœ(h$]q h&]qžh(]qŸh*]q h,]q¡uh.K h/h h ]q¢h=) q£}q¤(h
-h›h@Xm Para implementar el resto de las piezas solo se debe crear
-una imagen y un mapa de colisión para cada pieza.q¥h
-h™ubaub(hBoq¦}q§(h
+una imagen y un mapa de colisión para cada pieza.q h
+hSh
+h!h#hHh%}qž(h']qŸh)]q h+]q¡h-]q¢h/]q£uh1K h2h h ]q¤h@Xm Para implementar
el resto de las piezas solo se debe crear
+una imagen y un mapa de colisión para cada pieza.q¥
+ q¦}q§(h
+h h
+h›ubaubhD) q¨}q©(h
X+ Este es el contenido del directorio `mask`:q¨h
-hQh
-h h hFh"}q©(h$]qªh&]q«h(]q¬h*]q­h,]q®uh.K h/h h ]q¯(h=) q°}q±(h
+hSh
+h!h#hHh%}q«(h']q¬h)]q­h+]q®h-]q¯h/]q°uh1K h2h h ]q±(h@X$ Este es el
contenido del directorio q²
+ q³}q´(h
X$ Este es el contenido del directorio q²h@X$ Este es el contenido del
directorio q³h
-h¦ub(hˆoq´}qµ(h
+h¨ubhŠ) q¶}q·(h
X `mask`q¶h"}q·(h$]q¸h&]q¹h(]qºh*]q»h,]q¼uh
-h¦h ]q½h=) q¾}q¿(h
+h¨h ]q¿h@X maskqÀ
+ qÁ}qÂ(h
U h@X maskqÀh
-h´ubah h–ubh=) qÁ}qÂ(h
+h¶ubah#h˜ubh@X :
+ qÃ}qÄ(h
X :h@X :h
-h¦ubeub(cdocutils.nodes
+h¨ubeubcdocutils.nodes
bullet_list
-qÃoqÄ}qÅ(h
+qÅ) qÆ}qÇ(h
U h
-hQh
-h h
U bullet_listqÆh"}qÇ(U bulletqÈX *h*]qÉh(]qÊh$]qËh&]qÌh,]qÍuh.K h/h h ]qÎ((cdocutils.nodes
+hSh
+h!h#U bullet_listqÈh%}qÉ(U bulletqÊX *h-]qËh+]qÌh']qÍh)]qÎh/]qÏuh1K h2h h ]qÐ(cdocutils.nodes
list_item
-qÏoqÐ}qÑ(h
+qÑ) qÒ}qÓ(h
X p0.txtqÒh
-hÄh
-h h U list_itemqÓh"}qÔ(h$]qÕh&]qÖh(]q×h*]qØh,]qÙuh.Nh/h h ]qÚ(hBoqÛ}qÜ(h
-hÒh
-hÐh hFh"}qÝ(h$]qÞh&]qßh(]qàh*]qáh,]qâuh.K h ]qãh=) qä}qå(h
-hÒh@X p0.txtqæh
-hÛubaubaub(hÏoqç}qè(h
+hÆh
+h!h#U list_itemqÕh%}qÖ(h']q×h)]qØh+]qÙh-]qÚh/]qÛuh1Nh2h h ]qÜhD) qÝ}qÞ(h
+hÔh
+hÒh#hHh%}qß(h']qàh)]qáh+]qâh-]qãh/]qäuh1K h ]qåh@X p0.txtqæ
+ qç}qè(h
+hÔh
+hÝubaubaubhÑ) qé}qê(h
X p1.txtqéh
-hÄh
-h h hÓh"}qê(h$]qëh&]qìh(]qíh*]qîh,]qïuh.Nh/h h ]qð(hBoqñ}qò(h
-héh
-hçh hFh"}qó(h$]qôh&]qõh(]qöh*]q÷h,]qøuh.K h ]qùh=) qú}qû(h
-héh@X p1.txtqüh
-hñubaubaub(hÏoqý}qþ(h
+hÆh
+h!h#hÕh%}qì(h']qíh)]qîh+]qïh-]qðh/]qñuh1Nh2h h ]qòhD) qó}qô(h
+hëh
+héh#hHh%}qõ(h']qöh)]q÷h+]qøh-]qùh/]qúuh1K h ]qûh@X p1.txtqü
+ qý}qþ(h
+hëh
+hóubaubaubhÑ) qÿ}r (h
X p2.txtqÿh
-hÄh
-h h
hÓh"}r (h$]r h&]r h(]r h*]r h,]r uh.Nh/h h ]r (hBor }r (h
-hÿh
-hýh hFh"}r (h$]r
+hÆh
+h!h#hÕh%}r (h']r h)]r h+]r h-]r h/]r uh1Nh2h h ]r hD) r
}r
h&]r h(]r h*]r
+j h
+hÿh#hHh%}r (h']r h)]r
h,]r uh.K h ]r h=) r }r (h
-hÿh@X p2.txtr h
-j ubaubaub(hÏor }r (h
+ r }r (h
+j h
+j ubaubaubhÑ) r }r (h
X p3.txtr h
-hÄh
-h h hÓh"}r (h$]r h&]r h(]r h*]r h,]r uh.Nh/h h ]r
+hÆh
+h!h#hÕh%}r (h']r h)]r h+]r h-]r
(hBor
}r
(h
+j h
j h
-j h hFh"}r (h$]r
h&]r! h(]r" h*]r# h,]r$ uh.K h ]r% h=) r& }r' (h
-j h@X p3.txtr( h
-j
- ubaubaub(hÏor) }r* (h
+ r) }r* (h
+j h
+j ubaubaubhÑ) r+ }r, (h
X p4.txtr+ h
-hÄh
-h h
hÓh"}r, (h$]r- h&]r. h(]r/ h*]r0 h,]r1 uh.Nh/h h ]r2 (hBor3 }r4 (h
+hÆh
+h!h#hÕh%}r. (h']r/ h)]r0 h+]r1 h-]r2 h/]r3 uh1Nh2h h ]r4 hD) r5 }r6 (h
+j- h
j+ h
-j) h
hFh"}r5 (h$]r6 h&]r7 h(]r8 h*]r9 h,]r: uh.K h ]r; h=) r< }r= (h
-j+ h@X p4.txtr> h
-j3 ubaubaub(hÏor? }r@ (h
+ r? }r@ (h
+j- h
+j5 ubaubaubhÑ) rA }rB (h
X p5.txt


-rA h
-hÄh
-h h
hÓh"}rB (h$]rC h&]rD h(]rE h*]rF h,]rG uh.Nh/h h ]rH (hBorI }rJ (h
+rC h
+hÆh
+h!h#hÕh%}rD (h']rE h)]rF h+]rG h-]rH h/]rI uh1Nh2h h ]rJ hD) rK }rL (h
X p5.txtrK h
-j? h
hFh"}rL (h$]rM h&]rN h(]rO h*]rP h,]rQ uh.K h ]rR h=) rS }rT (h
+jA h#hHh%}rN (h']rO h)]rP h+]rQ h-]rR h/]rS uh1K h ]rT h@X p5.txtrU
+ rV }rW (h
+jM h
jK h@X p5.txtrU h
-jI ubaubaubeubeub(h orV }rW (h
U h
h h
-h h h!h"}rX (h$]rY h&]rZ h(]r[ h*]r\ h ah,]r] h auh.K
-h/h h ]r^ ((h1or_ }r` (h
+h!h#h$h%}rZ (h']r[ h)]r\ h+]r] h-]r^ h ah/]r_ h auh1K
+h2h h ]r` (h4) ra }rb (h
X Colisiones entre piezasra h
-jV h
-h h h5h"}rb (h$]rc h&]rd h(]re h*]rf h,]rg uh.K
-h/h h ]rh h=) ri }rj (h
+jX h
+h!h#h8h%}rd (h']re h)]rf h+]rg h-]rh h/]ri uh1K
+h2h h ]rj h@X Colisiones entre piezasrk
+ rl }rm (h
+jc h
ja h@X Colisiones entre piezasrk h
-j_ ubaub(hBorl }rm (h
X~ Internamente la pieza tiene una estructura de colisiones que
-podría colisionar con alguna pieza en reposo dentro del tablero.rn h
-jV h
-h h hFh"}ro (h$]rp h&]rq h(]rr h*]rs h,]rt uh.K
h/h h ]ru h=) rv }rw (h
-jn h@X~ Internamente la pieza tiene una estructura de colisiones que
+podría colisionar con alguna pieza en reposo dentro del tablero.rp h
+jX h
+h!h#hHh%}rq (h']rr h)]rs h+]rt h-]ru h/]rv uh1K
h2h h ]rw h@X~ Internamente la pieza tiene una estructura de colisiones
que
podría colisionar con alguna pieza en reposo dentro del tablero.rx h
-jl ubaub(hBory }rz (h
+ ry }rz (h
+jp h
+jn ubaubhD) r{ }r| (h
X Esta situación de colisión se verifica por parte del objeto
`Board`. Este
objeto tiene una mapa completo de todas las piezas en reposo, y cuando
una pieza le consulta, si puede ocupar una parte del escenario, `Board`
-recibe el mapa de la pieza y analiza posición a posición.r{ h
-jV h
-h h hFh"}r|
(h$]r} h&]r~ h(]r h*]r€ h,]r uh.K#h/h h ]r‚ (h=) rƒ }r„ (h
-X> Esta situación de colisión se verifica por parte del objeto r
+recibe el mapa de la pieza y analiza posición a posición.r} h
+jX h
+h!h#hHh%}r~ (h']r h)]r€ h+]r h-]r‚ h/]rƒ uh1K#h2h h ]r„ (h@X> Esta
situación
de colisión se verifica por parte del objeto r
h@X> Esta situación de colisión se verifica por parte del objeto
r† h
-jy ub(hˆor‡ }rˆ (h
+ r† }r‡ (h
+X> Esta situación de colisión se verifica por parte del objeto rˆ h
+j{ ubhŠ) r‰ }rŠ (h
X `Board`r‰ h"}rŠ (h$]r‹ h&]rŒ h(]r h*]rŽ h,]r uh
-jy h ]r h=) r‘ }r’ (h
+j{ h ]r’ h@X Boardr“
+ r” }r• (h
U h@X Boardr“ h
-j‡ ubah h–ubh=) r” }r• (h
-XŽ . Este
+j‰ ubah#h˜ubh@XŽ . Este
objeto tiene una mapa completo de todas las piezas en reposo, y cuando
una pieza le consulta, si puede ocupar una parte del escenario,
r– h@XŽ . Este
+ r— }r˜ (h
+XŽ . Este
objeto tiene una mapa completo de todas las piezas en reposo, y cuando
-una pieza le consulta, si puede ocupar una parte del escenario, r— h
-jy ub(hˆor˜ }r™ (h
+una pieza le consulta, si puede ocupar una parte del escenario, r™ h
+j{ ubhŠ) rš }r› (h
X `Board`rš h"}r› (h$]rœ h&]r h(]rž h*]rŸ h,]r  uh
-jy h ]r¡ h=) r¢ }r£ (h
+j{ h ]r£ h@X Boardr¤
+ r¥ }r¦ (h
U h@X Boardr¤ h
-j˜ ubah h–ubh=) r¥ }r¦ (h
-X<
+jš ubah#h˜ubh@X<
recibe el mapa de la pieza y analiza posición a posición.r§ h@X<
-recibe el mapa de la pieza y analiza posición a posición.r¨ h
-jy ubeub(hBor© }rª (h
+ r¨ }r© (h
+X<
+recibe el mapa de la pieza y analiza posición a posición.rª h
+j{ ubeubhD) r« }r¬ (h
X¼ En esta etapa se agrega un nuevo mensaje de intercambio entre las
dos clases, cuando la pieza se suelta, el tablero recibe la orden
-de ocupar parte del escenario con los datos de la pieza.r« h
-jV h
-h h
hFh"}r¬ (h$]r­ h&]r® h(]r¯ h*]r° h,]r± uh.K(h/h h ]r² h=) r³ }r´ (h
-j« h@X¼ En esta etapa se agrega un nuevo mensaje de intercambio entre
las
+de ocupar parte del escenario con los datos de la pieza.r­ h
+jX h
+h!h#hHh%}r® (h']r¯ h)]r° h+]r± h-]r² h/]r³ uh1K(h2h h ]r´ h@X¼ En
esta
etapa se agrega un nuevo mensaje de intercambio entre las
dos clases, cuando la pieza se suelta, el tablero recibe la orden
de ocupar parte del escenario con los datos de la pieza.rµ h
-j© ubaub(hBor¶ }r· (h
+ r¶ }r· (h
+j­ h
+j« ubaubhD) r¸ }r¹ (h
XQ Este es un diagrama que refleja este intercambio de mensajes entre
-ambos objetos:r¸ h
-jV h
-h h
hFh"}r¹ (h$]rº h&]r» h(]r¼ h*]r½ h,]r¾ uh.K,h/h h ]r¿ h=) rÀ }rÁ (h
-j¸ h@XQ Este es un diagrama que refleja este intercambio de mensajes
entre
+ambos objetos:rº h
+jX h
+h!h#hHh%}r» (h']r¼ h)]r½ h+]r¾ h-]r¿ h/]rÀ uh1K,h2h h ]rÁ h@XQ Este
es
un diagrama que refleja este intercambio de mensajes entre
ambos objetos:r h
-j¶ ubaub(cdocutils.nodes
+ rà }rÄ (h
+jº h
+j¸ ubaubcdocutils.nodes
image
-rà orÄ }rÅ (h
+rÅ ) rÆ }rÇ (h
XB .. image:: images/intercambio_de_mensajes_piece_board_et3.png




-rÆ h
-jV h
-h h
U imagerÇ h"}rÈ (U urirÉ X2 images/intercambio_de_mensajes_piece_board_et3.pngrÊ h*]rË h(]rÌ h$]rÍ h&]rÎ U
-candidatesrÏ }rÐ U *jÊ sh,]rÑ uh.K5h/h h ]rÒ ub(cdocutils.nodes
+rÈ h
+jX h
+h!h#U imagerÉ h%}rÊ (U urirË X2 images/intercambio_de_mensajes_piece_board_et3.pngrÌ h-]rÍ h+]rÎ h']rÏ h)]rÐ U
+candidatesrÑ }rÒ U *jÌ sh/]rÓ uh1K5h2h h ]rÔ ubcdocutils.nodes
comment
-rÓ orÔ }rÕ (h
+rÕ ) rÖ }r× (h
Xë <<Usuario>> -> Piece: move
Piece -> Board: can_put_this_piece_here
alt Si Board encuentra una colisión.
Piece -> Board: put_one_piece_here
Board -> Board: update_matrix_putting_a_new_piece
Board -> Board: go_to_next_piece
-endrÖ h
-jV h
-h h U commentr× h"}rØ (U
xml:spacerÙ U preserverÚ h*]rÛ h(]rÜ h$]rÝ h&]rÞ h,]rß uh.K?h/h h ]rà h=) rá }râ (h
+endrØ h
+jX h
+h!h#U commentrÙ h%}rÚ (U
xml:spacerÛ U preserverÜ h-]rÝ h+]rÞ h']rß h)]rà h/]rá uh1K?h2h h ]râ h@Xë <<Usuario>>
-> Piece: move
+Piece -> Board: can_put_this_piece_here
+alt Si Board encuentra una colisión.
+ Piece -> Board: put_one_piece_here
+ Board -> Board: update_matrix_putting_a_new_piece
+ Board -> Board: go_to_next_piece
+endrã
+ rä }rå (h
U h@jÖ h
-jÔ ubaubeub(h orã }rä (h
+jÖ ubaubeubh ) ræ }rç (h
U h
h h
-h h
h!h"}rå (h$]ræ h&]rç h(]rè h*]ré h ah,]rê h auh.KAh/h h ]rë ((h1orì }rí (h
+h!h#h$h%}rè (h']ré h)]rê h+]rë h-]rì h ah/]rí h auh1KAh2h h ]rî (h4) rï }rð (h
X Aspecto visual del tablerorî h
-jã h
-h h
h5h"}rï (h$]rð h&]rñ h(]rò h*]ró h,]rô uh.KAh/h h ]rõ h=) rö }r÷ (h
-jî h@X Aspecto visual del tablerorø h
-jì ubaub(hBorù }rú (h
+jæ h
+h!h#h8h%}rò (h']ró h)]rô h+]rõ h-]rö h/]r÷ uh1KAh2h h ]rø h@X Aspecto
visual
del tablerorù
+ rú }rû (h
+jñ h
+jï ubaubhD) rü }rý (h
X¼ Si bien el objeto `Board` tiene una matriz con información de todos
los bloques ocupados y libres. También necesita una superficie visual
-en donde se pueda observar las piezas en reposo.rû h
-jã h
-h h
hFh"}rü (h$]rý h&]rþ h(]rÿ h*]r h,]r uh.KCh/h h ]r (h=) r }r (h
+en donde se pueda observar las piezas en reposo.rþ h
+jæ h
+h!h#hHh%}rÿ (h']r h)]r h+]r h-]r h/]r uh1KCh2h h ]r (h@X Si
bien
el objeto r
+ r }r (h
X Si bien el objeto r h@X Si bien el objeto r h
-jù ub(hˆor }r (h
+jü ubhŠ) r
+ }r (h
X `Board`r h"}r
(h$]r h&]r h(]r
- h*]r h,]r uh
-jù h ]r h=) r }r (h
+jü h ]r h@X Boardr
+ r }r (h
U h@X Boardr h
-j ubah h–ubh=) r }r (h
-X£ tiene una matriz con información de todos
-los bloques ocupados y libres. También necesita una superficie visual
-en donde se pueda observar las piezas en reposo.r h@X£ tiene una
matriz con información de todos
+j
+ ubah#h˜ubh@X£ tiene una matriz con información de todos
los bloques ocupados y libres. También necesita una superficie visual
en donde se pueda observar las piezas en reposo.r h
-jù ubeub(hBor }r (h
+ r }r (h
+X£ tiene una matriz con información de todos
+los bloques ocupados y libres. También necesita una superficie visual
+en donde se pueda observar las piezas en reposo.r h
+jü ubeubhD) r }r
+ (h
Xß Este criterio es parecido al que se utiliza en las piezas, aquí el
tablero tiene dos estructuras de datos: una matriz con información
*invisible* de las colisiones y una superficie que refleja esa
-matriz pero visualmente.r h
-jã h
-h h hFh"}r (h$]r
+matriz pero visualmente.r
h&]r
+jæ h
+h!h#hHh%}r
h(]r
- h*]r h,]r uh.KGh/h h ]r! (h=) r" }r# (h
-Xˆ Este criterio es parecido al que se utiliza en las piezas, aquí el
-tablero tiene dos estructuras de datos: una matriz con información
-r$ h@Xˆ Este criterio es parecido al que se utiliza en las piezas,
aquí el
tablero tiene dos estructuras de datos: una matriz con información
r% h
-j ub(huor& }r' (h
+ r& }r' (h
+Xˆ Este criterio es parecido al que se utiliza en las piezas, aquí el
+tablero tiene dos estructuras de datos: una matriz con información
+r( h
+j ubhw) r) }r* (h
X *invisible*r( h"}r) (h$]r* h&]r+ h(]r, h*]r- h,]r. uh
-j h ]r/ h=) r0 }r1 (h
+j h ]r2 h@X invisibler3
+ r4 }r5 (h
U h@X invisibler2 h
-j& ubah hƒubh=) r3 }r4 (h
-XL de las colisiones y una superficie que refleja esa
-matriz pero visualmente.r5 h@XL de las colisiones y una superficie
que refleja esa
+j) ubah#h
+ubh@XL de las colisiones y una superficie que refleja esa
matriz pero visualmente.r6 h
-j ubeub(hBor7 }r8 (h
+ r7 }r8 (h
+XL de las colisiones y una superficie que refleja esa
+matriz pero visualmente.r9 h
+j ubeubhD) r: }r; (h
Xê El atributo que representa el aspecto visual de las piezas que
reposan es `Board.visual_matrix`. Este atributo señala a una
superficie que inicialmente es transparente, pero se dibuja
-sobre ella conforme se deja reposar alguna pieza.r9 h
-jã h
-h h
hFh"}r: (h$]r; h&]r< h(]r= h*]r> h,]r? uh.KLh/h h ]r@ (h=) rA }rB (h
-XJ El atributo que representa el aspecto visual de las piezas que
-reposan es rC h@XJ El atributo que representa el aspecto visual de las
piezas que
+sobre ella conforme se deja reposar alguna pieza.r< h
+jæ h
+h!h#hHh%}r= (h']r> h)]r? h+]r@ h-]rA h/]rB uh1KLh2h h ]rC (h@XJ El
atributo
que representa el aspecto visual de las piezas que
reposan es rD h
-j7 ub(hˆorE }rF (h
+ rE }rF (h
+XJ El atributo que representa el aspecto visual de las piezas que
+reposan es rG h
+j: ubhŠ) rH }rI (h

X `Board.visual_matrix`rG h"}rH (h$]rI h&]rJ h(]rK h*]rL h,]rM uh
-j7 h ]rN h=) rO }rP (h
+j: h ]rQ h@X Board.visual_matrixrR
+ rS }rT (h
U h@X Board.visual_matrixrQ h
-jE ubah h–ubh=) rR }rS (h
-X‹ . Este atributo señala a una
-superficie que inicialmente es transparente, pero se dibuja
-sobre ella conforme se deja reposar alguna pieza.rT h@X‹ . Este
atributo señala a una
+jH ubah#h˜ubh@X‹ . Este atributo señala a una
superficie que inicialmente es transparente, pero se dibuja
sobre ella conforme se deja reposar alguna pieza.rU h
-j7 ubeubeubeubah
+ rV }rW (h
+X‹ . Este atributo señala a una
+superficie que inicialmente es transparente, pero se dibuja
+sobre ella conforme se deja reposar alguna pieza.rX h
+j: ubeubeubeubah
U U transformerrV NU
-footnote_refsrW }rX U refnamesrY }rZ U symbol_footnotesr[ ]r\ U autofootnote_refsr] ]r^ U symbol_footnote_refsr_ ]r` U
citationsra ]rb h/h U current_linerc NU transform_messagesrd ]re U reporterrf NU id_startrg K U
-autofootnotesrh ]ri U
-citation_refsrj }rk U indirect_targetsrl ]rm U settingsrn (cdocutils.frontend
+footnote_refsrZ }r[ U refnamesr\ }r] U symbol_footnotesr^ ]r_ U autofootnote_refsr` ]ra U symbol_footnote_refsrb ]rc U
citationsrd ]re h2h U current_linerf NU transform_messagesrg ]rh U reporterri NU id_startrj K U
+autofootnotesrk ]rl U
+citation_refsrm }rn U indirect_targetsro ]rp U settingsrq (cdocutils.frontend
Values
-ro orp }rq (U footnote_backlinksrr K U record_dependenciesrs NU rfc_base_urlrt U http://tools.ietf.org/html/ru U
tracebackrv K U pep_referencesrw NU strip_commentsrx NU
-toc_backlinksry U entryrz U
-language_coder{ U enr| U
datestampr} NU report_levelr~ K U _destinationr NU
-halt_levelr€ K U
-strip_classesr Nh5NU
-error_encoding_error_handlerr‚ U backslashreplacerƒ U debugr„ NU embed_stylesheetr
+rr ors }rt (U footnote_backlinksru K U record_dependenciesrv NU rfc_base_urlrw U http://tools.ietf.org/html/rx U
tracebackry K U pep_referencesrz NU strip_commentsr{ NU
+toc_backlinksr| U entryr} U
+language_coder~ U enr U
datestampr€ NU report_levelr K U _destinationr‚ NU
+halt_levelrƒ K U
+strip_classesr„ Nh8NU
+error_encoding_error_handlerr
‰U
-output_encoding_error_handlerr† U strictr‡ U
-sectnum_xformrˆ K U dump_transformsr‰ NU
-docinfo_xformrŠ K U warning_streamr‹ NU pep_file_url_templaterŒ U pep-%04dr U exit_status_levelrŽ K U configr NU strict_visitorr NU cloak_email_addressesr‘ ˆU
-trim_footnote_reference_spacer’ ‰U envr“ NU dump_pseudo_xmlr” NU expose_internalsr• NU sectsubtitle_xformr– ‰U source_linkr— NU rfc_referencesr˜ NU output_encodingr™ U utf-8rš U
-source_urlr› NU input_encodingrœ U utf-8r U _disable_configrž NU
id_prefixrŸ U U
tab_widthr  K U error_encodingr¡ U asciir¢ U _sourcer£ h U
generatorr¤ NU dump_internalsr¥ NU pep_base_urlr¦ U http://www.python.org/dev/peps/r§ U
-input_encoding_error_handlerr¨ j‡ U auto_id_prefixr© U idrª U doctitle_xformr« ‰U strip_elements_with_classesr¬ NU
-_config_filesr­ ]r® U file_insertion_enabledr¯ K U raw_enabledr° K U
-dump_settingsr± NubU symbol_footnote_startr² K U idsr³ }r´ (h jã h h h jV h hQuU substitution_namesrµ }r¶ h
h/h"}r· (h$]r¸ h*]r¹ h(]rº U sourcer» h h&]r¼ h,]r½ uU
footnotesr¾ ]r¿ U refidsrÀ }rÁ ub.
+output_encoding_error_handlerr‰ U strictrŠ U
+sectnum_xformr‹ K U dump_transformsrŒ NU
+docinfo_xformr K U warning_streamrŽ NU pep_file_url_templater U pep-%04dr U exit_status_levelr‘ K U configr’ NU strict_visitorr“ NU cloak_email_addressesr” ˆU
+trim_footnote_reference_spacer• ‰U envr– NU dump_pseudo_xmlr— NU expose_internalsr˜ NU sectsubtitle_xformr™ ‰U source_linkrš NU rfc_referencesr› NU output_encodingrœ U utf-8r U
+source_urlrž NU input_encodingrŸ U
utf-8-sigr  U _disable_configr¡ NU id_prefixr¢ U U
tab_widthr£ K U error_encodingr¤ U UTF-8r¥ U _sourcer¦ UD/home/hugoruscitti/proyectos/asadetris/doc/source/diseno_etapa_3.rstr§ U
generatorr¨ NU dump_internalsr© NU pep_base_urlrª U http://www.python.org/dev/peps/r« U
+input_encoding_error_handlerr¬ jŠ U auto_id_prefixr­ U idr® U doctitle_xformr¯ ‰U strip_elements_with_classesr° NU
+_config_filesr± ]r² U file_insertion_enabledr³ K U raw_enabledr´ K U
+dump_settingsrµ NubU symbol_footnote_startr¶ K U idsr· }r¸ (h jæ h jX h hSh h uU substitution_namesr¹ }rº h#h2h%}r» (h']r¼ h-]r½ h+]r¾ U sourcer¿ h!h)]rÀ h/]rÁ uU
footnotesr ]rà U refidsrÄ }rÅ ub.
=======================================
--- /doc/build/doctrees/diseno_etapa_4.doctree Sun Oct 18 17:31:18 2009
+++ /doc/build/doctrees/diseno_etapa_4.doctree Sun May 23 10:58:24 2010
Binary file, no diff available.
=======================================
--- /doc/build/doctrees/diseno_etapa_5.doctree Thu Sep 17 04:03:39 2009
+++ /doc/build/doctrees/diseno_etapa_5.doctree Sun May 23 10:58:24 2010
@@ -1,99 +1,99 @@
-€ (cdocutils.nodes
+€ cdocutils.nodes
document
-q oq }q (U nametypesq }q (X diseño de la etapa 5q NX velocidad del
juegoq NuU substitution_defsq }q U parse_messagesq
+q ) q }q (U nametypesq }q (X diseño de la etapa 5q NX velocidad del
juegoq NuU substitution_defsq }q U parse_messagesq
]q U current_sourceq NU
decorationq
-NU autofootnote_startq K U nameidsq }q (h U dise-o-de-la-etapa-5q h U velocidad-del-juegoq uU childrenq ]q (cdocutils.nodes
+NU autofootnote_startq K U nameidsq }q (h U diseno-de-la-etapa-5q h U velocidad-del-juegoq uU childrenq ]q cdocutils.nodes
section
-q oq }q (U
rawsourceq U U parentq h U sourceq UD/home/hugoruscitti/proyectos/asadetris/doc/source/diseno_etapa_5.rstq U tagnameq
-U sectionq
-U
-attributesq
-}q (U dupnamesq
]q!U classesq"]q#U backrefsq$]q%U idsq&]q'h aU namesq(]q)h auU lineq*K U documentq+h h ]q,((cdocutils.nodes
+q ) q }q (U rawsourceq U U parentq h U sourceq cdocutils.nodes
+reprunicode
+q XD /home/hugoruscitti/proyectos/asadetris/doc/source/diseno_etapa_5.rstq
+
+ q
+}q
+bU tagnameq U sectionq U
+attributesq!}q"(U dupnamesq#]q$U classesq%]q&U backrefsq']q(U idsq)]q*h aU namesq+]q,h auU lineq-K U documentq.h h ]q/(cdocutils.nodes
title
-q-oq.}q/(h X Diseño de la etapa 5q0h h h h h
-U titleq1h
-}q2(h ]q3h"]q4h$]q5h&]q6h(]q7uh*K h+h h ]q8cdocutils.nodes
+q0) q1}q2(h X Diseño de la etapa 5q3h h h h
+h U titleq4h!}q5(h#]q6h%]q7h']q8h)]q9h+]q:uh-K h.h h ]q;cdocutils.nodes
Text
-q9) q:}q;(h h0U dataq<X Diseño de la etapa
5q=h h.ubaub(h oq>}q?(h U h h h h h
-h
-h
-}q@(h
]qAh"]qBh$]qCh&]qDh ah(]qEh auh*K h+h h ]qF((h-oqG}qH(h X Velocidad del
juegoqIh h>h h h
-h1h
-}qJ(h ]qKh"]qLh$]qMh&]qNh(]qOuh*K h+h h ]qPh9) qQ}qR(h hIh<X Velocidad
del juegoqSh hGubaub(cdocutils.nodes
+q<X Diseño de la etapa 5q=
+ q>}q?(h h3h h1ubaubh ) q@}qA(h U h h h h
+h h
h!}qB(h#]qCh%]qDh']qEh)]qFh ah+]qGh auh-K h.h h ]qH(h0) qI}qJ(h X Velocidad
del juegoqKh h@h h
+h h4h!}qL(h#]qMh%]qNh']qOh)]qPh+]qQuh-K h.h h ]qRh<X Velocidad del
juegoqS
+ qT}qU(h hKh hIubaubcdocutils.nodes
paragraph
-qToqU}qV(h X£ Cuando el usuario realiza 10 lineas buscamos que el juego
aumente
+qV) qW}qX(h X£ Cuando el usuario realiza 10 lineas buscamos que el juego
aumente
de velocidad. Esto se logra mediante la interacción de los
-objectos `Display`, `Game` y `Piece`.qWh h>h h h
-U paragraphqXh
-}qY(h ]qZh"]q[h$]q\h&]q]h(]q^uh*K h+h h ]q_(h9) q`}qa(h X‡ Cuando el
usuario realiza 10 lineas buscamos que el juego aumente
+objectos `Display`, `Game` y `Piece`.qYh h@h h
+h U paragraphqZh!}q[(h#]q\h%]q]h']q^h)]q_h+]q`uh-K h.h h ]qa(h<X‡ Cuando
el usuario realiza 10 lineas buscamos que el juego aumente
de velocidad. Esto se logra mediante la interacción de los
-objectos qbh<X‡ Cuando el usuario realiza 10 lineas buscamos que el
juego aumente
+objectos qb
+ qc}qd(h X‡ Cuando el usuario realiza 10 lineas buscamos que el juego
aumente
de velocidad. Esto se logra mediante la interacción de los
-objectos qch hUub(cdocutils.nodes
+objectos qeh hWubcdocutils.nodes
title_reference
-qdoqe}qf(h X `Display`qgh
-}qh(h
]qih"]qjh$]qkh&]qlh(]qmuh hUh ]qnh9) qo}qp(h U h<X Displayqqh heubah
-U title_referenceqrubh9) qs}qt(h X , quh<X ,
qvh hUub(hdoqw}qx(h X `Game`qyh
-}qz(h ]q{h"]q|h$]q}h&]q~h(]q uh hUh ]q€h9) q }q‚(h U h<X Gameqƒh hwubah
-hrubh9) q„}q
-(h X y q†h<X y q‡h hUub(hdoqˆ}q‰(h X `Piece`qŠh
-}q‹(h ]qŒh"]q h$]qŽh&]q h(]q uh hUh ]q‘h9) q’}q“(h U h<X Pieceq”h hˆubah
-hrubh9) q•}q–(h X .h<X .h hUubeub(hToq—}q˜(h Xw Básicamente quien
coordina la velocidad del juego es la clase
+qf) qg}qh(h X
`Display`qih!}qj(h#]qkh%]qlh']qmh)]qnh+]qouh hWh ]qph<X Displayqq
+ qr}qs(h U h hgubah U title_referenceqtubh<X , qu
+ qv}qw(h X , qxh hWubhf) qy}qz(h X `Game`q{h!}q|
(h#]q}h%]q~h']q h)]q€h+]q uh hWh ]q‚h<X Gameqƒ
+ q„}q
+(h U h hyubah htubh<X y q†
+ q‡}qˆ(h X y
q‰h hWubhf) qŠ}q‹(h X `Piece`qŒh!}q (h#]qŽh%]q h']q h)]q‘h+]q’uh hWh ]q“h<X Pieceq”
+ q•}q–(h U h hŠubah htubh<X .
+ q—}q˜(h X .h hWubeubhV) q™}qš(h Xw Básicamente quien coordina la
velocidad del juego es la clase
`Game`. Mientras el usuario está jugando el objeto `Game` almacena
en su atributo `speed` la velocidad que le tiene que asignar
a cada pieza que genera. Este atributo de velocidad depende de
lo que le diga la clase `Display`, que conoce cuantas lineas
-del juego a realiza el usuario y en qué nivel se encuenta.q™h h>h h h
-hXh
-}qš(h ]q›h"]qœh$]q h&]qžh(]qŸuh*K h+h h ]q (h9) q¡}q¢(h X? Básicamente
quien coordina la velocidad del juego es la clase
-q£h<X? Básicamente quien coordina la velocidad del juego es la clase
-q¤h h—ub(hdoq¥}q¦(h X `Game`q§h
-}q¨(h ]q©h"]qªh$]q«h&]q¬h(]q­uh h—h ]q®h9) q¯}q°(h U h<X Gameq±h h¥ubah
-hrubh9) q²}q³(h X. . Mientras el usuario está jugando el objeto
q´h<X. . Mientras el usuario está jugando el objeto
qµh h—ub(hdoq¶}q·(h X `Game`q¸h
-}q¹(h ]qºh"]q»h$]q¼h&]q½h(]q¾uh h—h ]q¿h9) qÀ}qÁ(h U h<X GameqÂh h¶ubah
-hrubh9) qÃ}qÄ(h X almacena
-en su atributo qÅh<X almacena
-en su atributo qÆh h—ub(hdoqÇ}qÈ(h X `speed`qÉh
-}qÊ(h ]qËh"]qÌh$]qÍh&]qÎh(]qÏuh h—h ]qÐh9) qÑ}qÒ(h U h<X speedqÓh hÇubah
-hrubh9) qÔ}qÕ(h X~ la velocidad que le tiene que asignar
+del juego a realiza el usuario y en qué nivel se encuenta.q›h h@h h
+h hZh!}qœ(h#]q h%]qžh']qŸh)]q h+]q¡uh-K h.h h ]q¢(h<X? Básicamente
quien coordina la velocidad del juego es la clase
+q£
+ q¤}q¥(h X? Básicamente quien coordina la velocidad del juego es la
clase
+q¦h h™ubhf) q§}q¨(h X `Game`q©h!}qª(h#]q«h%]q¬h']q­h)]q®h+]q¯uh h™h ]q°h<X Gameq±
+ q²}q³(h U h h§ubah htubh<X. . Mientras el usuario está jugando el
objeto q´
+ qµ}q¶(h X. . Mientras el usuario está jugando el objeto
q·h h™ubhf) q¸}q¹(h X `Game`qºh!}q»(h#]q¼h%]q½h']q¾h)]q¿h+]qÀuh h™h ]qÁh<X GameqÂ
+ qÃ}qÄ(h U h h¸ubah htubh<X almacena
+en su atributo qÅ
+ qÆ}qÇ(h X almacena
+en su atributo
qÈh h™ubhf) qÉ}qÊ(h X `speed`qËh!}qÌ(h#]qÍh%]qÎh']qÏh)]qÐh+]qÑuh h™h ]qÒh<X speedqÓ
+ qÔ}qÕ(h U h hÉubah htubh<X~ la velocidad que le tiene que asignar
a cada pieza que genera. Este atributo de velocidad depende de
-lo que le diga la clase qÖh<X~ la velocidad que le tiene que asignar
+lo que le diga la clase qÖ
+ q×}qØ(h X~ la velocidad que le tiene que asignar
a cada pieza que genera. Este atributo de velocidad depende de
-lo que le diga la clase q×h h—ub(hdoqØ}qÙ(h X `Display`qÚh
-}qÛ(h
]qÜh"]qÝh$]qÞh&]qßh(]qàuh h—h ]qáh9) qâ}qã(h U h<X Displayqäh hØubah
-hrubh9) qå}qæ(h XW , que conoce cuantas lineas
-del juego a realiza el usuario y en qué nivel se encuenta.qçh<XW , que
conoce cuantas lineas
-del juego a realiza el usuario y en qué nivel se
encuenta.qèh h—ubeub(hToqé}qê(h XC El nivel, es simplemente la parte
decimal de la cantidad de lineas:qëh h>h h h
-hXh
-}qì(h ]qíh"]qîh$]qïh&]qðh(]qñuh*K h+h h ]qòh9) qó}qô(h hëh<XC El nivel,
es simplemente la parte decimal de la cantidad de
lineas:qõh héubaub(cdocutils.nodes
+lo que le diga la clase qÙh h™ubhf) qÚ}qÛ(h X
`Display`qÜh!}qÝ(h#]qÞh%]qßh']qàh)]qáh+]qâuh h™h ]qãh<X Displayqä
+ qå}qæ(h U h hÚubah htubh<XW , que conoce cuantas lineas
+del juego a realiza el usuario y en qué nivel se encuenta.qç
+ qè}qé(h XW , que conoce cuantas lineas
+del juego a realiza el usuario y en qué nivel se
encuenta.qêh h™ubeubhV) që}qì(h XC El nivel, es simplemente la parte
decimal de la cantidad de lineas:qíh h@h h
+h hZh!}qî(h#]qïh%]qðh']qñh)]qòh+]qóuh-K h.h h ]qôh<XC El nivel, es
simplemente la parte decimal de la cantidad de lineas:qõ
+ qö}q÷(h híh hëubaubcdocutils.nodes
literal_block
-qöoq÷}qø(h X nivel = lineas / 10qùh h>h h h
-U
-literal_blockqúh
-}qû(U xml:spaceqüU preserveqýh&]qþh$]qÿh
]r h"]r h(]r uh*K h+h h ]r h9) r }r (h U h<hùh h÷ubaubeubeubah U U transformerr NU
-footnote_refsr }r U refnamesr }r
+qø) qù}qú(h X nivel = lineas / 10qûh h@h h
+h U
+literal_blockqüh!}qý(U
xml:spaceqþU preserveqÿh)]r h']r h#]r h%]r h+]r uh-K h.h h ]r h<X nivel
= lineas / 10r
+ r }r (h U h hùubaubeubeubah U U transformerr NU
+footnote_refsr
U symbol_footnotesr ]r U autofootnote_refsr
]r U symbol_footnote_refsr ]r U
citationsr ]r h+h U current_liner NU transform_messagesr ]r U reporterr NU id_startr K U
-autofootnotesr ]r U
-citation_refsr }r U indirect_targetsr
+autofootnotesr ]r
]r
+citation_refsr
U settingsr
(cdocutils.frontend
Values
-r or
}r! (U footnote_backlinksr" K U record_dependenciesr# NU rfc_base_urlr$ U http://tools.ietf.org/html/r% U
tracebackr& K U pep_referencesr' NU strip_commentsr( NU
-toc_backlinksr) U entryr* U
-language_coder+ U enr, U
datestampr- NU report_levelr. K U _destinationr/ NU
-halt_levelr0 K U
-strip_classesr1 Nh1NU
-error_encoding_error_handlerr2 U backslashreplacer3 U debugr4 NU embed_stylesheetr5 ‰U
-output_encoding_error_handlerr6 U strictr7 U
-sectnum_xformr8 K U dump_transformsr9 NU
-docinfo_xformr: K U warning_streamr; NU pep_file_url_templater< U pep-%04dr= U exit_status_levelr> K U configr? NU strict_visitorr@ NU cloak_email_addressesrA ˆU
-trim_footnote_reference_spacerB ‰U envrC NU dump_pseudo_xmlrD NU expose_internalsrE NU sectsubtitle_xformrF ‰U source_linkrG NU rfc_referencesrH NU output_encodingrI U utf-8rJ U
-source_urlrK NU input_encodingrL U utf-8rM U _disable_configrN NU
id_prefixrO U U
tab_widthrP K U error_encodingrQ U asciirR U _sourcerS h U
generatorrT NU dump_internalsrU NU pep_base_urlrV U http://www.python.org/dev/peps/rW U
-input_encoding_error_handlerrX j7 U auto_id_prefixrY U idrZ U doctitle_xformr[ ‰U strip_elements_with_classesr\ NU
-_config_filesr] ]r^ U file_insertion_enabledr_ K U raw_enabledr` K U
-dump_settingsra NubU symbol_footnote_startrb K U idsrc }rd (h h h h>uU substitution_namesre }rf h
-h+h
-}rg (h ]rh h&]ri h$]rj U sourcerk h h"]rl h(]rm uU
footnotesrn ]ro U refidsrp }rq ub.
+r" or# }r$ (U footnote_backlinksr% K U record_dependenciesr& NU rfc_base_urlr' U http://tools.ietf.org/html/r( U
tracebackr) K U pep_referencesr* NU strip_commentsr+ NU
+toc_backlinksr, U entryr- U
+language_coder. U enr/ U
datestampr0 NU report_levelr1 K U _destinationr2 NU
+halt_levelr3 K U
+strip_classesr4 Nh4NU
+error_encoding_error_handlerr5 U backslashreplacer6 U debugr7 NU embed_stylesheetr8 ‰U
+output_encoding_error_handlerr9 U strictr: U
+sectnum_xformr; K U dump_transformsr< NU
+docinfo_xformr= K U warning_streamr> NU pep_file_url_templater? U pep-%04dr@ U exit_status_levelrA K U configrB NU strict_visitorrC NU cloak_email_addressesrD ˆU
+trim_footnote_reference_spacerE ‰U envrF NU dump_pseudo_xmlrG NU expose_internalsrH NU sectsubtitle_xformrI ‰U source_linkrJ NU rfc_referencesrK NU output_encodingrL U utf-8rM U
+source_urlrN NU input_encodingrO U
utf-8-sigrP U _disable_configrQ NU id_prefixrR U U
tab_widthrS K U error_encodingrT U UTF-8rU U _sourcerV UD/home/hugoruscitti/proyectos/asadetris/doc/source/diseno_etapa_5.rstrW U
generatorrX NU dump_internalsrY NU pep_base_urlrZ U http://www.python.org/dev/peps/r[ U
+input_encoding_error_handlerr\ j: U auto_id_prefixr] U idr^ U doctitle_xformr_ ‰U strip_elements_with_classesr` NU
+_config_filesra ]rb U file_insertion_enabledrc K U raw_enabledrd K U
+dump_settingsre NubU symbol_footnote_startrf K U idsrg }rh (h h h h@uU substitution_namesri }rj h h.h!}rk (h#]rl h)]rm h']rn U sourcero h
+h%]rp h+]rq uU footnotesrr ]rs U refidsrt }ru ub.
=======================================
--- /doc/build/doctrees/documento_de_diseno.doctree Thu Jul 9 08:25:32 2009
+++ /doc/build/doctrees/documento_de_diseno.doctree Sun May 23 10:58:24 2010
Binary file, no diff available.
=======================================
--- /doc/build/doctrees/environment.pickle Sun Oct 18 17:31:18 2009
+++ /doc/build/doctrees/environment.pickle Sun May 23 10:58:24 2010
Binary file, no diff available.
=======================================
--- /doc/build/doctrees/estilo.doctree Mon Jul 20 16:51:47 2009
+++ /doc/build/doctrees/estilo.doctree Sun May 23 10:58:24 2010
Binary file, no diff available.
=======================================
--- /doc/build/doctrees/index.doctree Thu Sep 17 04:03:39 2009
+++ /doc/build/doctrees/index.doctree Sun May 23 10:58:24 2010
Binary file, no diff available.
=======================================
--- /doc/build/doctrees/integrantes.doctree Thu Sep 17 04:03:39 2009
+++ /doc/build/doctrees/integrantes.doctree Sun May 23 10:58:24 2010
Binary file, no diff available.
=======================================
--- /doc/build/doctrees/modules.doctree Mon Jul 13 18:15:30 2009
+++ /doc/build/doctrees/modules.doctree Sun May 23 10:58:24 2010
@@ -1,95 +1,92 @@
-€ (cdocutils.nodes
+€ cdocutils.nodes
document
-q oq }q (U nametypesq }q (X lib.utils.load_imagesq K X funciones de
utilidadq NX módulosq NuU substitution_defsq }q
+q ) q }q (U nametypesq }q (X lib.utils.load_imagesq K X funciones de
utilidadq NX módulosq NuU substitution_defsq }q
U parse_messagesq ]q U current_sourceq
NU
-decorationq NU autofootnote_startq K U nameidsq }q (h h h U funciones-de-utilidadq h U m-dulosq uU childrenq ]q (cdocutils.nodes
+decorationq NU autofootnote_startq K U nameidsq }q (h h h U funciones-de-utilidadq h U modulosq uU childrenq ]q cdocutils.nodes
section
-q oq }q (U
rawsourceq U U parentq h U sourceq U=/home/hugoruscitti/proyectos/asadetris/doc/source/modules.rstq
-U tagnameq
-U sectionq
-U
-attributesq }q
(U dupnamesq!]q"U classesq#]q$U backrefsq%]q&U idsq']q(h aU namesq)]q*h auU lineq+K U documentq,h h ]q-((cdocutils.nodes
+q ) q }q (U rawsourceq U U parentq h U sourceq cdocutils.nodes
+reprunicode
+q
+X= /home/hugoruscitti/proyectos/asadetris/doc/source/modules.rstq
+
+ q
+}q bU tagnameq U sectionq!U
+attributesq"}q#(U dupnamesq$]q%U classesq&]q'U backrefsq(]q)U idsq*]q+h aU namesq,]q-h auU lineq.K U documentq/h h ]q0(cdocutils.nodes
title
-q.oq/}q0(h X Módulosq1h h h h
-h
-U titleq2h }q3(h!]q4h#]q5h%]q6h']q7h)]q8uh+K h,h h ]q9cdocutils.nodes
+q1) q2}q3(h X Módulosq4h h h h
+h U titleq5h"}q6(h$]q7h&]q8h(]q9h*]q:h,]q;uh.K h/h h ]q<cdocutils.nodes
Text
-q:) q;}q<(h h1U dataq=X Módulosq>h h/ubaub(cdocutils.nodes
+q=X Módulosq>
+ q?}q@(h h4h h2ubaubcdocutils.nodes
paragraph
-q?oq@}qA(h X El código del proyecto se organiza en módulo dentro del
paquete ``lib``. Esta
-página resume los módulos mas significativos.qBh h h h
-h
-U
paragraphqCh }qD(h!]qEh#]qFh%]qGh']qHh)]qIuh+K h,h h ]qJ(h:) qK}qL(h XB El
código del proyecto se organiza en módulo dentro del paquete qMh=XB El
código del proyecto se organiza en módulo dentro del paquete
qNh h@ub(cdocutils.nodes
+qA) qB}qC(h X El código del proyecto se organiza en módulo dentro del
paquete ``lib``. Esta
+página resume los módulos mas significativos.qDh h h h
+h U paragraphqEh"}qF(h$]qGh&]qHh(]qIh*]qJh,]qKuh.K h/h h ]qL(h=XB El
código del proyecto se organiza en módulo dentro del paquete qM
+ qN}qO(h XB El código del proyecto se organiza en módulo dentro del
paquete qPh hBubcdocutils.nodes
literal
-qOoqP}qQ(h X ``lib``qRh }qS(h!]qTh#]qUh%]qVh']qWh)]qXuh h@h ]qYh:) qZ}q[(h U h=X libq\h hPubah
-U literalq]ubh:) q^}q_(h X6 . Esta
-página resume los módulos mas significativos.q`h=X6 . Esta
-página resume los módulos mas
significativos.qah h@ubeub(h oqb}qc(h U h h h h
-h
-h
-h }qd(h!]qeh#]qfh%]qgh']qhh ah)]qih auh+K h,h h ]qj((h.oqk}ql(h X Funciones
de
utilidadqmh hbh h
-h
-h2h }qn(h!]qoh#]qph%]qqh']qrh)]qsuh+K h,h h ]qth:) qu}qv(h hmh=X Funciones
de
utilidadqwh hkubaub(h?oqx}qy(h Xm Las funciones auxiliares se
almacenan en el archivo ``utils.py``, estas
-son las funciones que mas utilizamos.qzh hbh h
-h
-hCh }q{(h!]q|h#]q}h%]q~h']q h)]q€uh+K
-h,h h ]q (h:) q‚}qƒ(h X4 Las funciones auxiliares se almacenan en el
archivo q„h=X4 Las funciones auxiliares se almacenan en el archivo q
-h hxub(hOoq†}q‡(h X ``utils.py``qˆh }q‰(h!]qŠh#]q‹h%]qŒh']q h)]qŽuh hxh ]q h:) q }q‘(h U h=X utils.pyq’h h†ubah
-h]ubh:) q“}q”(h X- , estas
-son las funciones que mas utilizamos.q•h=X- , estas
-son las funciones que mas utilizamos.q–h hxubeub(csphinx.addnodes
+qQ) qR}qS(h X ``lib``qTh"}qU(h$]qVh&]qWh(]qXh*]qYh,]qZuh hBh ]q[h=X libq\
+ q]}q^(h U h hRubah U literalq_ubh=X6 . Esta
+página resume los módulos mas significativos.q`
+ qa}qb(h X6 . Esta
+página resume los módulos mas
significativos.qch hBubeubh ) qd}qe(h U h h h h
+h
h!h"}qf(h$]qgh&]qhh(]qih*]qjh ah,]qkh auh.K h/h h ]ql(h1) qm}qn(h X Funciones
de utilidadqoh hdh h
+h h5h"}qp(h$]qqh&]qrh(]qsh*]qth,]quuh.K h/h h ]qvh=X Funciones de
utilidadqw
+ qx}qy(h hoh hmubaubhA) qz}q{(h Xm Las funciones auxiliares se almacenan
en el archivo ``utils.py``, estas
+son las funciones que mas utilizamos.q|h hdh h
+h hEh"}q}(h$]q~h&]q h(]q€h*]q h,]q‚uh.K
+h/h h ]qƒ(h=X4 Las funciones auxiliares se almacenan en el archivo q„
+ q
+}q†(h X4 Las funciones auxiliares se almacenan en el archivo
q‡h hzubhQ) qˆ}q‰(h X ``utils.py``qŠh"}q‹(h$]qŒh&]q h(]qŽh*]q h,]q uh hzh ]q‘h=X utils.pyq’
+ q“}q”(h U h hˆubah h_ubh=X- , estas
+son las funciones que mas utilizamos.q•
+ q–}q—(h X- , estas
+son las funciones que mas utilizamos.q˜h hzubeubcsphinx.addnodes
index
-q—oq˜}q™(h U h hbh XV /home/hugoruscitti/proyectos/asadetris/lib/utils.py:docstring
of
lib.utils.load_imagesqšh
-U indexq›h }qœ(h']q h%]qžh!]qŸh#]q h)]q¡U entriesq¢]q£(U singleq¤X' load_images()
(en
el módulo lib.utils)h h tq¥auh+Nh,h h ]q¦ub(csphinx.addnodes
+q™) qš}q›(h U h hdh XV /home/hugoruscitti/proyectos/asadetris/lib/utils.py:docstring
of
lib.utils.load_imagesqœh
U indexq h"}qž(h*]qŸh(]q h$]q¡h&]q¢h,]q£U entriesq¤]q¥(U singleq¦X' load_images()
(en el módulo lib.utils)h h tq§auh.Nh/h h ]q¨ubcsphinx.addnodes
desc
-q§oq¨}q©(h U h hbh hšh
-U descqªh }q«(U noindexq¬‰h']q­h%]q®h!]q¯h#]q°h)]q±U desctypeq²X functionq³uh+Nh,h h ]q´((csphinx.addnodes
+q©) qª}q«(h U h hdh hœh
U descq¬h"}q­(U noindexq®‰h*]q¯h(]q°h$]q±h&]q²h,]q³U desctypeq´X functionqµuh.Nh/h h ]q¶(csphinx.addnodes
desc_signature
-qµoq¶}q·(h X! load_images(name, colorkey=False)q¸h h¨h U <autodoc>q¹h
-U desc_signatureqºh }q»(h']q¼h ah%]q½h!]q¾h#]q¿h)]qÀh aU firstqÁ‰uh+Nh,h h ]qÂ((csphinx.addnodes
+q·) q¸}q¹(h X! load_images(name, colorkey=False)qºh hªh U <autodoc>q»h
U desc_signatureq¼h"}q½(h*]q¾h ah(]q¿h$]qÀh&]qÁh,]qÂh aU firstqÉuh.Nh/h h ]qÄ(csphinx.addnodes
desc_addname
-qÃoqÄ}qÅ(h X
- lib.utils.qÆh h¶h h¹h
-U desc_addnameqÇh }qÈ(h!]qÉh#]qÊh%]qËh']qÌh)]qÍuh+Nh,h h ]qÎh:) qÏ}qÐ(h U h=hÆh hÄubaub(csphinx.addnodes
+qÅ) qÆ}qÇ(h X
+ lib.utils.qÈh h¸h h»h
U desc_addnameqÉh"}qÊ(h$]qËh&]qÌh(]qÍh*]qÎh,]qÏuh.Nh/h h ]qÐh=X
+ lib.utils.qÑ
+ qÒ}qÓ(h U h hÆubaubcsphinx.addnodes
desc_name
-qÑoqÒ}qÓ(h X load_imagesqÔh h¶h h¹h
-U
desc_nameqÕh }qÖ(h!]q×h#]qØh%]qÙh']qÚh)]qÛuh+Nh,h h ]qÜh:) qÝ}qÞ(h U h=hÔh hÒubaub(csphinx.addnodes
+qÔ) qÕ}qÖ(h X load_imagesq×h h¸h h»h U
desc_nameqØh"}qÙ(h$]qÚh&]qÛh(]qÜh*]qÝh,]qÞuh.Nh/h h ]qßh=X load_imagesqà
+ qá}qâ(h U h hÕubaubcsphinx.addnodes
desc_parameterlist
-qßoqà}qá(h U h h¶h h¹h
-U desc_parameterlistqâh }qã(h!]qäh#]qåh%]qæh']qçh)]qèuh+Nh,h h ]qé((csphinx.addnodes
+qã) qä}qå(h U h h¸h h»h
U desc_parameterlistqæh"}qç(h$]qèh&]qéh(]qêh*]qëh,]qìuh.Nh/h h ]qí(csphinx.addnodes
desc_parameter
-qêoqë}qì(h X nameqíh hàh h¹h
-U desc_parameterqîh }qï(h!]qðh#]qñh%]qòh']qóh)]qôuh+Nh,h h ]qõh:) qö}q÷(h U h=híh hëubaub(hêoqø}qù(h X colorkey=Falseqúh hàh h¹h
-hîh }qû(h!]qüh#]qýh%]qþh']qÿh)]r uh+Nh,h h ]r h:) r }r (h U h=húh høubaubeubeub(csphinx.addnodes
+qî) qï}qð(h X nameqñh häh h»h
U desc_parameterqòh"}qó(h$]qôh&]qõh(]qöh*]q÷h,]qøuh.Nh/h h ]qùh=X nameqú
+ qû}qü(h U h hïubaubhî) qý}qþ(h X colorkey=Falseqÿh häh h»h
hòh"}r (h$]r h&]r h(]r h*]r h,]r uh.Nh/h h ]r h=X colorkey=Falser
+ r }r (h U h hýubaubeubeubcsphinx.addnodes
desc_content
-r or }r (h U h h¨h h¹h
-U desc_contentr h }r (h!]r h#]r
+r
h%]r h']r h)]r
uh+Nh,h h ]r (h?or }r (h X; Carga una imagen retornando una
superficie y su rectangulo.r h j h hšh
-hCh }r (h!]r h#]r h%]r h']r h)]r uh+K h,h h ]r h:) r }r (h j h=X; Carga
una
imagen retornando una superficie y su
rectangulo.r h j ubaubaubeubeubeubah U U transformerr
NU
-footnote_refsr
}r
U refnamesr }r
U symbol_footnotesr! ]r" U autofootnote_refsr# ]r$ U symbol_footnote_refsr% ]r& U
citationsr' ]r( h,h U current_liner) NU transform_messagesr* ]r+ U reporterr, NU id_startr- K U
-autofootnotesr. ]r/ U
-citation_refsr0 }r1 U indirect_targetsr2 ]r3 U settingsr4 (cdocutils.frontend
+ r }r! (h j h j ubaubaubeubeubeubah U U transformerr" NU
+footnote_refsr# }r$ U refnamesr% }r& U symbol_footnotesr' ]r( U autofootnote_refsr) ]r* U symbol_footnote_refsr+ ]r, U
citationsr- ]r. h/h U current_liner/ NU transform_messagesr0 ]r1 U reporterr2 NU id_startr3 K U
+autofootnotesr4 ]r5 U
+citation_refsr6 }r7 U indirect_targetsr8 ]r9 U settingsr: (cdocutils.frontend
Values
-r5 or6 }r7 (U footnote_backlinksr8 K U record_dependenciesr9 NU rfc_base_urlr: U http://tools.ietf.org/html/r; U
tracebackr< K U pep_referencesr= NU strip_commentsr> NU
-toc_backlinksr? U entryr@ U
-language_coderA U enrB U
datestamprC NU report_levelrD K U _destinationrE NU
-halt_levelrF K U
-strip_classesrG Nh2NU
-error_encoding_error_handlerrH U backslashreplacerI U debugrJ NU embed_stylesheetrK ‰U
-output_encoding_error_handlerrL U strictrM U
-sectnum_xformrN K U dump_transformsrO NU
-docinfo_xformrP K U warning_streamrQ NU pep_file_url_templaterR U pep-%04drS U exit_status_levelrT K U configrU NU strict_visitorrV NU cloak_email_addressesrW ˆU
-trim_footnote_reference_spacerX ‰U envrY NU dump_pseudo_xmlrZ NU expose_internalsr[ NU sectsubtitle_xformr\ ‰U source_linkr] NU rfc_referencesr^ NU output_encodingr_ U utf-8r` U
-source_urlra NU input_encodingrb U utf-8rc U _disable_configrd NU
id_prefixre U U
tab_widthrf K U error_encodingrg U asciirh U _sourceri h
-U
generatorrj NU dump_internalsrk NU pep_base_urlrl U http://www.python.org/dev/peps/rm U
-input_encoding_error_handlerrn jM U auto_id_prefixro U idrp U doctitle_xformrq ‰U strip_elements_with_classesrr NU
-_config_filesrs ]rt U file_insertion_enabledru K U raw_enabledrv K U
-dump_settingsrw NubU symbol_footnote_startrx K U idsry }rz (h hbh h h h¶uU substitution_namesr{ }r|
h
-h,h }r} (h!]r~ h']r h%]r€ U sourcer h
-h#]r‚ h)]rƒ uU footnotesr„ ]r
+r; or< }r= (U footnote_backlinksr> K U record_dependenciesr? NU rfc_base_urlr@ U http://tools.ietf.org/html/rA U
tracebackrB K U pep_referencesrC NU strip_commentsrD NU
+toc_backlinksrE U entryrF U
+language_coderG U enrH U
datestamprI NU report_levelrJ K U _destinationrK NU
+halt_levelrL K U
+strip_classesrM Nh5NU
+error_encoding_error_handlerrN U backslashreplacerO U debugrP NU embed_stylesheetrQ ‰U
+output_encoding_error_handlerrR U strictrS U
+sectnum_xformrT K U dump_transformsrU NU
+docinfo_xformrV K U warning_streamrW NU pep_file_url_templaterX U pep-%04drY U exit_status_levelrZ K U configr[ NU strict_visitorr\ NU cloak_email_addressesr] ˆU
+trim_footnote_reference_spacer^ ‰U envr_ NU dump_pseudo_xmlr` NU expose_internalsra NU sectsubtitle_xformrb ‰U source_linkrc NU rfc_referencesrd NU output_encodingre U utf-8rf U
+source_urlrg NU input_encodingrh U
utf-8-sigri U _disable_configrj NU id_prefixrk U U
tab_widthrl K U error_encodingrm U UTF-8rn U _sourcero U=/home/hugoruscitti/proyectos/asadetris/doc/source/modules.rstrp U
generatorrq NU dump_internalsrr NU pep_base_urlrs U http://www.python.org/dev/peps/rt U
+input_encoding_error_handlerru jS U auto_id_prefixrv U idrw U doctitle_xformrx ‰U strip_elements_with_classesry NU
+_config_filesrz ]r{ U file_insertion_enabledr|
K U raw_enabledr} K U
+dump_settingsr~ NubU symbol_footnote_startr K U idsr€ }r (h h h hdh h¸uU substitution_namesr‚ }rƒ h
h/h"}r„ (h$]r
U refidsr† }r‡ ub.
+h&]r‰ h,]rŠ uU footnotesr‹ ]rŒ U refidsr }rŽ ub.
=======================================
--- /doc/build/doctrees/tareas_y_etapas.doctree Sun Oct 18 17:31:18 2009
+++ /doc/build/doctrees/tareas_y_etapas.doctree Sun May 23 10:58:24 2010
@@ -1,41 +1,45 @@
-€ (cdocutils.nodes
+€ cdocutils.nodes
document
-q oq }q (U nametypesq }q X tareas y
etapasq NsU substitution_defsq }q U parse_messagesq ]q
+q ) q }q (U nametypesq }q X tareas y
etapasq NsU substitution_defsq }q U parse_messagesq ]q
U current_sourceq NU
decorationq NU autofootnote_startq
-K U nameidsq }q h U tareas-y-etapasq sU childrenq ]q (cdocutils.nodes
+K U nameidsq }q h U tareas-y-etapasq sU childrenq ]q cdocutils.nodes
section
-q oq }q (U
rawsourceq U U parentq h U sourceq UE/home/hugoruscitti/proyectos/asadetris/doc/source/tareas_y_etapas.rstq U tagnameq U sectionq U
-attributesq
-}q
-(U dupnamesq
-]q U classesq
]q!U backrefsq"]q#U idsq$]q%h aU namesq&]q'h auU lineq(K U documentq)h h ]q*((cdocutils.nodes
+q ) q }q (U rawsourceq U U parentq h U sourceq cdocutils.nodes
+reprunicode
+q XE /home/hugoruscitti/proyectos/asadetris/doc/source/tareas_y_etapas.rstq
+ q }q
+bU tagnameq
+U sectionq
+U
+attributesq }q
(U dupnamesq!]q"U classesq#]q$U backrefsq%]q&U idsq']q(h aU namesq)]q*h auU lineq+K U documentq,h h ]q-(cdocutils.nodes
title
-q+oq,}q-(h X Tareas y etapasq.h h h h h U titleq/h
-}q0(h
-]q1h ]q2h"]q3h$]q4h&]q5uh(K h)h h ]q6cdocutils.nodes
+q.) q/}q0(h X Tareas y etapasq1h h h h h
+U titleq2h }q3(h!]q4h#]q5h%]q6h']q7h)]q8uh+K h,h h ]q9cdocutils.nodes
Text
-q7) q8}q9(h h.U dataq:X Tareas y etapasq;h h,ubaub(cdocutils.nodes
+q:X Tareas y etapasq;
+ q<}q=(h h1h h/ubaubcdocutils.nodes
paragraph
-q<oq=}q>(h Xb El proyecto se divide en varias etapas, y a su vez cada
etapa está
-dividida en diferentes tareas.q?h h h h h U paragraphq@h
-}qA(h
-]qBh ]qCh"]qDh$]qEh&]qFuh(K h)h h ]qGh7) qH}qI(h h?h:Xb El proyecto se
divide en varias etapas, y a su vez cada etapa está
-dividida en diferentes tareas.qJh h=ubaub(h<oqK}qL(h X” Lo que sigue es
el contenido del archivo ``doc/etapas.otl`` en
+q>) q?}q@(h Xb El proyecto se divide en varias etapas, y a su vez cada
etapa está
+dividida en diferentes tareas.qAh h h h h
+U paragraphqBh }qC(h!]qDh#]qEh%]qFh']qGh)]qHuh+K h,h h ]qIh:Xb El
proyecto se divide en varias etapas, y a su vez cada etapa está
+dividida en diferentes tareas.qJ
+ qK}qL(h hAh h?ubaubh>) qM}qN(h X” Lo que sigue es el contenido del
archivo ``doc/etapas.otl`` en
donde registramos cada uno de los cambios que realizamos en base
-a la planificación.qMh h h h h h@h
-}qN(h
-]qOh ]qPh"]qQh$]qRh&]qSuh(K h)h h ]qT(h7) qU}qV(h X) Lo que sigue es el
contenido del archivo qWh:X) Lo que sigue es el contenido del archivo
qXh hKub(cdocutils.nodes
+a la planificación.qOh h h h h
+hBh }qP(h!]qQh#]qRh%]qSh']qTh)]qUuh+K h,h h ]qV(h:X) Lo que sigue es el
contenido del archivo qW
+ qX}qY(h X) Lo que sigue es el contenido del archivo
qZh hMubcdocutils.nodes
literal
-qYoqZ}q[(h X ``doc/etapas.otl``q\h
-}q](h
-]q^h
]q_h"]q`h$]qah&]qbuh hKh ]qch7) qd}qe(h U h:X doc/etapas.otlqfh hZubah U literalqgubh7) qh}qi(h XY
en
+q[) q\}q](h X ``doc/etapas.otl``q^h }q_(h!]q`h#]qah%]qbh']qch)]qduh hMh ]qeh:X doc/etapas.otlqf
+ qg}qh(h U h h\ubah
+U literalqiubh:XY en
donde registramos cada uno de los cambios que realizamos en base
-a la planificación.qjh:XY en
+a la planificación.qj
+ qk}ql(h XY en
donde registramos cada uno de los cambios que realizamos en base
-a la planificación.qkh hKubeub(cdocutils.nodes
+a la planificación.qmh hMubeubcdocutils.nodes
literal_block
-qloqm}qn(h X‹ : Este documento enumera todas las tareas y etapas que se
relizarán
+qn) qo}qp(h X‡ : Este documento enumera todas las tareas y etapas que se
relizarán
: para concluir el desarrollo del juego.

: Note que este archivo se modifica con frecuencia, en este momento
@@ -149,49 +153,177 @@
: Aquí se implementan la creación de lineas y la asignación de puntaje.
[X] permitir que el usuario pueda hacer lineas
[X] hacer que las piezas bajen a una determinada velocidad.
- [X] implementar un contador del lineas
+ [X] implementar un contador de lineas
[X] imprimir un mensaje de GameOver cuando llega a la parte superior.

-
Siguientes etapas
=================

-
+[_] % Etapa 6
+ [X] permitir que el usuario use el mouse para seleccionar en el menu.
+ [_] crear la escena de ayuda explicando los controles.
+ [_] crear la escena de configuración del juego
+ [_] opción para des/habilitar sonidos
+ [_] opción para des/habilitar musica
+ [X] alternar entre ventana y pantalla completa.
+ [_] selección del tema visual a utilizar.
+ [_] administrar los puntajes del juego
+ [_] crear escena para mostrar los puntajes de los mejores jugadores
+ [_] crear escena para quien logra un puntaje muy bueno
+ [_] crear paquete .deb para distribuciones como Debian y Ubuntu.
+qqh h h h h
+U
+literal_blockqrh }qs(h!]qtU
xml:spacequU preserveqvh']qwh%]qxU sourceqyX? /home/hugoruscitti/proyectos/asadetris/doc/source/../etapas.otlqzh#]q{h)]q|
uh+K h,h h ]q}h:X‡ : Este documento enumera todas las tareas y etapas que
se relizarán
+: para concluir el desarrollo del juego.
+
+: Note que este archivo se modifica con frecuencia, en este momento
+: no está completo.
+
+[_] 38% Etapa 5 (actual)
+ : Se agregan mejoras como las animaciones
+ [X] mostrar la siguiente pieza que va a caer.
+ [X] aumentar la velocidad de caída cuando completa mas de 10 lineas.
+ [_] crear presentacion del juego
+ [_] mejorar la escena de creditos
+ [_] cambiar el tema visual de las piezas
+ [_] crear efectos visuales en la transición entre escenas
+ [_] Colocar sonidos
+ [_] crear animación a la eliminación de lineas
+ [X] aplicar animaciones a la rotación de las piezas
+ [X] permite aternar entre pantalla completa y ventana.
+ [X] soporte para jugar con joystick.
+ [_] probar en otros sistemas operativos como windows.
+ [_] genera version ejecutable en formato .exe
+
+
+
+Etapas anteriores
+=================
+
+
+[X] 100% Etapa 1
+ : El propósito de esta etapa es tener una ventana principal con
+ : un fondo de pantalla y una leyenda de texto. El usuario tiene
+ : que poder cerrar la ventana pulsando una tecla o haciendo click
+ : con el mouse.
+
+ : En sí es muy básico, pero aún así involucra varias tareas
realacionadas
+ : con la organización del proyecto, la documentación, los directorios y
+ : las funciones iniciales.
+
+ [X] crear repositorio
+ [X] definir la estructura de directorios a utilizar
+ [X] crear el directorio 'doc' con la documentación en formato sphinx
+ [X] crear una ventana
+ [X] gestionar los eventos de mouse y teclado
+ [X] crear el sistema de escenas básico
+ [X] explicar la estrategia a desarrollar
+ [X] mejorar el programa principal
+ [X] crear la escena abstracta
+ [X] crear una escena de implementación (presentación)
+ [X] crear función para cargar imagenes
+ [X] mostrar una imagen con el titulo del juego.
+ [X] definir un archivo setup.py inicial
+ [X] publicar URL de la documentación en el foro
+ [X] 100% desarrollar un sistema de fuentes tipograficas
+ [X] crear función para cargar e imprimir fuentes
+ [X] mostrar el mensaje "pulse una tecla para salir" en la pantalla
principal.
+ [X] proponer un estilo de codificación
+[X] 100% Etapa 2
+ : Se desarrollan los movimientos básicos de las piezas, el usuario
+ : tiene que poder mover una pieza por la pantalla usando los
+ : direccionales del teclado y rotar las mismas con las teclas 'x' y
+ : 'z'.
+
+ : Si la ficha llega abajo queda bloqueada hacia abajo, pero igualmente
+ : se tiene que poder mover de izquierda a derecha.
+
+ : Se relaciona con la etapa uno porque el usuario puede pulsar
+ : "Escape" y se le tiene que mostrar la pantalla del ejemplo anterior,
+ : en donde pulsando una tecla se cierra toda la aplicación.
+
+ : Hay solo un tipo de pieza (la "L").
+
+ [X] Extender el sistema de fuentes
+ [X] crear un directorio para recursos de fuentes tipograficas
+ [X] que la función de imprimir cadenas soporte saltos de linea.
+ [X] crear escena de juego
+ [X] crear una ficha
+ [X] permitir el movimiento de la ficha
+ [X] aplicar restricciones de movimiento como los bordes
+ [X] colisiones sencillas con el centro de la pieza.
+ [X] colisiones logradas con los bordes.
+ [X] implementar las rotaciones hacia izquiera o derecha
+ [X] restringir las rotaciones en los bordes
+ [X] mejorar el sistema de escenas para permitir cambios de una a otra
+ [X] hacer que el usuario pueda ir a otra escena (la de la etapa anterior)
pulsando la tecla ESC.
+ [X] Imprimir un mensaje que indique esto en la ventana.
+ [X] Asignar el cambio a la tecla ESCAPE.
+[X] 100% Etapa 3
+ : En esta etapa ya se puede comenzar a apilar fichas. El usuario tiene
+ : que poder hacer bajar una pieza, que permanezca en el suelo y que
+ : llegue otra nueva para poder mover.
+
+ : En esta etapa ya caen desde la parte superior de escenario el resto
+ : de las fichas, no solo las 'L'.
+
+ : Cuando el usuario llegue arriba se tiene que imprimir algún mensaje
+ : y cambiar de escena.
+
+ : No se pueden hacer lineas en esta versión, solamente apilar.
+
+ [X] Detener piezas cuando llegan abajo
+ [X] Crear nuevas piezas cuando deja una en el suelo
+ [X] Implementar colisiones entre las piezas
+ [X] Crear las piezas que faltan.
+ [X] Mostrar las piezas aleatoriamente.
+ [X] Permitir que el usuario pueda bajar una pieza directamente (y no
progresivamente)
+ : se agrega la tecla SPACE al control del juego.
+ [X] Mostrar las piezas reposando si tocan el suelo
+ : primero mostrar rectangulos de cualquier color en donde
+ : existe una colisión. Luego se puede pintar la pieza tal y
+ : como es.
+[X] 100% Etapa 4
+ : Aquí se implementan la creación de lineas y la asignación de puntaje.
+ [X] permitir que el usuario pueda hacer lineas
+ [X] hacer que las piezas bajen a una determinada velocidad.
+ [X] implementar un contador de lineas
+ [X] imprimir un mensaje de GameOver cuando llega a la parte superior.
+
+Siguientes etapas
+=================

[_] % Etapa 6
- [_] permitir que el usuario use el mouse para seleccionar en el menu.
+ [X] permitir que el usuario use el mouse para seleccionar en el menu.
[_] crear la escena de ayuda explicando los controles.
[_] crear la escena de configuración del juego
[_] opción para des/habilitar sonidos
[_] opción para des/habilitar musica
- [_] alternar entre ventana y pantalla completa.
+ [X] alternar entre ventana y pantalla completa.
[_] selección del tema visual a utilizar.
[_] administrar los puntajes del juego
[_] crear escena para mostrar los puntajes de los mejores jugadores
[_] crear escena para quien logra un puntaje muy bueno
[_] crear paquete .deb para distribuciones como Debian y Ubuntu.
-qoh h h h h U
-literal_blockqph
-}qq(h
-]qrU
xml:spaceqsU preserveqth$]quh"]qvU sourceqwX? /home/hugoruscitti/proyectos/asadetris/doc/source/../etapas.otlqxh
]qyh&]qzuh(K h)h h ]q{h7) q|}q}(h U h:hoh hmubaubeubah U U transformerq~NU
-footnote_refsq }q€U refnamesq }q‚U symbol_footnotesqƒ]q„U autofootnote_refsq
-]q†U symbol_footnote_refsq‡]qˆU
citationsq‰]qŠh)h U current_lineq‹NU transform_messagesqŒ]q U reporterqŽNU id_startq K U
-autofootnotesq ]q‘U
-citation_refsq’}q“U indirect_targetsq”]q•U settingsq–(cdocutils.frontend
+q~
+ q }q€(h U h houbaubeubah U U transformerq NU
+footnote_refsq‚}qƒU refnamesq„}q
+U symbol_footnotesq†]q‡U autofootnote_refsqˆ]q‰U symbol_footnote_refsqŠ]q‹U
citationsqŒ]q h,h U current_lineqŽNU transform_messagesq ]q U reporterq‘NU id_startq’K U
+autofootnotesq“]q”U
+citation_refsq•}q–U indirect_targetsq—]q˜U settingsq™(cdocutils.frontend
Values
-q—oq˜}q™(U footnote_backlinksqšK U record_dependenciesq›NU rfc_base_urlqœU http://tools.ietf.org/html/q U
tracebackqžK U pep_referencesqŸNU strip_commentsq NU
-toc_backlinksq¡U entryq¢U
-language_codeq£U enq¤U datestampq¥NU report_levelq¦K U _destinationq§NU
-halt_levelq¨K U
-strip_classesq©Nh/NU
-error_encoding_error_handlerqªU backslashreplaceq«U debugq¬NU embed_stylesheetq­‰U
-output_encoding_error_handlerq®U strictq¯U
-sectnum_xformq°K U dump_transformsq±NU
-docinfo_xformq²K U warning_streamq³NU pep_file_url_templateq´U pep-%04dqµU exit_status_levelq¶K U configq·NU strict_visitorq¸NU cloak_email_addressesq¹ˆU
-trim_footnote_reference_spaceqº‰U envq»NU dump_pseudo_xmlq¼NU expose_internalsq½NU sectsubtitle_xformq¾‰U source_linkq¿NU rfc_referencesqÀNU output_encodingqÁU utf-8qÂU
-source_urlqÃNU input_encodingqÄU utf-8qÅU _disable_configqÆNU
id_prefixqÇU U tab_widthqÈK U error_encodingqÉU asciiqÊU _sourceqËh U
generatorqÌNU dump_internalsqÍNU pep_base_urlqÎU http://www.python.org/dev/peps/qÏU
-input_encoding_error_handlerqÐh¯U auto_id_prefixqÑU idqÒU doctitle_xformqÓ‰U strip_elements_with_classesqÔNU
-_config_filesqÕ]qÖU file_insertion_enabledq×K U raw_enabledqØK U
-dump_settingsqÙNubU symbol_footnote_startqÚK U idsqÛ}qÜh h sU substitution_namesqÝ}qÞh h)h
-}qß(h
-]qàh$]qáh"]qâU sourceqãh h ]qäh&]qåuU footnotesqæ]qçU refidsqè}qéub.
+qšoq›}qœ(U footnote_backlinksq K U record_dependenciesqžNU rfc_base_urlqŸU http://tools.ietf.org/html/q U
tracebackq¡K U pep_referencesq¢NU strip_commentsq£NU
+toc_backlinksq¤U entryq¥U
+language_codeq¦U enq§U datestampq¨NU report_levelq©K U _destinationqªNU
+halt_levelq«K U
+strip_classesq¬Nh2NU
+error_encoding_error_handlerq­U backslashreplaceq®U debugq¯NU embed_stylesheetq°‰U
+output_encoding_error_handlerq±U strictq²U
+sectnum_xformq³K U dump_transformsq´NU
+docinfo_xformqµK U warning_streamq¶NU pep_file_url_templateq·U pep-%04dq¸U exit_status_levelq¹K U configqºNU strict_visitorq»NU cloak_email_addressesq¼ˆU
+trim_footnote_reference_spaceq½‰U envq¾NU dump_pseudo_xmlq¿NU expose_internalsqÀNU sectsubtitle_xformqÁ‰U source_linkqÂNU rfc_referencesqÃNU output_encodingqÄU utf-8qÅU
+source_urlqÆNU input_encodingqÇU utf-8-sigqÈU _disable_configqÉNU
id_prefixqÊU U
tab_widthqËK U error_encodingqÌU UTF-8qÍU _sourceqÎUE/home/hugoruscitti/proyectos/asadetris/doc/source/tareas_y_etapas.rstqÏU
generatorqÐNU dump_internalsqÑNU pep_base_urlqÒU http://www.python.org/dev/peps/qÓU
+input_encoding_error_handlerqÔh²U auto_id_prefixqÕU idqÖU doctitle_xformq׉U strip_elements_with_classesqØNU
+_config_filesqÙ]qÚU file_insertion_enabledqÛK U raw_enabledqÜK U
+dump_settingsqÝNubU symbol_footnote_startqÞK U idsqß}qàh h sU substitution_namesqá}qâh
+h,h }qã(h!]qäh']qåh%]qæU sourceqçh h#]qèh)]qéuU
footnotesqê]qëU refidsqì}qíub.
=======================================
--- /doc/build/html/_static/basic.css Wed Jul 8 21:04:09 2009
+++ /doc/build/html/_static/basic.css Sun May 23 10:58:24 2010
@@ -5,15 +5,6 @@

/* -- main layout
----------------------------------------------------------- */

-div.documentwrapper {
- float: left;
- width: 100%;
-}
-
-div.bodywrapper {
- margin: 0 0 0 230px;
-}
-
div.clearer {
clear: both;
}
@@ -340,6 +331,18 @@
.footnote:target {
background-color: #ffa
}
+
+.line-block {
+ display: block;
+ margin-top: 1em;
+ margin-bottom: 1em;
+}
+
+.line-block .line-block {
+ margin-top: 0;
+ margin-bottom: 0;
+ margin-left: 1.5em;
+}

/* -- code displays
--------------------------------------------------------- */

@@ -387,7 +390,7 @@
vertical-align: middle;
}

-div.math p {
+div.body div.math p {
text-align: center;
}

@@ -401,7 +404,7 @@
div.document,
div.documentwrapper,
div.bodywrapper {
- margin: 0;
+ margin: 0 !important;
width: 100%;
}

=======================================
--- /doc/build/html/_static/default.css Wed Jul 8 21:04:09 2009
+++ /doc/build/html/_static/default.css Sun May 23 10:58:24 2010
@@ -19,6 +19,15 @@
div.document {
background-color: #1c4e63;
}
+
+div.documentwrapper {
+ float: left;
+ width: 100%;
+}
+
+div.bodywrapper {
+ margin: 0 0 0 230px;
+}

div.body {
background-color: #ffffff;
@@ -156,6 +165,18 @@
div.admonition p.admonition-title + p {
display: inline;
}
+
+div.admonition p {
+ margin-bottom: 5px;
+}
+
+div.admonition pre {
+ margin-bottom: 5px;
+}
+
+div.admonition ul, div.admonition ol {
+ margin-bottom: 5px;
+}

div.note {
background-color: #eee;
@@ -199,3 +220,11 @@
padding: 0 1px 0 1px;
font-size: 0.95em;
}
+
+.warning tt {
+ background: #efc2c2;
+}
+
+.note tt {
+ background: #d6d6d6;
+}
=======================================
--- /doc/build/html/_static/jquery.js Wed Jul 8 21:04:09 2009
+++ /doc/build/html/_static/jquery.js Sun May 23 10:58:24 2010
@@ -1,32 +1,6240 @@
-/*
- * jQuery 1.2.6 - New Wave Javascript
+/*!
+ * jQuery JavaScript Library v1.4.2
+ * http://jquery.com/
*
- * Copyright (c) 2008 John Resig (jquery.com)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
*
- * $Date: 2008-05-24 14:22:17 -0400 (Sat, 24 May 2008) $
- * $Rev: 5685 $
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Sat Feb 13 22:33:48 2010 -0500
*/
-(function(){var _jQuery=window.jQuery,_$=window.$;var
jQuery=window.jQuery=window.$=function(selector,context){return new
jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|
^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector|
|document;if(selector.nodeType){this[0]=selector;this.length=1;return
this;}if(typeof selector=="string"){var
match=quickExpr.exec(selector);if(match&&(match[1]|
|!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var
elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return
jQuery().find(selector);return jQuery(elem);}selector=[];}}else
-return jQuery(context).find(selector);}else
if(jQuery.isFunction(selector))return
jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return
this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return
this.length;},length:0,get:function(num){return
num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var
ret=jQuery(elems);ret.prevObject=this;return
ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return
this;},each:function(callback,args){return
jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return
jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var
options=name;if(name.constructor==String)if(value===undefined)return
this[0]&&jQuery[type|
|"attr"](this[0],name);else{options={};options[name]=value;}return
this.each(function(i){for(name in
options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'|
|key=='height')&&parseFloat(value)<0)value=undefined;return
this.attr(key,value,"curCSS");},text:function(text){if(typeof
text!="object"&&text!=null)return
this.empty().append((this[0]&&this[0].ownerDocument||
document).createTextNode(text));var ret="";jQuery.each(text||
this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return
ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var
elem=this;while(elem.firstChild)elem=elem.firstChild;return
elem;}).append(this);return this;},wrapInner:function(html){return
this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return
this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return
this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return
this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return
this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return
this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return
this.prevObject||jQuery([]);},find:function(selector){var
elems=jQuery.map(this,function(elem){return
jQuery.find(selector,elem);});return this.pushStack(/[^+>]
[^+>]/.test(selector)||
selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var
ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var
clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return
jQuery.clean([container.innerHTML])[0];}else
-return this.cloneNode(true);});var
clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var
events=jQuery.data(this,"events");for(var type in events)for(var handler in
events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return
ret;},filter:function(selector){return
this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return
selector.call(elem,i);})||
jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return
this.pushStack(jQuery.multiFilter(selector,this,true));else
-selector=jQuery.multiFilter(selector,this);var
isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return
this.filter(function(){return
isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return
this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof
selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return
this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var
elem=this[0];if(jQuery.nodeName(elem,"select")){var
index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return
null;for(var i=one?index:0,max=one?index+1:options.length;i<max;i++){var
option=options[i];if(option.selected){value=jQuery.browser.msie&&!option.attributes.value.specified?option.text:option.value;if(one)return
value;values.push(value);}}return values;}else
-return(this[0].value||"").replace(/\r/g,"");}return
undefined;}if(value.constructor==Number)value+='';return
this.each(function(){if(this.nodeType!=1)return;if(value.constructor==Array&&/radio|
checkbox/.test(this.type))this.checked=(jQuery.inArray(this.value,value)>=0|
|jQuery.inArray(this.name,value)>=0);else
if(jQuery.nodeName(this,"select")){var
values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0|
|
jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else
-this.value=value;});},html:function(value){return
value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return
this.after(value).remove();},eq:function(i){return
this.slice(i,i+1);},slice:function(){return
this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return
this.pushStack(jQuery.map(this,function(elem,i){return
callback.call(elem,i,elem);}));},andSelf:function(){return
this.add(this.prevObject);},data:function(key,value){var
parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var
data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return
data===undefined&&parts[1]?this.data(parts[0]):data;}else
-return
this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return
this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var
clone=this.length>1,elems;return
this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var
obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]|
|this.appendChild(this.ownerDocument.createElement("tbody"));var
scripts=jQuery([]);jQuery.each(elems,function(){var
elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function
evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else
-jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML|
|"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function
now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var
target=arguments[0]||
{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]|
|{};i=2;}if(typeof target!="object"&&typeof
target!="function")target={};if(length==i){target=this;--i;}for(;i<length;i++)if((options=arguments[i])!=null)for(var
name in options){var
src=target[name],copy=options[name];if(target===copy)continue;if(deep&&copy&&typeof
copy=="object"&&!copy.nodeType)target[name]=jQuery.extend(deep,src||
(copy.length!=null?[]:{}),copy);else
if(copy!==undefined)target[name]=copy;}return target;};var
expando="jQuery"+now(),uuid=0,windowData={},exclude=/z-?index|font-?weight|
opacity|zoom|line-?height/i,defaultView=document.defaultView||
{};jQuery.extend({noConflict:function(deep){window.$=_$;if(deep)window.jQuery=_jQuery;return
jQuery;},isFunction:function(fn){return!!fn&&typeof
fn!="string"&&!fn.nodeName&&fn.constructor!=Array&&/^[\s[]?function/.test(fn+"");},isXMLDoc:function(elem){return
elem.documentElement&&!elem.body||
elem.tagName&&elem.ownerDocument&&!elem.ownerDocument.body;},globalEval:function(data){data=jQuery.trim(data);if(data){var
head=document.getElementsByTagName("head")[0]||
document.documentElement,script=document.createElement("script");script.type="text/javascript";if(jQuery.browser.msie)script.text=data;else
-script.appendChild(document.createTextNode(data));head.insertBefore(script,head.firstChild);head.removeChild(script);}},nodeName:function(elem,name){return
elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase();},cache:{},data:function(elem,name,data){elem=elem==window?windowData:elem;var
id=elem[expando];if(!id)id=elem[expando]=++uuid;if(name&&!jQuery.cache[id])jQuery.cache[id]={};if(data!==undefined)jQuery.cache[id][name]=data;return
name?jQuery.cache[id][name]:id;},removeData:function(elem,name){elem=elem==window?windowData:elem;var
id=elem[expando];if(name){if(jQuery.cache[id]){delete
jQuery.cache[id][name];name="";for(name
in
jQuery.cache[id])break;if(!name)jQuery.removeData(elem);}}else{try{delete
elem[expando];}catch(e){if(elem.removeAttribute)elem.removeAttribute(expando);}delete
jQuery.cache[id];}},each:function(object,callback,args){var
name,i=0,length=object.length;if(args){if(length==undefined){for(name in
object)if(callback.apply(object[name],args)===false)break;}else
-for(;i<length;)if(callback.apply(object[i++],args)===false)break;}else{if(length==undefined){for(name
in
object)if(callback.call(object[name],name,object[name])===false)break;}else
-for(var
value=object[0];i<length&&callback.call(value,i,value)!==false;value=object[++i]){}}return
object;},prop:function(elem,value,type,i,name){if(jQuery.isFunction(value))value=value.call(elem,i);return
value&&value.constructor==Number&&type=="curCSS"&&!exclude.test(name)?value+"px":value;},className:{add:function(elem,classNames){jQuery.each((classNames|
|"").split(/\s+/),function(i,className){if(elem.nodeType==1&&!jQuery.className.has(elem.className,className))elem.className+=(elem.className?" ":"")+className;});},remove:function(elem,classNames){if(elem.nodeType==1)elem.className=classNames!=undefined?jQuery.grep(elem.className.split(/\s+/),function(className){return!jQuery.className.has(classNames,className);}).join(" "):"";},has:function(elem,className){return
jQuery.inArray(className,(elem.className||
elem).toString().split(/\s+/))>-1;}},swap:function(elem,options,callback){var
old={};for(var name in
options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var
name in
options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"|
|name=="height"){var
val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function
getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var
padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))|
|0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||
0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else
-jQuery.swap(elem,props,getWH);return Math.max(0,val);}return
jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var
ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return
false;var ret=defaultView.getComputedStyle(elem,null);return!ret||
ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return
ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var
save=style.outline;style.outline="0 solid
black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else
if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var
computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var
swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i<stack.length;i++)if(color(stack[i])){swap[i]=stack[i].style.display;stack[i].style.display="block";}ret=name=="display"&&swap[stack.length-1]!=null?"none":(computedStyle&&computedStyle.getPropertyValue(name))|
|"";for(i=0;i<swap.length;i++)if(swap[i]!=null)stack[i].style.display=swap[i];}if(name=="opacity"&&ret=="")ret="1";}else
if(elem.currentStyle){var
camelCase=name.replace(/\-(\w)/g,function(all,letter){return
letter.toUpperCase();});ret=elem.currentStyle[name]||
elem.currentStyle[camelCase];if(!/^\d+(px)?$/i.test(ret)&&/^\d/.test(ret)){var
left=style.left,rsLeft=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;style.left=ret|
|
0;ret=style.pixelLeft+"px";style.left=left;elem.runtimeStyle.left=rsLeft;}}return
ret;},clean:function(elems,context){var ret=[];context=context||
document;if(typeof
context.createElement=='undefined')context=context.ownerDocument||
context[0]&&context[0].ownerDocument||
document;jQuery.each(elems,function(i,elem){if(!elem)return;if(elem.constructor==Number)elem+='';if(typeof
elem=="string"){elem=elem.replace(/(<(\w+)[^>]*?)\/>/g,function(all,front,tag){return
tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|
embed)$/i)?all:front+"></"+tag+">";});var
tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var
wrap=!tags.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]|
|!tags.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||
tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]|
|!tags.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||
(!tags.indexOf("<td")|
|!tags.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]|
|!tags.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]|
|jQuery.browser.msie&&[1,"div<div>","</div>"]||
[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var
tbody=!tags.indexOf("<table")&&tags.indexOf("<tbody")<0?div.firstChild&&div.firstChild.childNodes:wrap[1]=="<table>"&&tags.indexOf("<tbody")<0?div.childNodes:[];for(var
j=tbody.length-1;j>=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined|
|jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else
-ret=jQuery.merge(ret,elem);});return
ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||
elem.nodeType==8)return undefined;var
notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]|
|name;if(elem.tagName){var special=/href|src|
style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name
in
elem&&notxml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type
property can't be
changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return
elem.getAttributeNode(name).nodeValue;return
elem[name];}if(msie&&notxml&&name=="style")return
jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var
attr=msie&&notxml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return
attr===null?undefined:attr;}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter|
|"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return
elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return
letter.toUpperCase();});if(set)elem[name]=value;return
elem[name];},trim:function(text){return(text||"").replace(/^\s+|
\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var
i=array.length;if(i==null||array.split||array.setInterval||
array.call)ret[0]=array;else
-while(i)ret[--i]=array[i];}return
ret;},inArray:function(elem,array){for(var
i=0,length=array.length;i<length;i++)if(array[i]===elem)return
i;return-1;},merge:function(first,second){var
i=0,elem,pos=first.length;if(jQuery.browser.msie){while(elem=second[i++])if(elem.nodeType!=8)first[pos++]=elem;}else
-while(elem=second[i++])first[pos++]=elem;return
first;},unique:function(array){var ret=[],done={};try{for(var
i=0,length=array.length;i<length;i++){var
id=jQuery.data(array[i]);if(!done[id]){done[id]=true;ret.push(array[i]);}}}catch(e){ret=array;}return
ret;},grep:function(elems,callback,inv){var ret=[];for(var
i=0,length=elems.length;i<length;i++)if(!inv!=!callback(elems[i],i))ret.push(elems[i]);return
ret;},map:function(elems,callback){var ret=[];for(var
i=0,length=elems.length;i<length;i++){var
value=callback(elems[i],i);if(value!=null)ret[ret.length]=value;}return
ret.concat.apply([],ret);}});var
userAgent=navigator.userAgent.toLowerCase();jQuery.browser={version:(userAgent.match(/.+(?:rv|
it|ra|ie)[\/: ]([\d.]+)/)||
[])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/mozilla/.test(userAgent)&&!/(compatible|
webkit)/.test(userAgent)};var
styleFloat=jQuery.browser.msie?"styleFloat":"cssFloat";jQuery.extend({boxModel:!jQuery.browser.msie|
|
document.compatMode=="CSS1Compat",props:{"for":"htmlFor","class":"className","float":styleFloat,cssFloat:styleFloat,styleFloat:styleFloat,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing"}});jQuery.each({parent:function(elem){return
elem.parentNode;},parents:function(elem){return
jQuery.dir(elem,"parentNode");},next:function(elem){return
jQuery.nth(elem,2,"nextSibling");},prev:function(elem){return
jQuery.nth(elem,2,"previousSibling");},nextAll:function(elem){return
jQuery.dir(elem,"nextSibling");},prevAll:function(elem){return
jQuery.dir(elem,"previousSibling");},siblings:function(elem){return
jQuery.sibling(elem.parentNode.firstChild,elem);},children:function(elem){return
jQuery.sibling(elem.firstChild);},contents:function(elem){return
jQuery.nodeName(elem,"iframe")?elem.contentDocument||
elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(selector){var
ret=jQuery.map(this,fn);if(selector&&typeof
selector=="string")ret=jQuery.multiFilter(selector,ret);return
this.pushStack(jQuery.unique(ret));};});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(){var
args=arguments;return this.each(function(){for(var
i=0,length=args.length;i<length;i++)jQuery(args[i])[original](this);});};});jQuery.each({removeAttr:function(name){jQuery.attr(this,name,"");if(this.nodeType==1)this.removeAttribute(name);},addClass:function(classNames){jQuery.className.add(this,classNames);},removeClass:function(classNames){jQuery.className.remove(this,classNames);},toggleClass:function(classNames){jQuery.className[jQuery.className.has(this,classNames)?"remove":"add"](this,classNames);},remove:function(selector){if(!selector|
|
jQuery.filter(selector,[this]).r.length){jQuery("*",this).add(this).each(function(){jQuery.event.remove(this);jQuery.removeData(this);});if(this.parentNode)this.parentNode.removeChild(this);}},empty:function(){jQuery(">*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return
this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var
type=name.toLowerCase();jQuery.fn[type]=function(size){return
this[0]==window?jQuery.browser.opera&&document.body["client"+name]||
jQuery.browser.safari&&window["inner"+name]||
document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||
document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function
num(elem,prop){return
elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var
chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|
\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new
RegExp("^>\\s*("+chars+"+)"),quickID=new
RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new
RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return
m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return
a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return
i<m[3]-0;},gt:function(a,i,m){return i>m[3]-0;},nth:function(a,i,m){return
m[3]-0==i;},eq:function(a,i,m){return
m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return
i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return
i%2;},"first-child":function(a){return
a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return
jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return
a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent|
|a.innerText||jQuery(a).text()|
|"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type|
|jQuery.css(a,"display")=="none"||
jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return
a.disabled;},checked:function(a){return
a.checked;},selected:function(a){return a.selected||
jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type|
|jQuery.nodeName(a,"button");},input:function(a){return/input|select|
textarea|button/i.test(a.nodeName);},has:function(a,i,m){return
jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return
jQuery.grep(jQuery.timers,function(fn){return
a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*)
*('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new
RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var
old,cur=[];while(expr&&expr!=old){old=expr;var
f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return
cur;},find:function(t,context){if(typeof
t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context|
|document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var
r=[];last=t;t=jQuery.trim(t);var
foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var
i=0;ret[i];i++)for(var
c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||
c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var
merge={};nodeName=m[2].toUpperCase();m=m[1];for(var
j=0,rl=ret.length;j<rl;j++){var n=m=="~"||
m=="+"?ret[j].nextSibling:ret[j].firstChild;for(;n;n=n.nextSibling)if(n.nodeType==1){var
id=jQuery.data(n);if(m=="~"&&merge[id])break;if(!nodeName||
n.nodeName.toUpperCase()==nodeName){if(m=="~")merge[id]=true;r.push(n);}if(m=="+")break;}}ret=r;t=jQuery.trim(t.replace(re,""));foundToken=true;}}if(t&&!foundToken){if(!t.indexOf(",")){if(context==ret[0])ret.shift();done=jQuery.merge(done,ret);r=ret=[context];t=" "+t.substr(1,t.length);}else{var
re2=quickID;var
m=re2.exec(t);if(m){m=[0,m[2],m[3],m[1]];}else{re2=quickClass;m=re2.exec(t);}m[2]=m[2].replace(/\\/g,"");var
elem=ret[ret.length-1];if(m[1]=="#"&&elem&&elem.getElementById&&!jQuery.isXMLDoc(elem)){var
oid=elem.getElementById(m[2]);if((jQuery.browser.msie||
jQuery.browser.opera)&&oid&&typeof
oid.id=="string"&&oid.id!=m[2])oid=jQuery('[@id="'+m[2]+'"]',elem)[0];ret=r=oid&&(!m[3]|
|jQuery.nodeName(oid,m[3]))?[oid]:[];}else{for(var i=0;ret[i];i++){var
tag=m[1]=="#"&&m[3]?m[3]:m[1]!=""||
m[0]==""?"*":m[2];if(tag=="*"&&ret[i].nodeName.toLowerCase()=="object")tag="param";r=jQuery.merge(r,ret[i].getElementsByTagName(tag));}if(m[1]==".")r=jQuery.classFilter(r,m[2]);if(m[1]=="#"){var
tmp=[];for(var
i=0;r[i];i++)if(r[i].getAttribute("id")==m[2]){tmp=[r[i]];break;}r=tmp;}ret=r;}t=t.replace(re2,"");}}if(t){var
val=jQuery.filter(t,r);ret=r=val.r;t=jQuery.trim(val.t);}}if(t)ret=[];if(ret&&context==ret[0])ret.shift();done=jQuery.merge(done,ret);return
done;},classFilter:function(r,m,not){m=" "+m+" ";var tmp=[];for(var
i=0;r[i];i++){var pass=(" "+r[i].className+" ").indexOf(m)>=0;if(!not&&pass|
|not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var
last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var
i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else
if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var
tmp=[],type=m[3];for(var i=0,rl=r.length;i<rl;i++){var
a=r[i],z=a[jQuery.props[m[2]]||m[2]];if(z==null||/href|src|
selected/.test(m[2]))z=jQuery.attr(a,m[2])||'';if((type==""&&!!z||
type=="="&&z==m[5]||type=="!="&&z!=m[5]||type=="^="&&z&&!z.indexOf(m[5])||
type=="$="&&z.substr(z.length-m[5].length)==m[5]||(type=="*="||
type=="~=")&&z.indexOf(m[5])>=0)^not)tmp.push(a);}r=tmp;}else
if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|
-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"|
|!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||
1))-0,last=test[3]-0;for(var i=0,rl=r.length;i<rl;i++){var
node=r[i],parentNode=node.parentNode,id=jQuery.data(parentNode);if(!merge[id]){var
c=1;for(var
n=parentNode.firstChild;n;n=n.nextSibling)if(n.nodeType==1)n.nodeIndex=c++;merge[id]=true;}var
add=false;if(first==0){if(node.nodeIndex==last)add=true;}else
if((node.nodeIndex-last)%first==0&&(node.nodeIndex-last)/first>=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var
fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof
fn=="string")fn=eval("false||
function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return
fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var
matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return
matched;},nth:function(cur,result,dir,elem){result=result||1;var
num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return
cur;},sibling:function(n,elem){var
r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return
r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3|
|
elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var
fn=handler;handler=this.proxy(fn,function(){return
fn.apply(this,arguments);});handler.data=data;}var
events=jQuery.data(elem,"events")||
jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||
jQuery.data(elem,"handle",function(){if(typeof
jQuery!="undefined"&&!jQuery.event.triggered)return
jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var
parts=type.split(".");type=parts[0];handler.type=parts[1];var
handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]|
|
jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else
if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3|
|elem.nodeType==8)return;var
events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||
(typeof types=="string"&&types.charAt(0)=="."))for(var type in
events)this.remove(elem,type+(types|
|""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var
parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete
events[type][handler.guid];else
-for(handler in events[type])if(!parts[1]||
events[type][handler].type==parts[1])delete events[type][handler];for(ret
in events[type])break;if(!ret){if(!jQuery.event.special[type]||
jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else
if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete
events[type];}}});}for(ret in events)break;if(!ret){var
handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var
exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3|
|elem.nodeType==8)return undefined;var
val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]|
|!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var
handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn|
|
(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return
val;},handle:function(event){var
val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||
window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")|
|{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||
handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return
val;},fix:function(event){if(event[expando]==true)return event;var
originalEvent=event;event={originalEvent:originalEvent};var props="altKey
attrChange attrName bubbles button cancelable charCode clientX clientY
ctrlKey currentTarget data detail eventPhase fromElement handler keyCode
metaKey newValue originalTarget pageX pageY prevValue relatedNode
relatedTarget screenX screenY shiftKey srcElement target timeStamp
toElement type view wheelDelta which".split(" ");for(var
i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp|
|now();if(!event.target)event.target=event.srcElement||
document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var
doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft|
|body&&body.scrollLeft||0)-(doc.clientLeft||
0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||
0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||
event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode|
|
event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return
event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||
this.guid++;return
proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return
false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return
true;},teardown:function(){if(jQuery.browser.msie)return
false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return
true;},handler:function(event){if(withinElement(event,this))return
true;event.type="mouseenter";return
jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return
false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return
true;},teardown:function(){if(jQuery.browser.msie)return
false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return
true;},handler:function(event){if(withinElement(event,this))return
true;event.type="mouseleave";return
jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return
type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn|
|data,fn&&data);});},one:function(type,data,fn){var
one=jQuery.event.proxy(fn||
data,function(event){jQuery(this).unbind(event,one);return(fn||
data).apply(this,arguments);});return
this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return
this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return
this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return
this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var
args=arguments,i=1;while(i<args.length)jQuery.event.proxy(fn,args[i++]);return
this.click(jQuery.event.proxy(fn,function(event){this.lastToggle=(this.lastToggle|
|0)%i;event.preventDefault();return
args[this.lastToggle++].apply(this,arguments)||
false;}));},hover:function(fnOver,fnOut){return
this.bind('mouseenter',fnOver).bind('mouseleave',fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)fn.call(document,jQuery);else
-jQuery.readyList.push(function(){return fn.call(this,jQuery);});return
this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.call(document);});jQuery.readyList=null;}jQuery(document).triggerHandler("ready");}}});var
readyBound=false;function
bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener&&!jQuery.browser.opera)document.addEventListener("DOMContentLoaded",jQuery.ready,false);if(jQuery.browser.msie&&window==top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}jQuery.ready();})();if(jQuery.browser.opera)document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady)return;for(var
i=0;i<document.styleSheets.length;i++)if(document.styleSheets[i].disabled){setTimeout(arguments.callee,0);return;}jQuery.ready();},false);if(jQuery.browser.safari){var
numStyles;(function(){if(jQuery.isReady)return;if(document.readyState!="loaded"&&document.readyState!="complete"){setTimeout(arguments.callee,0);return;}if(numStyles===undefined)numStyles=jQuery("style,
link[rel=stylesheet]").length;if(document.styleSheets.length!=numStyles){setTimeout(arguments.callee,0);return;}jQuery.ready();})();}jQuery.event.add(window,"load",jQuery.ready);}jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"+"mousedown,mouseup,mousemove,mouseover,mouseout,change,select,"+"submit,keydown,keypress,keyup,error").split(","),function(i,name){jQuery.fn[name]=function(fn){return
fn?this.bind(name,fn):this.trigger(name);};});var
withinElement=function(event,elem){var
parent=event.relatedTarget;while(parent&&parent!=elem)try{parent=parent.parentNode;}catch(error){parent=elem;}return
parent==elem;};jQuery(window).bind("unload",function(){jQuery("*").add(document).unbind();});jQuery.fn.extend({_load:jQuery.fn.load,load:function(url,params,callback){if(typeof
url!='string')return this._load(url);var
off=url.indexOf(" ");if(off>=0){var
selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||
function(){};var
type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var
self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"|
|
status=="notmodified")self.html(selector?jQuery("<div/>").append(res.responseText.replace(/<script(.|
\s)*?\/script>/g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return
this;},serialize:function(){return
jQuery.param(this.serializeArray());},serializeArray:function(){return
this.map(function(){return
jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return
this.name&&!this.disabled&&(this.checked||/select|
textarea/i.test(this.nodeName)||/text|hidden|
password/i.test(this.type));}).map(function(i,elem){var
val=jQuery(this).val();return
val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return
this.bind(o,f);};});var
jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return
jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return
jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return
jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return
jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml,
text/xml",html:"text/html",script:"text/javascript,
application/javascript",json:"application/json,
text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var
jsonp,jsre=/=\?(&|
$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof
s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp|
|"callback")+"=?";}else if(!s.data|
|!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp|
|"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)|
|
s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete
window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var
ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|
$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var
remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var
head=document.getElementsByTagName("head")[0];var
script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var
done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState|
|this.readyState=="loaded"||
this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return
undefined;}var requestDone=false;var xhr=window.ActiveXObject?new
ActiveXObject("Microsoft.XMLHTTP"):new
XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else
-xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]|
|"Thu,
01 Jan 1970 00:00:00
GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+",
*/*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return
false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var
onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4|
|
isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"|
|!jQuery.httpSuccess(xhr)&&"error"||
s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"|
|"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var
modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else
-jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var
ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function
success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function
complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return
xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"|
|
(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||
jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return
false;},httpNotModified:function(xhr,url){try{var
xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||
xhrRes==jQuery.lastModified[url]||
jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return
false;},httpData:function(xhr,type,filter){var
ct=xhr.getResponseHeader("content-type"),xml=type=="xml"|
|!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return
data;},param:function(a){var s=[];if(a.constructor==Array||
a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else
-for(var j in
a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else
-s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return
s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return
speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock|
|"";if(jQuery.css(this,"display")=="none"){var
elem=jQuery("<"+this.tagName+"
/>").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return
speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock|
|
jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return
jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return
this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return
this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return
this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return
this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return
this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return
this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var
optall=jQuery.speed(speed,easing,callback);return
this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return
false;var
opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p
in
prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return
opt.complete.call(this);if(p=="height"||
p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var
e=new jQuery.fx(self,opt,name);if(/toggle|show|
hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var
parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||
0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]|
|"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||
1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else
-e.custom(start,val,"");}});return
true;});},queue:function(type,fn){if(jQuery.isFunction(type)||
(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof
type=="string"&&!fn))return queue(this[0],type);return
this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var
timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var
i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return
this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var
q=jQuery.data(elem,type+"queue");if(!q||
array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return
q;};jQuery.fn.dequeue=function(type){type=type||"fx";return
this.each(function(){var
q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var
opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||
jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||
easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])|
|
jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return
opt;},easing:{linear:function(p,n,firstNum,diff){return
firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]|
|jQuery.fx.step._default)(this);if(this.prop=="height"||
this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return
this.elem[this.prop];var
r=parseFloat(jQuery.css(this.elem,this.prop,force));return
r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||
0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit|
|this.unit|
|"px";this.now=this.start;this.pos=this.state=0;this.update();var
self=this;function t(gotoEnd){return
self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var
timers=jQuery.timers;for(var
i=0;i<timers.length;i++)if(!timers[i]())timers.splice(i--,1);if(!timers.length){clearInterval(jQuery.timerId);jQuery.timerId=null;}},13);}},show:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.show=true;this.custom(0,this.cur());if(this.prop=="width"|
|
this.prop=="height")this.elem.style[this.prop]="1px";jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0);},step:function(gotoEnd){var
t=now();if(gotoEnd||
t>this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var
done=true;for(var i in
this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide|
|this.options.show)for(var p in
this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return
false;}else{var
n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing|
|
(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return
true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var
left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var
parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var
box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|
d|h)$/i.test(offsetParent.tagName)||
safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|
html$/i.test(parent.tagName)){if(!/^inline|
table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed|
|css(offsetChild,"position")=="absolute"))||
(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function
border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function
add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return
results;};jQuery.fn.extend({position:function(){var
left=0,top=0,results;if(this[0]){var
offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|
html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return
results;},offsetParent:function(){var
offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|
html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return
jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var
method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return
val!=undefined?this.each(function(){this==window||
this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window|
|this[0]==document?self[i?'pageYOffset':'pageXOffset']||
jQuery.boxModel&&document.documentElement[method]||
document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var
tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return
this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return
this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})();
+(function( window, undefined ) {
+
+// Define a local copy of jQuery
+var jQuery = function( selector, context ) {
+ // The jQuery object is actually just the init constructor 'enhanced'
+ return new jQuery.fn.init( selector, context );
+ },
+
+ // Map over jQuery in case of overwrite
+ _jQuery = window.jQuery,
+
+ // Map over the $ in case of overwrite
+ _$ = window.$,
+
+ // Use the correct document accordingly with window argument (sandbox)
+ document = window.document,
+
+ // A central reference to the root jQuery(document)
+ rootjQuery,
+
+ // A simple way to check for HTML strings or ID strings
+ // (both of which we optimize for)
+ quickExpr = /^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,
+
+ // Is it a simple selector
+ isSimple = /^.[^:#\[\.,]*$/,
+
+ // Check if a string has a non-whitespace character in it
+ rnotwhite = /\S/,
+
+ // Used for trimming whitespace
+ rtrim = /^(\s|\u00A0)+|(\s|\u00A0)+$/g,
+
+ // Match a standalone tag
+ rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
+
+ // Keep a UserAgent string for use with jQuery.browser
+ userAgent = navigator.userAgent,
+
+ // For matching the engine and version of the browser
+ browserMatch,
+
+ // Has the ready events already been bound?
+ readyBound = false,
+
+ // The functions to execute on DOM ready
+ readyList = [],
+
+ // The ready event handler
+ DOMContentLoaded,
+
+ // Save a reference to some core methods
+ toString = Object.prototype.toString,
+ hasOwnProperty = Object.prototype.hasOwnProperty,
+ push = Array.prototype.push,
+ slice = Array.prototype.slice,
+ indexOf = Array.prototype.indexOf;
+
+jQuery.fn = jQuery.prototype = {
+ init: function( selector, context ) {
+ var match, elem, ret, doc;
+
+ // Handle $(""), $(null), or $(undefined)
+ if ( !selector ) {
+ return this;
+ }
+
+ // Handle $(DOMElement)
+ if ( selector.nodeType ) {
+ this.context = this[0] = selector;
+ this.length = 1;
+ return this;
+ }
+
+ // The body element only exists once, optimize finding it
+ if ( selector === "body" && !context ) {
+ this.context = document;
+ this[0] = document.body;
+ this.selector = "body";
+ this.length = 1;
+ return this;
+ }
+
+ // Handle HTML strings
+ if ( typeof selector === "string" ) {
+ // Are we dealing with HTML string or an ID?
+ match = quickExpr.exec( selector );
+
+ // Verify a match, and that no context was specified for #id
+ if ( match && (match[1] || !context) ) {
+
+ // HANDLE: $(html) -> $(array)
+ if ( match[1] ) {
+ doc = (context ? context.ownerDocument || context : document);
+
+ // If a single string is passed in and it's a single tag
+ // just do a createElement and skip the rest
+ ret = rsingleTag.exec( selector );
+
+ if ( ret ) {
+ if ( jQuery.isPlainObject( context ) ) {
+ selector = [ document.createElement( ret[1] ) ];
+ jQuery.fn.attr.call( selector, context, true );
+
+ } else {
+ selector = [ doc.createElement( ret[1] ) ];
+ }
+
+ } else {
+ ret = buildFragment( [ match[1] ], [ doc ] );
+ selector = (ret.cacheable ? ret.fragment.cloneNode(true) :
ret.fragment).childNodes;
+ }
+
+ return jQuery.merge( this, selector );
+
+ // HANDLE: $("#id")
+ } else {
+ elem = document.getElementById( match[2] );
+
+ if ( elem ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id !== match[2] ) {
+ return rootjQuery.find( selector );
+ }
+
+ // Otherwise, we inject the element directly into the jQuery object
+ this.length = 1;
+ this[0] = elem;
+ }
+
+ this.context = document;
+ this.selector = selector;
+ return this;
+ }
+
+ // HANDLE: $("TAG")
+ } else if ( !context && /^\w+$/.test( selector ) ) {
+ this.selector = selector;
+ this.context = document;
+ selector = document.getElementsByTagName( selector );
+ return jQuery.merge( this, selector );
+
+ // HANDLE: $(expr, $(...))
+ } else if ( !context || context.jquery ) {
+ return (context || rootjQuery).find( selector );
+
+ // HANDLE: $(expr, context)
+ // (which is just equivalent to: $(context).find(expr)
+ } else {
+ return jQuery( context ).find( selector );
+ }
+
+ // HANDLE: $(function)
+ // Shortcut for document ready
+ } else if ( jQuery.isFunction( selector ) ) {
+ return rootjQuery.ready( selector );
+ }
+
+ if (selector.selector !== undefined) {
+ this.selector = selector.selector;
+ this.context = selector.context;
+ }
+
+ return jQuery.makeArray( selector, this );
+ },
+
+ // Start with an empty selector
+ selector: "",
+
+ // The current version of jQuery being used
+ jquery: "1.4.2",
+
+ // The default length of a jQuery object is 0
+ length: 0,
+
+ // The number of elements contained in the matched element set
+ size: function() {
+ return this.length;
+ },
+
+ toArray: function() {
+ return slice.call( this, 0 );
+ },
+
+ // Get the Nth element in the matched element set OR
+ // Get the whole matched element set as a clean array
+ get: function( num ) {
+ return num == null ?
+
+ // Return a 'clean' array
+ this.toArray() :
+
+ // Return just the object
+ ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );
+ },
+
+ // Take an array of elements and push it onto the stack
+ // (returning the new matched element set)
+ pushStack: function( elems, name, selector ) {
+ // Build a new jQuery matched element set
+ var ret = jQuery();
+
+ if ( jQuery.isArray( elems ) ) {
+ push.apply( ret, elems );
+
+ } else {
+ jQuery.merge( ret, elems );
+ }
+
+ // Add the old object onto the stack (as a reference)
+ ret.prevObject = this;
+
+ ret.context = this.context;
+
+ if ( name === "find" ) {
+ ret.selector = this.selector + (this.selector ? " " : "") + selector;
+ } else if ( name ) {
+ ret.selector = this.selector + "." + name + "(" + selector + ")";
+ }
+
+ // Return the newly-formed element set
+ return ret;
+ },
+
+ // Execute a callback for every element in the matched set.
+ // (You can seed the arguments with an array of args, but this is
+ // only used internally.)
+ each: function( callback, args ) {
+ return jQuery.each( this, callback, args );
+ },
+
+ ready: function( fn ) {
+ // Attach the listeners
+ jQuery.bindReady();
+
+ // If the DOM is already ready
+ if ( jQuery.isReady ) {
+ // Execute the function immediately
+ fn.call( document, jQuery );
+
+ // Otherwise, remember the function for later
+ } else if ( readyList ) {
+ // Add the function to the wait list
+ readyList.push( fn );
+ }
+
+ return this;
+ },
+
+ eq: function( i ) {
+ return i === -1 ?
+ this.slice( i ) :
+ this.slice( i, +i + 1 );
+ },
+
+ first: function() {
+ return this.eq( 0 );
+ },
+
+ last: function() {
+ return this.eq( -1 );
+ },
+
+ slice: function() {
+ return this.pushStack( slice.apply( this, arguments ),
+ "slice", slice.call(arguments).join(",") );
+ },
+
+ map: function( callback ) {
+ return this.pushStack( jQuery.map(this, function( elem, i ) {
+ return callback.call( elem, i, elem );
+ }));
+ },
+
+ end: function() {
+ return this.prevObject || jQuery(null);
+ },
+
+ // For internal use only.
+ // Behaves like an Array's method, not like a jQuery method.
+ push: push,
+ sort: [].sort,
+ splice: [].splice
+};
+
+// Give the init function the jQuery prototype for later instantiation
+jQuery.fn.init.prototype = jQuery.fn;
+
+jQuery.extend = jQuery.fn.extend = function() {
+ // copy reference to target object
+ var target = arguments[0] || {}, i = 1, length = arguments.length, deep =
false, options, name, src, copy;
+
+ // Handle a deep copy situation
+ if ( typeof target === "boolean" ) {
+ deep = target;
+ target = arguments[1] || {};
+ // skip the boolean and the target
+ i = 2;
+ }
+
+ // Handle case when target is a string or something (possible in deep
copy)
+ if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
+ target = {};
+ }
+
+ // extend jQuery itself if only one argument is passed
+ if ( length === i ) {
+ target = this;
+ --i;
+ }
+
+ for ( ; i < length; i++ ) {
+ // Only deal with non-null/undefined values
+ if ( (options = arguments[ i ]) != null ) {
+ // Extend the base object
+ for ( name in options ) {
+ src = target[ name ];
+ copy = options[ name ];
+
+ // Prevent never-ending loop
+ if ( target === copy ) {
+ continue;
+ }
+
+ // Recurse if we're merging object literal values or arrays
+ if ( deep && copy && ( jQuery.isPlainObject(copy) ||
jQuery.isArray(copy) ) ) {
+ var clone = src && ( jQuery.isPlainObject(src) || jQuery.isArray(src)
) ? src
+ : jQuery.isArray(copy) ? [] : {};
+
+ // Never move original objects, clone them
+ target[ name ] = jQuery.extend( deep, clone, copy );
+
+ // Don't bring in undefined values
+ } else if ( copy !== undefined ) {
+ target[ name ] = copy;
+ }
+ }
+ }
+ }
+
+ // Return the modified object
+ return target;
+};
+
+jQuery.extend({
+ noConflict: function( deep ) {
+ window.$ = _$;
+
+ if ( deep ) {
+ window.jQuery = _jQuery;
+ }
+
+ return jQuery;
+ },
+
+ // Is the DOM ready to be used? Set to true once it occurs.
+ isReady: false,
+
+ // Handle when the DOM is ready
+ ready: function() {
+ // Make sure that the DOM is not already loaded
+ if ( !jQuery.isReady ) {
+ // Make sure body exists, at least, in case IE gets a little
overzealous (ticket #5443).
+ if ( !document.body ) {
+ return setTimeout( jQuery.ready, 13 );
+ }
+
+ // Remember that the DOM is ready
+ jQuery.isReady = true;
+
+ // If there are functions bound, to execute
+ if ( readyList ) {
+ // Execute all of them
+ var fn, i = 0;
+ while ( (fn = readyList[ i++ ]) ) {
+ fn.call( document, jQuery );
+ }
+
+ // Reset the list of functions
+ readyList = null;
+ }
+
+ // Trigger any bound ready events
+ if ( jQuery.fn.triggerHandler ) {
+ jQuery( document ).triggerHandler( "ready" );
+ }
+ }
+ },
+
+ bindReady: function() {
+ if ( readyBound ) {
+ return;
+ }
+
+ readyBound = true;
+
+ // Catch cases where $(document).ready() is called after the
+ // browser event has already occurred.
+ if ( document.readyState === "complete" ) {
+ return jQuery.ready();
+ }
+
+ // Mozilla, Opera and webkit nightlies currently support this event
+ if ( document.addEventListener ) {
+ // Use the handy event callback
+ document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false
);
+
+ // A fallback to window.onload, that will always work
+ window.addEventListener( "load", jQuery.ready, false );
+
+ // If IE event model is used
+ } else if ( document.attachEvent ) {
+ // ensure firing before onload,
+ // maybe late but safe also for iframes
+ document.attachEvent("onreadystatechange", DOMContentLoaded);
+
+ // A fallback to window.onload, that will always work
+ window.attachEvent( "onload", jQuery.ready );
+
+ // If IE and not a frame
+ // continually check to see if the document is ready
+ var toplevel = false;
+
+ try {
+ toplevel = window.frameElement == null;
+ } catch(e) {}
+
+ if ( document.documentElement.doScroll && toplevel ) {
+ doScrollCheck();
+ }
+ }
+ },
+
+ // See test/unit/core.js for details concerning isFunction.
+ // Since version 1.3, DOM methods and functions like alert
+ // aren't supported. They return false on IE (#2968).
+ isFunction: function( obj ) {
+ return toString.call(obj) === "[object Function]";
+ },
+
+ isArray: function( obj ) {
+ return toString.call(obj) === "[object Array]";
+ },
+
+ isPlainObject: function( obj ) {
+ // Must be an Object.
+ // Because of IE, we also have to check the presence of the constructor
property.
+ // Make sure that DOM nodes and window objects don't pass through, as
well
+ if ( !obj || toString.call(obj) !== "[object Object]" || obj.nodeType ||
obj.setInterval ) {
+ return false;
+ }
+
+ // Not own constructor property must be Object
+ if ( obj.constructor
+ && !hasOwnProperty.call(obj, "constructor")
+ && !hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf") ) {
+ return false;
+ }
+
+ // Own properties are enumerated firstly, so to speed up,
+ // if last one is own, then all properties are own.
+
+ var key;
+ for ( key in obj ) {}
+
+ return key === undefined || hasOwnProperty.call( obj, key );
+ },
+
+ isEmptyObject: function( obj ) {
+ for ( var name in obj ) {
+ return false;
+ }
+ return true;
+ },
+
+ error: function( msg ) {
+ throw msg;
+ },
+
+ parseJSON: function( data ) {
+ if ( typeof data !== "string" || !data ) {
+ return null;
+ }
+
+ // Make sure leading/trailing whitespace is removed (IE can't handle it)
+ data = jQuery.trim( data );
+
+ // Make sure the incoming data is actual JSON
+ // Logic borrowed from http://json.org/json2.js
+ if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|
u[0-9a-fA-F]{4})/g, "@")
+ .replace(/"[^"\\\n\r]*"|true|false|null|
-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
+ .replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) {
+
+ // Try to use the native JSON parser first
+ return window.JSON && window.JSON.parse ?
+ window.JSON.parse( data ) :
+ (new Function("return " + data))();
+
+ } else {
+ jQuery.error( "Invalid JSON: " + data );
+ }
+ },
+
+ noop: function() {},
+
+ // Evalulates a script in a global context
+ globalEval: function( data ) {
+ if ( data && rnotwhite.test(data) ) {
+ // Inspired by code by Andrea Giammarchi
+ //
http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
+ var head = document.getElementsByTagName("head")[0] ||
document.documentElement,
+ script = document.createElement("script");
+
+ script.type = "text/javascript";
+
+ if ( jQuery.support.scriptEval ) {
+ script.appendChild( document.createTextNode( data ) );
+ } else {
+ script.text = data;
+ }
+
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709).
+ head.insertBefore( script, head.firstChild );
+ head.removeChild( script );
+ }
+ },
+
+ nodeName: function( elem, name ) {
+ return elem.nodeName && elem.nodeName.toUpperCase() ===
name.toUpperCase();
+ },
+
+ // args is for internal usage only
+ each: function( object, callback, args ) {
+ var name, i = 0,
+ length = object.length,
+ isObj = length === undefined || jQuery.isFunction(object);
+
+ if ( args ) {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.apply( object[ name ], args ) === false ) {
+ break;
+ }
+ }
+ } else {
+ for ( ; i < length; ) {
+ if ( callback.apply( object[ i++ ], args ) === false ) {
+ break;
+ }
+ }
+ }
+
+ // A special, fast, case for the most common use of each
+ } else {
+ if ( isObj ) {
+ for ( name in object ) {
+ if ( callback.call( object[ name ], name, object[ name ] ) === false
) {
+ break;
+ }
+ }
+ } else {
+ for ( var value = object[0];
+ i < length && callback.call( value, i, value ) !== false; value =
object[++i] ) {}
+ }
+ }
+
+ return object;
+ },
+
+ trim: function( text ) {
+ return (text || "").replace( rtrim, "" );
+ },
+
+ // results is for internal usage only
+ makeArray: function( array, results ) {
+ var ret = results || [];
+
+ if ( array != null ) {
+ // The window, strings (and functions) also have 'length'
+ // The extra typeof function check is to prevent crashes
+ // in Safari 2 (See: #3039)
+ if ( array.length == null || typeof array === "string" ||
jQuery.isFunction(array) || (typeof array !== "function" &&
array.setInterval) ) {
+ push.call( ret, array );
+ } else {
+ jQuery.merge( ret, array );
+ }
+ }
+
+ return ret;
+ },
+
+ inArray: function( elem, array ) {
+ if ( array.indexOf ) {
+ return array.indexOf( elem );
+ }
+
+ for ( var i = 0, length = array.length; i < length; i++ ) {
+ if ( array[ i ] === elem ) {
+ return i;
+ }
+ }
+
+ return -1;
+ },
+
+ merge: function( first, second ) {
+ var i = first.length, j = 0;
+
+ if ( typeof second.length === "number" ) {
+ for ( var l = second.length; j < l; j++ ) {
+ first[ i++ ] = second[ j ];
+ }
+
+ } else {
+ while ( second[j] !== undefined ) {
+ first[ i++ ] = second[ j++ ];
+ }
+ }
+
+ first.length = i;
+
+ return first;
+ },
+
+ grep: function( elems, callback, inv ) {
+ var ret = [];
+
+ // Go through the array, only saving the items
+ // that pass the validator function
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ if ( !inv !== !callback( elems[ i ], i ) ) {
+ ret.push( elems[ i ] );
+ }
+ }
+
+ return ret;
+ },
+
+ // arg is for internal usage only
+ map: function( elems, callback, arg ) {
+ var ret = [], value;
+
+ // Go through the array, translating each of the items to their
+ // new value (or values).
+ for ( var i = 0, length = elems.length; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+
+ return ret.concat.apply( [], ret );
+ },
+
+ // A global GUID counter for objects
+ guid: 1,
+
+ proxy: function( fn, proxy, thisObject ) {
+ if ( arguments.length === 2 ) {
+ if ( typeof proxy === "string" ) {
+ thisObject = fn;
+ fn = thisObject[ proxy ];
+ proxy = undefined;
+
+ } else if ( proxy && !jQuery.isFunction( proxy ) ) {
+ thisObject = proxy;
+ proxy = undefined;
+ }
+ }
+
+ if ( !proxy && fn ) {
+ proxy = function() {
+ return fn.apply( thisObject || this, arguments );
+ };
+ }
+
+ // Set the guid of unique handler to the same of original handler, so it
can be removed
+ if ( fn ) {
+ proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
+ }
+
+ // So proxy can be declared as an argument
+ return proxy;
+ },
+
+ // Use of jQuery.browser is frowned upon.
+ // More details: http://docs.jquery.com/Utilities/jQuery.browser
+ uaMatch: function( ua ) {
+ ua = ua.toLowerCase();
+
+ var match = /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
+ /(opera)(?:.*version)?[ \/]([\w.]+)/.exec( ua ) ||
+ /(msie) ([\w.]+)/.exec( ua ) ||
+ !/compatible/.test( ua ) && /(mozilla)(?:.*? rv:([\w.]+))?/.exec( ua ) |
|
+ [];
+
+ return { browser: match[1] || "", version: match[2] || "0" };
+ },
+
+ browser: {}
+});
+
+browserMatch = jQuery.uaMatch( userAgent );
+if ( browserMatch.browser ) {
+ jQuery.browser[ browserMatch.browser ] = true;
+ jQuery.browser.version = browserMatch.version;
+}
+
+// Deprecated, use jQuery.browser.webkit instead
+if ( jQuery.browser.webkit ) {
+ jQuery.browser.safari = true;
+}
+
+if ( indexOf ) {
+ jQuery.inArray = function( elem, array ) {
+ return indexOf.call( array, elem );
+ };
+}
+
+// All jQuery objects should point back to these
+rootjQuery = jQuery(document);
+
+// Cleanup functions for the document ready method
+if ( document.addEventListener ) {
+ DOMContentLoaded = function() {
+ document.removeEventListener( "DOMContentLoaded", DOMContentLoaded,
false );
+ jQuery.ready();
+ };
+
+} else if ( document.attachEvent ) {
+ DOMContentLoaded = function() {
+ // Make sure body exists, at least, in case IE gets a little overzealous
(ticket #5443).
+ if ( document.readyState === "complete" ) {
+ document.detachEvent( "onreadystatechange", DOMContentLoaded );
+ jQuery.ready();
+ }
+ };
+}
+
+// The DOM ready check for Internet Explorer
+function doScrollCheck() {
+ if ( jQuery.isReady ) {
+ return;
+ }
+
+ try {
+ // If IE is used, use the trick by Diego Perini
+ // http://javascript.nwbox.com/IEContentLoaded/
+ document.documentElement.doScroll("left");
+ } catch( error ) {
+ setTimeout( doScrollCheck, 1 );
+ return;
+ }
+
+ // and execute any waiting functions
+ jQuery.ready();
+}
+
+function evalScript( i, elem ) {
+ if ( elem.src ) {
+ jQuery.ajax({
+ url: elem.src,
+ async: false,
+ dataType: "script"
+ });
+ } else {
+ jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || ""
);
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+}
+
+// Mutifunctional method to get and set values to a collection
+// The value/s can be optionally by executed if its a function
+function access( elems, key, value, exec, fn, pass ) {
+ var length = elems.length;
+
+ // Setting many attributes
+ if ( typeof key === "object" ) {
+ for ( var k in key ) {
+ access( elems, k, key[k], exec, fn, value );
+ }
+ return elems;
+ }
+
+ // Setting one attribute
+ if ( value !== undefined ) {
+ // Optionally, function values get executed if exec is true
+ exec = !pass && exec && jQuery.isFunction(value);
+
+ for ( var i = 0; i < length; i++ ) {
+ fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key )
) : value, pass );
+ }
+
+ return elems;
+ }
+
+ // Getting an attribute
+ return length ? fn( elems[0], key ) : undefined;
+}
+
+function now() {
+ return (new Date).getTime();
+}
+(function() {
+
+ jQuery.support = {};
+
+ var root = document.documentElement,
+ script = document.createElement("script"),
+ div = document.createElement("div"),
+ id = "script" + now();
+
+ div.style.display = "none";
+ div.innerHTML = " <link/><table></table><a href='/a'
style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+
+ var all = div.getElementsByTagName("*"),
+ a = div.getElementsByTagName("a")[0];
+
+ // Can't get basic test support
+ if ( !all || !all.length || !a ) {
+ return;
+ }
+
+ jQuery.support = {
+ // IE strips leading whitespace when .innerHTML is used
+ leadingWhitespace: div.firstChild.nodeType === 3,
+
+ // Make sure that tbody elements aren't automatically inserted
+ // IE will insert them into empty tables
+ tbody: !div.getElementsByTagName("tbody").length,
+
+ // Make sure that link elements get serialized correctly by innerHTML
+ // This requires a wrapper element in IE
+ htmlSerialize: !!div.getElementsByTagName("link").length,
+
+ // Get the style information from getAttribute
+ // (IE uses .cssText insted)
+ style: /red/.test( a.getAttribute("style") ),
+
+ // Make sure that URLs aren't manipulated
+ // (IE normalizes it by default)
+ hrefNormalized: a.getAttribute("href") === "/a",
+
+ // Make sure that element opacity exists
+ // (IE uses filter instead)
+ // Use a regex to work around a WebKit issue. See #5145
+ opacity: /^0.55$/.test( a.style.opacity ),
+
+ // Verify style float existence
+ // (IE uses styleFloat instead of cssFloat)
+ cssFloat: !!a.style.cssFloat,
+
+ // Make sure that if no value is specified for a checkbox
+ // that it defaults to "on".
+ // (WebKit defaults to "" instead)
+ checkOn: div.getElementsByTagName("input")[0].value === "on",
+
+ // Make sure that a selected-by-default option has a working selected
property.
+ // (WebKit defaults to false instead of true, IE too, if it's in an
optgroup)
+ optSelected: document.createElement("select").appendChild(
document.createElement("option") ).selected,
+
+ parentNode: div.removeChild( div.appendChild(
document.createElement("div") ) ).parentNode === null,
+
+ // Will be defined later
+ deleteExpando: true,
+ checkClone: false,
+ scriptEval: false,
+ noCloneEvent: true,
+ boxModel: null
+ };
+
+ script.type = "text/javascript";
+ try {
+ script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
+ } catch(e) {}
+
+ root.insertBefore( script, root.firstChild );
+
+ // Make sure that the execution of code works by injecting a script
+ // tag with appendChild/createTextNode
+ // (IE doesn't support this, fails, and uses .text instead)
+ if ( window[ id ] ) {
+ jQuery.support.scriptEval = true;
+ delete window[ id ];
+ }
+
+ // Test to see if it's possible to delete an expando from an element
+ // Fails in Internet Explorer
+ try {
+ delete script.test;
+
+ } catch(e) {
+ jQuery.support.deleteExpando = false;
+ }
+
+ root.removeChild( script );
+
+ if ( div.attachEvent && div.fireEvent ) {
+ div.attachEvent("onclick", function click() {
+ // Cloning a node shouldn't copy over any
+ // bound event handlers (IE does this)
+ jQuery.support.noCloneEvent = false;
+ div.detachEvent("onclick", click);
+ });
+ div.cloneNode(true).fireEvent("onclick");
+ }
+
+ div = document.createElement("div");
+ div.innerHTML = "<input type='radio' name='radiotest'
checked='checked'/>";
+
+ var fragment = document.createDocumentFragment();
+ fragment.appendChild( div.firstChild );
+
+ // WebKit doesn't clone checked state correctly in fragments
+ jQuery.support.checkClone =
fragment.cloneNode(true).cloneNode(true).lastChild.checked;
+
+ // Figure out if the W3C box model works as expected
+ // document.body must exist before we can do this
+ jQuery(function() {
+ var div = document.createElement("div");
+ div.style.width = div.style.paddingLeft = "1px";
+
+ document.body.appendChild( div );
+ jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
+ document.body.removeChild( div ).style.display = 'none';
+
+ div = null;
+ });
+
+ // Technique from Juriy Zaytsev
+ //
http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
+ var eventSupported = function( eventName ) {
+ var el = document.createElement("div");
+ eventName = "on" + eventName;
+
+ var isSupported = (eventName in el);
+ if ( !isSupported ) {
+ el.setAttribute(eventName, "return;");
+ isSupported = typeof el[eventName] === "function";
+ }
+ el = null;
+
+ return isSupported;
+ };
+
+ jQuery.support.submitBubbles = eventSupported("submit");
+ jQuery.support.changeBubbles = eventSupported("change");
+
***The diff for this file has been truncated for email.***
=======================================
--- /doc/build/html/_static/searchtools.js Wed Jul 8 21:04:09 2009
+++ /doc/build/html/_static/searchtools.js Sun May 23 10:58:24 2010
@@ -341,9 +341,9 @@
}
for (var prefix in descrefs) {
for (var name in descrefs[prefix]) {
- if (name.toLowerCase().indexOf(object) > -1) {
+ var fullname = (prefix ? prefix + '.' : '') + name;
+ if (fullname.toLowerCase().indexOf(object) > -1) {
match = descrefs[prefix][name];
- fullname = (prefix ? prefix + '.' : '') + name;
descr = desctypes[match[1]] + _(', in ') + titles[match[0]];
objectResults.push([filenames[match[0]],
fullname, '#'+fullname, descr]);
}
=======================================
--- /doc/build/html/alcance.html Mon Jul 13 19:59:13 2009
+++ /doc/build/html/alcance.html Sun May 23 10:58:24 2010
@@ -10,7 +10,7 @@
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
+ URL_ROOT: '#',
VERSION: '0.1',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
@@ -67,8 +67,8 @@
<li>Tres niveles de juego <em>fácil</em>, <em>medio</em> y
<em>experto</em></li>
</ul>
</div>
-<div class="section" id="que-no-se-incluir">
-<h2>Que <em>No</em> se incluirá<a class="headerlink"
href="#que-no-se-incluir" title="Enlazar permanentemente con este
título">¶</a></h2>
+<div class="section" id="que-no-se-incluira">
+<h2>Que <em>No</em> se incluirá<a class="headerlink"
href="#que-no-se-incluira" title="Enlazar permanentemente con este
título">¶</a></h2>
<ul class="simple">
<li>Modo para dos jugadores o en red: el juego es para un solo
jugador.</li>
<li>Perfiles de usuario: el usuario ingresa su nombre solo al perder y
anotar un
@@ -89,9 +89,9 @@
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Contenidos</a></h3>
<ul>
-<li><a class="reference external" href="">Alcance del proyecto</a><ul>
+<li><a class="reference external" href="#">Alcance del proyecto</a><ul>
<li><a class="reference external" href="#lo-que-incluye">Lo que
incluye</a></li>
-<li><a class="reference external" href="#que-no-se-incluir">Que
<em>No</em> se incluirá</a></li>
+<li><a class="reference external" href="#que-no-se-incluira">Que
<em>No</em> se incluirá</a></li>
</ul>
</li>
</ul>
@@ -141,7 +141,7 @@
</div>
<div class="footer">
&copy; Copyright 2009, Losersjuegos.
- Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.1.
+ Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.5.
</div>
</body>
</html>
=======================================
--- /doc/build/html/diseno_etapa_1.html Sun Oct 18 17:31:18 2009
+++ /doc/build/html/diseno_etapa_1.html Sun May 23 10:58:24 2010
@@ -10,7 +10,7 @@
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
+ URL_ROOT: '#',
VERSION: '0.1',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
@@ -46,8 +46,8 @@
<div class="bodywrapper">
<div class="body">

- <div class="section" id="dise-o-de-la-etapa-1">
-<h1>Diseño de la etapa 1<a class="headerlink" href="#dise-o-de-la-etapa-1"
title="Enlazar permanentemente con este título">¶</a></h1>
+ <div class="section" id="diseno-de-la-etapa-1">
+<h1>Diseño de la etapa 1<a class="headerlink" href="#diseno-de-la-etapa-1"
title="Enlazar permanentemente con este título">¶</a></h1>
<p>Este documento explica parte de las decisiones e ideas que
definen la estructura del juego.</p>
<p>Puede usar el contenido de este texto para conocer de manera
@@ -167,8 +167,8 @@
en tiempo de ejecución solo habrá una escena activa (el objeto
Director solo sabe administrar una...)</p>
</div>
-<div class="section" id="el-director-no-sabe-de-que-v-la-pel-cula">
-<h2>El Director no sabe de que vá la película...<a class="headerlink"
href="#el-director-no-sabe-de-que-v-la-pel-cula" title="Enlazar
permanentemente con este título">¶</a></h2>
+<div class="section" id="el-director-no-sabe-de-que-va-la-pelicula">
+<h2>El Director no sabe de que vá la película...<a class="headerlink"
href="#el-director-no-sabe-de-que-va-la-pelicula" title="Enlazar
permanentemente con este título">¶</a></h2>
<p>El objeto director tampoco sabe con certeza en que etapa
del juego se encuentra el usuario, para el objeto Director
todas las scenas son iguales, solo le interesa llamar a los
@@ -193,12 +193,12 @@
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Contenidos</a></h3>
<ul>
-<li><a class="reference external" href="">Diseño de la etapa 1</a><ul>
+<li><a class="reference external" href="#">Diseño de la etapa 1</a><ul>
<li><a class="reference external"
href="#objetos-y-desacoplamiento">Objetos y desacoplamiento</a></li>
<li><a class="reference external" href="#objeto-principal-director">Objeto
principal: Director</a></li>
<li><a class="reference external"
href="#escenas-las-partes-de-un-juego">Escenas, las partes de un
juego</a></li>
<li><a class="reference external" href="#escenas-ampliando">Escenas,
ampliando</a></li>
-<li><a class="reference external"
href="#el-director-no-sabe-de-que-v-la-pel-cula">El Director no sabe de que
vá la película...</a></li>
+<li><a class="reference external"
href="#el-director-no-sabe-de-que-va-la-pelicula">El Director no sabe de
que vá la película...</a></li>
<li><a class="reference external" href="#diagrama-de-clases">Diagrama de
clases</a></li>
</ul>
</li>
@@ -249,7 +249,7 @@
</div>
<div class="footer">
&copy; Copyright 2009, Losersjuegos.
- Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.1.
+ Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.5.
</div>
</body>
</html>
=======================================
--- /doc/build/html/diseno_etapa_2.html Sun Oct 18 17:31:18 2009
+++ /doc/build/html/diseno_etapa_2.html Sun May 23 10:58:24 2010
@@ -10,7 +10,7 @@
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
+ URL_ROOT: '#',
VERSION: '0.1',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
@@ -46,8 +46,8 @@
<div class="bodywrapper">
<div class="body">

- <div class="section" id="dise-o-de-la-etapa-2">
-<h1>Diseño de la etapa 2<a class="headerlink" href="#dise-o-de-la-etapa-2"
title="Enlazar permanentemente con este título">¶</a></h1>
+ <div class="section" id="diseno-de-la-etapa-2">
+<h1>Diseño de la etapa 2<a class="headerlink" href="#diseno-de-la-etapa-2"
title="Enlazar permanentemente con este título">¶</a></h1>
<p>En esta etapa se comienza a definir el modelo de las piezas, como
se representan en pantalla y cómo es su lógica.</p>
<div class="section" id="objetivos-de-la-etapa">
@@ -94,8 +94,8 @@
las piezas que tocan el suelo y el usuario ya no puede mover.</p>
</div>
</div>
-<div class="section" id="interacci-n-entre-piece-y-board">
-<h2>Interacción entre Piece y Board<a class="headerlink"
href="#interacci-n-entre-piece-y-board" title="Enlazar permanentemente con
este título">¶</a></h2>
+<div class="section" id="interaccion-entre-piece-y-board">
+<h2>Interacción entre Piece y Board<a class="headerlink"
href="#interaccion-entre-piece-y-board" title="Enlazar permanentemente con
este título">¶</a></h2>
<p>El objeto <em>Piece</em> responde a las ordenes del usuario, pero a la
vez
tiene que prohibir movimientos incorrectos, ya sea porque salen
de la pantalla o porque existe una colisión con otra pieza.</p>
@@ -103,8 +103,8 @@
momento al objeto <em>Board</em>, y a su vez, <em>Board</em> inspecciona
en su
modelo de matriz si tiene lugar para situar la pieza.</p>
</div>
-<div class="section" id="inicializaci-n-de-piezas">
-<h2>Inicialización de piezas<a class="headerlink"
href="#inicializaci-n-de-piezas" title="Enlazar permanentemente con este
título">¶</a></h2>
+<div class="section" id="inicializacion-de-piezas">
+<h2>Inicialización de piezas<a class="headerlink"
href="#inicializacion-de-piezas" title="Enlazar permanentemente con este
título">¶</a></h2>
<p>Cada pieza tiene una forma que está compuesta por bloques que
colisionan, y otros que no.</p>
<p>La forma de estas piezas se encuentra en archivos separados, uno
@@ -141,15 +141,15 @@
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Contenidos</a></h3>
<ul>
-<li><a class="reference external" href="">Diseño de la etapa 2</a><ul>
+<li><a class="reference external" href="#">Diseño de la etapa 2</a><ul>
<li><a class="reference external" href="#objetivos-de-la-etapa">Objetivos
de la etapa</a></li>
<li><a class="reference external" href="#objetos">Objetos</a><ul>
<li><a class="reference external" href="#piece">Piece</a></li>
<li><a class="reference external" href="#board">Board</a></li>
</ul>
</li>
-<li><a class="reference external"
href="#interacci-n-entre-piece-y-board">Interacción entre Piece y
Board</a></li>
-<li><a class="reference external"
href="#inicializaci-n-de-piezas">Inicialización de piezas</a></li>
+<li><a class="reference external"
href="#interaccion-entre-piece-y-board">Interacción entre Piece y
Board</a></li>
+<li><a class="reference external"
href="#inicializacion-de-piezas">Inicialización de piezas</a></li>
</ul>
</li>
</ul>
@@ -199,7 +199,7 @@
</div>
<div class="footer">
&copy; Copyright 2009, Losersjuegos.
- Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.1.
+ Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.5.
</div>
</body>
</html>
=======================================
--- /doc/build/html/diseno_etapa_3.html Sun Oct 18 17:31:18 2009
+++ /doc/build/html/diseno_etapa_3.html Sun May 23 10:58:24 2010
@@ -10,7 +10,7 @@
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
+ URL_ROOT: '#',
VERSION: '0.1',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
@@ -46,8 +46,8 @@
<div class="bodywrapper">
<div class="body">

- <div class="section" id="dise-o-de-la-etapa-3">
-<h1>Diseño de la etapa 3<a class="headerlink" href="#dise-o-de-la-etapa-3"
title="Enlazar permanentemente con este título">¶</a></h1>
+ <div class="section" id="diseno-de-la-etapa-3">
+<h1>Diseño de la etapa 3<a class="headerlink" href="#diseno-de-la-etapa-3"
title="Enlazar permanentemente con este título">¶</a></h1>
<p>Esta etapa tiene 2 grandes cambios, se generan las piezas restantes
y se implementa la colisión entre las piezas que han tocado el suelo
y la que controla el usuario.</p>
@@ -106,7 +106,7 @@
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Contenidos</a></h3>
<ul>
-<li><a class="reference external" href="">Diseño de la etapa 3</a><ul>
+<li><a class="reference external" href="#">Diseño de la etapa 3</a><ul>
<li><a class="reference external" href="#nuevas-piezas">Nuevas
piezas</a></li>
<li><a class="reference external"
href="#colisiones-entre-piezas">Colisiones entre piezas</a></li>
<li><a class="reference external"
href="#aspecto-visual-del-tablero">Aspecto visual del tablero</a></li>
@@ -159,7 +159,7 @@
</div>
<div class="footer">
&copy; Copyright 2009, Losersjuegos.
- Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.1.
+ Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.5.
</div>
</body>
</html>
=======================================
--- /doc/build/html/diseno_etapa_4.html Sun Oct 18 17:31:18 2009
+++ /doc/build/html/diseno_etapa_4.html Sun May 23 10:58:24 2010
@@ -10,7 +10,7 @@
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
+ URL_ROOT: '#',
VERSION: '0.1',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
@@ -46,8 +46,8 @@
<div class="bodywrapper">
<div class="body">

- <div class="section" id="dise-o-de-la-etapa-4">
-<h1>Diseño de la etapa 4<a class="headerlink" href="#dise-o-de-la-etapa-4"
title="Enlazar permanentemente con este título">¶</a></h1>
+ <div class="section" id="diseno-de-la-etapa-4">
+<h1>Diseño de la etapa 4<a class="headerlink" href="#diseno-de-la-etapa-4"
title="Enlazar permanentemente con este título">¶</a></h1>
<p class="sdedit">
<a
href="_images/thumbnail/sdedit-5c710cac00ee7367370513dfc00c6e06aad3aa2f.png"><img
src="_images/sdedit-5c710cac00ee7367370513dfc00c6e06aad3aa2f.png"
alt="actor:Actor
sphinx:Sphinx[a]
@@ -82,7 +82,7 @@
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Contenidos</a></h3>
<ul>
-<li><a class="reference external" href="">Diseño de la etapa 4</a><ul>
+<li><a class="reference external" href="#">Diseño de la etapa 4</a><ul>
<li><a class="reference external" href="#velocidad-de-juego">Velocidad de
juego</a></li>
</ul>
</li>
@@ -133,7 +133,7 @@
</div>
<div class="footer">
&copy; Copyright 2009, Losersjuegos.
- Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.1.
+ Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.5.
</div>
</body>
</html>
=======================================
--- /doc/build/html/diseno_etapa_5.html Thu Sep 17 04:03:39 2009
+++ /doc/build/html/diseno_etapa_5.html Sun May 23 10:58:24 2010
@@ -10,7 +10,7 @@
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
+ URL_ROOT: '#',
VERSION: '0.1',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
@@ -46,8 +46,8 @@
<div class="bodywrapper">
<div class="body">

- <div class="section" id="dise-o-de-la-etapa-5">
-<h1>Diseño de la etapa 5<a class="headerlink" href="#dise-o-de-la-etapa-5"
title="Enlazar permanentemente con este título">¶</a></h1>
+ <div class="section" id="diseno-de-la-etapa-5">
+<h1>Diseño de la etapa 5<a class="headerlink" href="#diseno-de-la-etapa-5"
title="Enlazar permanentemente con este título">¶</a></h1>
<div class="section" id="velocidad-del-juego">
<h2>Velocidad del juego<a class="headerlink" href="#velocidad-del-juego"
title="Enlazar permanentemente con este título">¶</a></h2>
<p>Cuando el usuario realiza 10 lineas buscamos que el juego aumente
@@ -60,7 +60,7 @@
lo que le diga la clase <cite>Display</cite>, que conoce cuantas lineas
del juego a realiza el usuario y en qué nivel se encuenta.</p>
<p>El nivel, es simplemente la parte decimal de la cantidad de lineas:</p>
-<div class="highlight-python"><div class="highlight"><pre><span
class="n">nivel</span> <span class="o">=</span> <span
class="n">lineas</span> <span class="o">/</span> <span class="mf">10</span>
+<div class="highlight-python"><div class="highlight"><pre><span
class="n">nivel</span> <span class="o">=</span> <span
class="n">lineas</span> <span class="o">/</span> <span class="mi">10</span>
</pre></div>
</div>
</div>
@@ -74,7 +74,7 @@
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Contenidos</a></h3>
<ul>
-<li><a class="reference external" href="">Diseño de la etapa 5</a><ul>
+<li><a class="reference external" href="#">Diseño de la etapa 5</a><ul>
<li><a class="reference external" href="#velocidad-del-juego">Velocidad
del juego</a></li>
</ul>
</li>
@@ -125,7 +125,7 @@
</div>
<div class="footer">
&copy; Copyright 2009, Losersjuegos.
- Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.1.
+ Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.5.
</div>
</body>
</html>
=======================================
--- /doc/build/html/documento_de_diseno.html Mon Jul 13 19:59:13 2009
+++ /doc/build/html/documento_de_diseno.html Sun May 23 10:58:24 2010
@@ -10,7 +10,7 @@
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
+ URL_ROOT: '#',
VERSION: '0.1',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
@@ -46,12 +46,12 @@
<div class="bodywrapper">
<div class="body">

- <div class="section" id="documento-de-dise-o">
-<h1>Documento de diseño<a class="headerlink" href="#documento-de-dise-o"
title="Enlazar permanentemente con este título">¶</a></h1>
+ <div class="section" id="documento-de-diseno">
+<h1>Documento de diseño<a class="headerlink" href="#documento-de-diseno"
title="Enlazar permanentemente con este título">¶</a></h1>
<p>El objetivo de este documento es definir brevemente en que consiste
el proyecto de videojuego <em>Asadetris</em> y cuales serán sus
funcionalidades.</p>
-<div class="section" id="introducci-n">
-<h2>Introducción<a class="headerlink" href="#introducci-n" title="Enlazar
permanentemente con este título">¶</a></h2>
+<div class="section" id="introduccion">
+<h2>Introducción<a class="headerlink" href="#introduccion" title="Enlazar
permanentemente con este título">¶</a></h2>
<p>Asadetris es un videojuego de habilidad similar a <em>Tetris</em>: El
jugador
debe acomodar figuras sobre un tablero para formar lineas
horizontales.</p>
@@ -151,8 +151,8 @@
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Contenidos</a></h3>
<ul>
-<li><a class="reference external" href="">Documento de diseño</a><ul>
-<li><a class="reference external"
href="#introducci-n">Introducción</a></li>
+<li><a class="reference external" href="#">Documento de diseño</a><ul>
+<li><a class="reference external"
href="#introduccion">Introducción</a></li>
<li><a class="reference external" href="#aspecto-visual">Aspecto
visual</a></li>
<li><a class="reference external" href="#escenas">Escenas</a></li>
<li><a class="reference external" href="#controles">Controles</a></li>
@@ -207,7 +207,7 @@
</div>
<div class="footer">
&copy; Copyright 2009, Losersjuegos.
- Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.1.
+ Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.5.
</div>
</body>
</html>
=======================================
--- /doc/build/html/estilo.html Mon Jul 20 16:51:47 2009
+++ /doc/build/html/estilo.html Sun May 23 10:58:24 2010
@@ -10,7 +10,7 @@
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
+ URL_ROOT: '#',
VERSION: '0.1',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
@@ -46,8 +46,8 @@
<div class="bodywrapper">
<div class="body">

- <div class="section" id="estilo-de-programaci-n">
-<h1>Estilo de programación<a class="headerlink"
href="#estilo-de-programaci-n" title="Enlazar permanentemente con este
título">¶</a></h1>
+ <div class="section" id="estilo-de-programacion">
+<h1>Estilo de programación<a class="headerlink"
href="#estilo-de-programacion" title="Enlazar permanentemente con este
título">¶</a></h1>
<p>Este documento define las convenciones de programación que
utilizamos para el proyecto. Esta guia no permiten
lograr código consistente, fácil de leer y uniforme.</p>
@@ -56,8 +56,8 @@
ver el documento que define por completo el estilo adoptado:</p>
<blockquote>
<a class="reference external"
href="http://mundogeek.net/traducciones/guia-estilo-python.htm">http://mundogeek.net/traducciones/guia-estilo-python.htm</a></blockquote>
-<div class="section" id="estructura-del-c-digo">
-<h2>Estructura del código<a class="headerlink"
href="#estructura-del-c-digo" title="Enlazar permanentemente con este
título">¶</a></h2>
+<div class="section" id="estructura-del-codigo">
+<h2>Estructura del código<a class="headerlink"
href="#estructura-del-codigo" title="Enlazar permanentemente con este
título">¶</a></h2>
<p>Es indispensable que el código en python esté identando de
la misma forma en todo el proyecto. Aquí utilizamos <strong>4
espacios</strong>
para definir cada bloque de código.</p>
@@ -78,8 +78,8 @@
los editores.</p>
</div>
</div>
-<div class="section" id="sistema-de-codificaci-n">
-<h2>Sistema de codificación<a class="headerlink"
href="#sistema-de-codificaci-n" title="Enlazar permanentemente con este
título">¶</a></h2>
+<div class="section" id="sistema-de-codificacion">
+<h2>Sistema de codificación<a class="headerlink"
href="#sistema-de-codificacion" title="Enlazar permanentemente con este
título">¶</a></h2>
<p>Utilizamos el sistema de codificación <em>UTF8</em>, esto nos permite
escribir
comentarios en español con mayor naturalidad.</p>
<p>Los archivos python creados en este proyecto comienzan con el
@@ -109,7 +109,7 @@
</pre></div>
</div>
<p>y entre operadores como por ejemplo:</p>
-<div class="highlight-python"><div class="highlight"><pre><span
class="n">size</span> <span class="o">=</span> <span
class="p">(</span><span class="mf">640</span><span class="p">,</span> <span
class="mf">480</span><span class="p">)</span>
+<div class="highlight-python"><div class="highlight"><pre><span
class="n">size</span> <span class="o">=</span> <span
class="p">(</span><span class="mi">640</span><span class="p">,</span> <span
class="mi">480</span><span class="p">)</span>
<span class="n">width</span><span class="p">,</span> <span
class="n">height</span> <span class="o">=</span> <span class="n">size</span>
<span class="n">screen</span> <span class="o">=</span> <span
class="n">create_display</span><span class="p">(</span><span
class="n">width</span><span class="p">,</span> <span
class="n">height</span><span class="p">)</span>

@@ -118,8 +118,8 @@
</pre></div>
</div>
</div>
-<div class="section" id="documentaci-n">
-<h2>Documentación<a class="headerlink" href="#documentaci-n"
title="Enlazar permanentemente con este título">¶</a></h2>
+<div class="section" id="documentacion">
+<h2>Documentación<a class="headerlink" href="#documentacion"
title="Enlazar permanentemente con este título">¶</a></h2>
<p>Documentamos funciones y clases de manera breve usando
<em>docstrings</em>:</p>
<div class="highlight-python"><div class="highlight"><pre><span
class="k">class</span> <span class="nc">Sprite</span><span
class="p">:</span>
<span class="sd">&quot;&quot;&quot;Representa un personaje animado en
la pantalla.&quot;&quot;&quot;</span>
@@ -139,8 +139,8 @@
<p>Las variables y las funciones se escriben en minúsculas, y si
se componen de varias palabras usamos el guion bajo para separarlas.</p>
<p>Por ejemplo:</p>
-<div class="highlight-python"><div class="highlight"><pre><span
class="n">x</span> <span class="o">=</span> <span class="mf">40</span>
-<span class="n">y</span> <span class="o">=</span> <span
class="mf">100</span>
+<div class="highlight-python"><div class="highlight"><pre><span
class="n">x</span> <span class="o">=</span> <span class="mi">40</span>
+<span class="n">y</span> <span class="o">=</span> <span
class="mi">100</span>
<span class="n">logo</span> <span class="o">=</span> <span
class="n">utils</span><span class="o">.</span><span
class="n">load_image</span><span class="p">(</span><span
class="s">&#39;menu/logo.png&#39;</span><span class="p">)</span>

<span class="n">screen</span><span class="o">.</span><span
class="n">blit</span><span class="p">(</span><span
class="n">logo</span><span class="p">,</span> <span class="p">(</span><span
class="n">x</span><span class="p">,</span> <span class="n">y</span><span
class="p">))</span>
@@ -153,7 +153,7 @@
<span class="k">pass</span>

<span class="n">image</span> <span class="o">=</span> <span
class="n">utils</span><span class="o">.</span><span
class="n">load_image</span><span class="p">(</span><span
class="s">&#39;animation.png&#39;</span><span class="p">)</span>
-<span class="n">animation</span> <span class="o">=</span> <span
class="n">SimpleAnimation</span><span class="p">(</span><span
class="n">image</span><span class="p">,</span> <span
class="n">frames</span><span class="o">=</span><span
class="mf">5</span><span class="p">)</span>
+<span class="n">animation</span> <span class="o">=</span> <span
class="n">SimpleAnimation</span><span class="p">(</span><span
class="n">image</span><span class="p">,</span> <span
class="n">frames</span><span class="o">=</span><span
class="mi">5</span><span class="p">)</span>
</pre></div>
</div>
</div>
@@ -167,12 +167,12 @@
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Contenidos</a></h3>
<ul>
-<li><a class="reference external" href="">Estilo de programación</a><ul>
-<li><a class="reference external" href="#estructura-del-c-digo">Estructura
del código</a></li>
-<li><a class="reference external" href="#sistema-de-codificaci-n">Sistema
de codificación</a></li>
+<li><a class="reference external" href="#">Estilo de programación</a><ul>
+<li><a class="reference external" href="#estructura-del-codigo">Estructura
del código</a></li>
+<li><a class="reference external" href="#sistema-de-codificacion">Sistema
de codificación</a></li>
<li><a class="reference external" href="#inclusiones">Inclusiones</a></li>
<li><a class="reference external"
href="#separaciones-y-caracteres-en-blanco">Separaciones y caracteres en
blanco</a></li>
-<li><a class="reference external"
href="#documentaci-n">Documentación</a></li>
+<li><a class="reference external"
href="#documentacion">Documentación</a></li>
<li><a class="reference external" href="#nombres">Nombres</a></li>
</ul>
</li>
@@ -223,7 +223,7 @@
</div>
<div class="footer">
&copy; Copyright 2009, Losersjuegos.
- Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.1.
+ Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.5.
</div>
</body>
</html>
=======================================
--- /doc/build/html/genindex.html Sat Jul 11 20:44:11 2009
+++ /doc/build/html/genindex.html Sun May 23 10:58:24 2010
@@ -10,7 +10,7 @@
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
+ URL_ROOT: '#',
VERSION: '0.1',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
@@ -27,7 +27,7 @@
<h3>Navegación</h3>
<ul>
<li class="right" style="margin-right: 10px">
- <a href="" title="Índice General"
+ <a href="#" title="Índice General"
accesskey="I">índice</a></li>
<li><a href="index.html">asadetris v0.1 documentation</a>
&raquo;</li>
</ul>
@@ -84,14 +84,14 @@
<h3>Navegación</h3>
<ul>
<li class="right" style="margin-right: 10px">
- <a href="" title="Índice General"
+ <a href="#" title="Índice General"
>índice</a></li>
<li><a href="index.html">asadetris v0.1 documentation</a>
&raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2009, Losersjuegos.
- Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.1.
+ Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.5.
</div>
</body>
</html>
=======================================
--- /doc/build/html/index.html Thu Sep 17 04:03:39 2009
+++ /doc/build/html/index.html Sun May 23 10:58:24 2010
@@ -10,7 +10,7 @@
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
+ URL_ROOT: '#',
VERSION: '0.1',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
@@ -20,7 +20,7 @@
<script type="text/javascript" src="_static/jquery.js"></script>
<script type="text/javascript" src="_static/doctools.js"></script>
<script type="text/javascript" src="_static/translations.js"></script>
- <link rel="top" title="asadetris v0.1 documentation" href="" />
+ <link rel="top" title="asadetris v0.1 documentation" href="#" />
<link rel="next" title="Integrantes" href="integrantes.html" />
</head>
<body>
@@ -33,7 +33,7 @@
<li class="right" >
<a href="integrantes.html" title="Integrantes"
accesskey="N">siguiente</a> |</li>
- <li><a href="">asadetris v0.1 documentation</a> &raquo;</li>
+ <li><a href="#">asadetris v0.1 documentation</a> &raquo;</li>
</ul>
</div>

@@ -50,16 +50,16 @@
<li class="toctree-l1"><a class="reference external"
href="integrantes.html">Integrantes</a></li>
<li class="toctree-l1"><a class="reference external"
href="tareas_y_etapas.html">Tareas y etapas</a></li>
<li class="toctree-l1"><a class="reference external"
href="estilo.html">Estilo de programación</a><ul>
-<li class="toctree-l2"><a class="reference external"
href="estilo.html#estructura-del-c-digo">Estructura del código</a></li>
-<li class="toctree-l2"><a class="reference external"
href="estilo.html#sistema-de-codificaci-n">Sistema de codificación</a></li>
+<li class="toctree-l2"><a class="reference external"
href="estilo.html#estructura-del-codigo">Estructura del código</a></li>
+<li class="toctree-l2"><a class="reference external"
href="estilo.html#sistema-de-codificacion">Sistema de codificación</a></li>
<li class="toctree-l2"><a class="reference external"
href="estilo.html#inclusiones">Inclusiones</a></li>
<li class="toctree-l2"><a class="reference external"
href="estilo.html#separaciones-y-caracteres-en-blanco">Separaciones y
caracteres en blanco</a></li>
-<li class="toctree-l2"><a class="reference external"
href="estilo.html#documentaci-n">Documentación</a></li>
+<li class="toctree-l2"><a class="reference external"
href="estilo.html#documentacion">Documentación</a></li>
<li class="toctree-l2"><a class="reference external"
href="estilo.html#nombres">Nombres</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference external"
href="documento_de_diseno.html">Documento de diseño</a><ul>
-<li class="toctree-l2"><a class="reference external"
href="documento_de_diseno.html#introducci-n">Introducción</a></li>
+<li class="toctree-l2"><a class="reference external"
href="documento_de_diseno.html#introduccion">Introducción</a></li>
<li class="toctree-l2"><a class="reference external"
href="documento_de_diseno.html#aspecto-visual">Aspecto visual</a></li>
<li class="toctree-l2"><a class="reference external"
href="documento_de_diseno.html#escenas">Escenas</a></li>
<li class="toctree-l2"><a class="reference external"
href="documento_de_diseno.html#controles">Controles</a></li>
@@ -69,7 +69,7 @@
</li>
<li class="toctree-l1"><a class="reference external"
href="alcance.html">Alcance del proyecto</a><ul>
<li class="toctree-l2"><a class="reference external"
href="alcance.html#lo-que-incluye">Lo que incluye</a></li>
-<li class="toctree-l2"><a class="reference external"
href="alcance.html#que-no-se-incluir">Que <em>No</em> se incluirá</a></li>
+<li class="toctree-l2"><a class="reference external"
href="alcance.html#que-no-se-incluira">Que <em>No</em> se incluirá</a></li>
</ul>
</li>
</ul>
@@ -80,15 +80,15 @@
<li class="toctree-l2"><a class="reference external"
href="diseno_etapa_1.html#objeto-principal-director">Objeto principal:
Director</a></li>
<li class="toctree-l2"><a class="reference external"
href="diseno_etapa_1.html#escenas-las-partes-de-un-juego">Escenas, las
partes de un juego</a></li>
<li class="toctree-l2"><a class="reference external"
href="diseno_etapa_1.html#escenas-ampliando">Escenas, ampliando</a></li>
-<li class="toctree-l2"><a class="reference external"
href="diseno_etapa_1.html#el-director-no-sabe-de-que-v-la-pel-cula">El
Director no sabe de que vá la película...</a></li>
+<li class="toctree-l2"><a class="reference external"
href="diseno_etapa_1.html#el-director-no-sabe-de-que-va-la-pelicula">El
Director no sabe de que vá la película...</a></li>
<li class="toctree-l2"><a class="reference external"
href="diseno_etapa_1.html#diagrama-de-clases">Diagrama de clases</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference external"
href="diseno_etapa_2.html">Diseño de la etapa 2</a><ul>
<li class="toctree-l2"><a class="reference external"
href="diseno_etapa_2.html#objetivos-de-la-etapa">Objetivos de la
etapa</a></li>
<li class="toctree-l2"><a class="reference external"
href="diseno_etapa_2.html#objetos">Objetos</a></li>
-<li class="toctree-l2"><a class="reference external"
href="diseno_etapa_2.html#interacci-n-entre-piece-y-board">Interacción
entre Piece y Board</a></li>
-<li class="toctree-l2"><a class="reference external"
href="diseno_etapa_2.html#inicializaci-n-de-piezas">Inicialización de
piezas</a></li>
+<li class="toctree-l2"><a class="reference external"
href="diseno_etapa_2.html#interaccion-entre-piece-y-board">Interacción
entre Piece y Board</a></li>
+<li class="toctree-l2"><a class="reference external"
href="diseno_etapa_2.html#inicializacion-de-piezas">Inicialización de
piezas</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference external"
href="diseno_etapa_3.html">Diseño de la etapa 3</a><ul>
@@ -126,9 +126,9 @@
</div>
<div class="sphinxsidebar">
<div class="sphinxsidebarwrapper">
- <h3><a href="">Contenidos</a></h3>
+ <h3><a href="#">Contenidos</a></h3>
<ul>
-<li><a class="reference external" href="">Asadetris</a><ul>
+<li><a class="reference external" href="#">Asadetris</a><ul>
</ul>
</li>
<li><a class="reference external" href="#indices">Indices</a></li>
@@ -168,12 +168,12 @@
<li class="right" >
<a href="integrantes.html" title="Integrantes"
>siguiente</a> |</li>
- <li><a href="">asadetris v0.1 documentation</a> &raquo;</li>
+ <li><a href="#">asadetris v0.1 documentation</a> &raquo;</li>
</ul>
</div>
<div class="footer">
&copy; Copyright 2009, Losersjuegos.
- Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.1.
+ Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.5.
</div>
</body>
</html>
=======================================
--- /doc/build/html/integrantes.html Thu Sep 17 04:03:39 2009
+++ /doc/build/html/integrantes.html Sun May 23 10:58:24 2010
@@ -10,7 +10,7 @@
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
+ URL_ROOT: '#',
VERSION: '0.1',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
@@ -113,7 +113,7 @@
</div>
<div class="footer">
&copy; Copyright 2009, Losersjuegos.
- Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.1.
+ Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.5.
</div>
</body>
</html>
=======================================
--- /doc/build/html/modules.html Thu Sep 17 04:03:39 2009
+++ /doc/build/html/modules.html Sun May 23 10:58:24 2010
@@ -10,7 +10,7 @@
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
+ URL_ROOT: '#',
VERSION: '0.1',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
@@ -42,8 +42,8 @@
<div class="bodywrapper">
<div class="body">

- <div class="section" id="m-dulos">
-<h1>Módulos<a class="headerlink" href="#m-dulos" title="Enlazar
permanentemente con este título">¶</a></h1>
+ <div class="section" id="modulos">
+<h1>Módulos<a class="headerlink" href="#modulos" title="Enlazar
permanentemente con este título">¶</a></h1>
<p>El código del proyecto se organiza en módulo dentro del paquete <tt
class="docutils literal"><span class="pre">lib</span></tt>. Esta
página resume los módulos mas significativos.</p>
<div class="section" id="funciones-de-utilidad">
@@ -66,7 +66,7 @@
<div class="sphinxsidebarwrapper">
<h3><a href="index.html">Contenidos</a></h3>
<ul>
-<li><a class="reference external" href="">Módulos</a><ul>
+<li><a class="reference external" href="#">Módulos</a><ul>
<li><a class="reference external" href="#funciones-de-utilidad">Funciones
de utilidad</a></li>
</ul>
</li>
@@ -111,7 +111,7 @@
</div>
<div class="footer">
&copy; Copyright 2009, Losersjuegos.
- Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.1.
+ Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.5.
</div>
</body>
</html>
=======================================
--- /doc/build/html/search.html Sat Jul 11 20:44:11 2009
+++ /doc/build/html/search.html Sun May 23 10:58:24 2010
@@ -10,7 +10,7 @@
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
+ URL_ROOT: '#',
VERSION: '0.1',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
@@ -84,7 +84,7 @@

<div class="footer">
&copy; Copyright 2009, Losersjuegos.
- Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.1.
+ Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.5.
</div>
<script type="text/javascript" src="searchindex.js"></script>

=======================================
--- /doc/build/html/searchindex.js Sun Oct 18 17:31:18 2009
+++ /doc/build/html/searchindex.js Sun May 23 10:58:24 2010
@@ -1,1 +1,1 @@
-Search.setIndex({desctypes:{"0":"function"},terms:{code:4,directorio:[8,9,1],escribir:[4,10],ampliando:[0,10],cargar:1,observa:5,actualizar:10,alt:8,superfici:[8,3],otro:[5,4,9,1,10],atributo:[6,8],buscamo:[2,6],marcado:9,decim:6,vez:[5,9,1,10],otra:[4,9,1,10],igual:[9,10],estructura:[0,1,4,8,9,10],aplicar:1,distingu:4,relaciona:1,"soluci\u00f3n":10,esc:1,solament:[9,1,10],encuenta:6,"c\u00f3mo":[5,9,10],"eval\u00faa":5,naturalidad:4,previs:10,fuent:1,mous:[5,1],jugador:[2,5,1],ejecut:[10,1],compuesta:[5,9],compuesto:10,valioso:5,anotar:2,colorkei:3,bajen:[7,1],necesita:8,brevement:5,tre:[2,5],haber:10,"dise\u00f1o":[0,5,6,7,8,9,10],recib:[8,10],elegir:[2,5],pygam:4,especifica:2,"habr\u00e1":10,"dise\u00f1ar":10,"m\u00fasica":2,cosa:10,agrega:[8,1],consistent:4,ejemplo:[5,4,9,1,10],"bot\u00f3n":5,entr:[0,1,2,4,8,9,10],video:5,comienza:9,pass:4,direccion:[2,5],carlo:11,click:[5,1],sentencia:4,aleatoriament:1,porqu:[5,9,1],tipo:1,realizado:5,mediant:6,manejar:[9,10],acceso:5,"l\u00f3gica":9,uniform:4,version:1,pulsar:[5,4,1],"dif\u00edcil":[5,10],"m\u00e9todo":[7,10],"new":10,net:4,"animaci\u00f3n":1,precisament:10,cambiar:[5,10,1],orientada:10,gener:10,component:10,objecto:6,bueh:5,internament:[7,8,9],ubuntu:1,depend:6,interna:9,activa:10,invis:[8,9],"implementaci\u00f3n":[0,1],root:0,gent:5,tocado:8,dibuja:[8,10],resto:[5,8,1],def:4,permit:[5,4,1],bajan:5,izquiera:1,thepoi:11,varia:[4,10,1],restriccion:[9,1],texto:[4,10,1],creado:4,"configuraci\u00f3n":[2,1],"diferenciaci\u00f3n":5,sirv:5,palabra:4,usar:[5,10],"m\u00f3dulo":[0,4,3],txt:8,refleja:8,from:4,finalizar:10,espacio:4,diagrama:[0,8,10],incluso:10,experto:[2,5],lograda:1,criterio:8,utilizando:10,representada:9,funciona:10,"programaci\u00f3n":[0,4,10],"mayor\u00eda":4,incluir:[4,10],visual:[5,0,8,9,1],"selecci\u00f3n":1,animacion:[2,1],colaborativo:11,consulta:[8,9],bajar:[2,5,7,1],"ejecuci\u00f3n":10,pierd:5,setup:[5,1],concepto:10,mover:[5,9,1],del:[0,1,2,3,4,5,6,7,8,9,10],can:0,pero:[2,8,9,1,10],deb:1,tampoco:10,facilitar:2,sabe:[0,10],control:[5,0,10,1],almacenan:[3,9],figura:[5,9],quickstart:0,patron:10,cierra:1,funcionalidad:[5,4,10],atend:10,indic:0,perder:2,"llegar\u00edamo":10,inicial:1,lograr:4,tal:1,presentacion:[10,1],ficha:[2,5,1],"introducci\u00f3n":[5,0],llegu:1,surfac:4,mapa:8,end:8,objeto:[0,4,6,8,9,10],divid:1,utiliza:8,colocar:[4,1],hugo:11,"ser\u00e1n":5,aument:6,fals:3,dividida:1,llega:[2,7,10,1],retorna:4,cual:5,dividido:5,sin:5,updat:7,tien:[6,8,9,1,10],escenario:[2,5,8,1],adoptado:4,"relizar\u00e1n":1,variant:4,create_displai:4,salto:1,mismo:[2,10],dato:[8,4],construy:4,sistema:[5,0,4,10,1],estrategia:[10,1],horizontal:5,sonido:[2,10,1],orden:[8,9,10],coordina:6,correspond:10,redundant:4,hasta:2,linea:[1,2,5,6,7,9],primero:1,"representaci\u00f3n":9,rotar:[2,1],acelera:5,"interacci\u00f3n":[0,6,9],move:8,girar:5,ingresa:[2,5],heredar:9,operativo:1,hacia:[5,1],nombr:[2,0,4,5,10],retornando:3,mayor:[2,4,10],direccional:[5,9,1],ambientado:5,superior:[7,1],forma:[5,7,4,9],"tambi\u00e9n":[5,8,9],cerrar:1,asignar:[6,1],jugando:[5,6],tendremo:10,personaj:4,window:1,interesant:10,musica:[2,1],"asignaci\u00f3n":1,main:5,anim:4,elegido:5,python:4,mientra:[5,6],"opci\u00f3n":[5,1],difier:5,scene:9,contador:[7,1],dar:5,"qu\u00e9":6,realiza:6,transparent:8,"as\u00ed":1,completar:2,realacionada:1,name:3,simpl:[2,4,9,10],soportan:4,permanezca:1,representa:[8,4,9,10],"b\u00e1sicament":[2,6,10],enumeran:5,generan:8,modo:[2,5,4],bueno:1,prohibir:9,resum:[3,9],idea:[2,10],toda:[8,10,1],meta:2,acomodar:5,funcionamiento:10,ingresar:5,giro:5,todo:[5,8,4,9,10],falta:10,variabl:[4,10],"documentaci\u00f3n":[0,4,1],ayuda:[2,1],matriz:[8,9],your:0,adapt:0,implementada:7,print:4,red:2,"peque\u00f1o":10,"aplicaci\u00f3n":[10,1],alcanc:[2,0],situar:9,"planificaci\u00f3n":1,"peque\u00f1a":10,inici:[5,0,1],base:1,que:[0,1,2,3,4,5,6,7,8,9,10,11],basa:10,entrar:5,contien:10,realizar:2,luego:[10,1],probar:1,integrant:[0,11],logo:[5,4],deja:[8,1],asignamo:4,set_scen:10,"cl\u00e1sico":5,oper:10,mucha:10,agregan:1,"est\u00e1":[1,5,6,7,9,10],organiza:3,scena:10,videojuego:5,"est\u00e9":4,rank:10,mucho:[5,10],cada:[1,5,4,6,7,8,9,10],participan:11,dond:[1,5,4,8,9,10],adicionalment:5,rutina:[4,10],size:4,gpl:5,"\u00fanico":5,"est\u00e1n":9,realidad:10,gestionar:[10,1],least:0,verifica:8,master:0,llegan:1,htm:4,juanxo:11,animado:4,para:[1,2,4,5,8,9,10],tetri:5,segunda:10,copi:5,direct:0,part:[0,1,6,7,8,10],avanza:[5,7],bajo:[4,10],necesitamo:10,lista:11,diga:6,incorrecto:9,"colisi\u00f3n":[8,9,1],"a\u00fan":1,situado:4,gameov:[7,1],colisionar:8,abstracta:1,"versi\u00f3n":1,aumentar:[7,1],"intensi\u00f3n":4,interactivo:2,colisionan:9,sigu:1,explica:[5,10],"rotaci\u00f3n":1,esta:[1,5,3,4,7,8,9,10,11],observar:[8,10],planificar:2,teclado:[5,9,1],efecto:1,blit:4,programa:1,bloqueada:1,destello:2,determina:2,simplificado:10,dentro:[8,3],imprim:10,poner:2,paquet:[3,1],blanco:[0,4],"despu\u00e9":4,self:4,tienen:5,note:1,colision:[0,8,9,1,10],nota:[5,4],separado:[9,10],licencia:5,funcion:[0,4,3,1],lugar:[9,10],nivel:[2,0,6,7,5],explicando:1,dibujar:10,clase:[0,4,6,7,8,9,10],centro:1,can_put_this_piece_her:8,horizontalment:5,cualquier:[10,1],diferent:[2,5,1],digestivo:5,decision:10,contain:0,"class":4,set_mod:4,encargado:10,verificar:9,dificultad:[5,10],usuario:[1,2,5,6,7,8,9,10],url:1,doc:1,alguna:8,adopt:4,repositorio:1,cambio:[8,4,10,1],con:[1,2,4,5,8,9,10],"ser\u00e1":5,visualment:8,cambia:2,inmediatament:[2,5],cantidad:[5,6],usamo:4,ingresando:5,indispens:4,comenzar:1,realizada:5,enumera:1,manera:[4,9,10],carga:[4,3],usando:[4,1],help:5,pulsando:[5,9,1],durant:5,"funci\u00f3n":1,dice:10,menu:[4,10,1],configur:[2,4],"espa\u00f1ol":4,escena:[5,0,9,1,10],jugar:[5,1],should:0,meno:4,separarla:4,png:4,rectangulo:[3,1],velazquez:11,controla:8,ocupado:8,identando:4,"alg\u00fan":1,genera:[6,4,10,1],suel:10,"creaci\u00f3n":1,"se\u00f1alan":4,tecla:[5,4,1],imprimir:[7,1],score:5,relacionan:10,"aqu\u00ed":[5,8,4,10,1],escriben:4,consist:[5,10],go_to_next_piec:8,partir:[7,10],mantien:10,distribucion:1,intercambian:10,respond:[9,10],conform:[7,8],put_one_piece_her:8,solo:[1,2,4,5,8,10],frame:4,individual:10,sea:[4,9],dividir:10,pintar:1,"\u00edndice":0,descarta:10,fullscreen:4,reemplazarlo:10,"men\u00fa":[2,5,10],contenido:[0,8,10,1],certeza:[2,10],suelta:8,bien:[8,10],ambo:8,"estar\u00e1":10,"import":4,mui:[5,9,1,10],amba:2,alguien:5,llamado:10,caida:7,realizamo:1,extend:1,hai:[5,10,1],screen:4,constituyen:9,punto:5,evitamo:4,como:[1,2,4,5,9,10],opcion:[5,10],sola:[5,9,10],instant:7,"peri\u00f3dicament":10,necesario:[4,10],operador:4,quier:[5,4,10],utilizan:5,space:[5,1],utilizar:[5,1],una:[1,5,3,4,7,8,9,10],operar:10,quien:[6,1],proyecto:[0,1,2,3,4,5,11],encarga:[7,10],sencillo:[9,10],"com\u00fan":2,uno:[5,9,1],load:4,color:[5,1],"colaboraci\u00f3n":10,por:[1,2,4,5,8,9,10],height:4,coma:4,complejidad:10,path:4,recomendamo:4,guion:4,guia:4,"min\u00fascula":4,"m\u00ednimo":10,inicialment:8,faltan:1,actualiza:10,conjunto:10,"incluir\u00e1":[2,0],"presentaci\u00f3n":[10,1],administrar:[10,1],walter:11,"pel\u00edcula":[0,10],esto:[1,2,4,5,6,10],otl:1,documento:[5,0,4,10,1],atien:10,pueden:[10,1],restant:8,xxx:9,intercambio:8,reposan:8,abajo:[5,1],"c\u00f3digo":[0,4,3,10],reposar:8,deten:1,file:0,"ca\u00edda":[5,7,1],breve:4,inspecciona:9,medida:5,present:5,representativo:4,opci:10,formato:1,defin:[2,4],"autom\u00e1tica":7,marcador:2,sobr:[5,0,8,10],indiqu:1,"dise\u00f1ado":10,"situaci\u00f3n":8,buen:[2,5],analizar:10,permiten:4,responsabilidad:10,velocidad:[0,1,2,5,6,7],fondo:1,constantement:10,archivo:[4,3,9,1],origin:5,ofrec:9,ambient:2,"return":4,"f\u00e1cil":[2,5,4],obligatorio:10,"__init__":4,evento:[10,1],alternar:1,medio:[2,5],pueda:[7,8,1],juan:11,"eligi\u00e9ramo":10,parecido:8,sencilla:[10,1],juego:[0,1,2,5,6,7,9,10,11],hecho:10,grand:[5,8,10],document:0,cambiarla:10,complet:0,caer:1,tiempo:10,persona:[5,11],"posici\u00f3n":[8,4],siempr:2,utf8:4,ella:8,director:[0,10],"se\u00f1ala":8,caen:1,hacer:[2,5,7,4,1],propon:1,lib:3,recurso:1,thu:0,game:[5,6,7],modifica:1,radica:10,obligatoriament:10,implementa:8,dokan:11,thi:0,conoc:[6,4,10],"prop\u00f3sito":1,joystick:1,audio:[2,5],desacoplamiento:[0,10],"ingl\u00e9":4,letra:9,reposo:8,vamo:10,visual_matrix:8,desarrollan:1,load_imag:[4,3],progresivament:[2,5,1],aspecto:[5,0,8,4],utilizamo:[4,3],momento:[9,1,10],"may\u00fascula":4,desarrollar:1,brindar:5,comienzan:[7,4],habilidad:5,speed:6,comentario:4,nuestro:2,cuatro:5,mundogeek:4,han:8,simpleanim:4,utilizado:9,detal:[5,4],suelen:4,arriba:1,relativament:5,board:[0,8,9],"transici\u00f3n":1,imprimirla:10,formar:5,puedan:2,cuando:[6,7,8,10,1],piec:[0,6,7,8,9],camelcas:4,"codificaci\u00f3n":[0,4,1],igualment:1,tanto:[2,5,9,10],desd:[5,1],libr:8,"patr\u00f3n":10,porcion:5,"tama\u00f1o":4,desarrollo:[2,11,1],like:0,"t\u00e9rmino":10,incorpora:9,princip:[5,0,10,1],utilizaremo:10,posibilidad:[5,9],regresar:[5,9],auxiliar:3,desacoplarlo:10,consultar:5,suelo:[8,9,1],resolv:10,pieza:[0,1,2,5,6,7,8,9,10],bloqu:[5,8,4,9],"d\u00f3nde":2,salir:1,bord:1,tarea:[0,1],hace:[5,10],est:[1,5,4,6,8,9,10,11],mostrar:1,ilustrativo:10,definir:[5,4,9,1,10],tipografica:1,analiza:8,tener:[2,10,1],mejora:1,esa:[8,10],eso:5,inicia:[5,10],eliminar:10,pued:[1,2,5,8,9,10],"b\u00fasqueda":0,aumenta:7,tocan:[9,1],queda:1,aumento:5,clarament:2,credito:1,llamar:[7,10],nuevo:8,interesa:10,concluir:1,lacabra25:11,losersjuego:5,habilitar:[2,1],nueva:[0,8,9,1,10],about:5,"enumeraci\u00f3n":2,actual:1,caja:10,ocupar:8,descarga:7,http:4,explicar:1,queremo:[2,5,10],cadena:1,iniciando:4,"inspiraci\u00f3n":5,algo:10,misma:[5,4,1],"informaci\u00f3n":8,separacion:[0,4],anterior:[9,1,10],encuentra:[8,9,10],traduccion:4,dibujan:9,inclusion:[0,4],agradecimiento:5,objetivo:[5,0,9],ruscitti:11,encod:4,son:[5,3,10],"convenci\u00f3n":4,ventana:[5,4,10,1],pantalla:[1,2,4,5,9,10],"r\u00e1pido":5,soport:1,leyenda:1,ver:4,imagen:[1,5,3,4,8,9],puntaj:[2,0,5,1,10],agrupar:10,rotacion:1,incluy:[2,0],almacena:6,ello:[5,10],comida:5,"expl\u00edcita":4,width:4,resulten:4,solicitado:4,parec:5,editor:4,unidad:10,poder:[10,1],etc:[4,10],completa:[5,4,1],"inicializaci\u00f3n":[0,9],haciendo:1,foro:1,realizando:5,jul:0,completo:[8,4,9,1,10],desarrollador:5,titulo:1,logra:[6,1],utf:4,seleccionar:1,tab:4,notar:10,josknet:11,intercambiarla:10,documentamo:4,displai:[6,4],mejorar:1,tema:[5,1],permitir:[7,1],similar:[5,9],puls:1,crear:[8,9,1,10],definen:[4,10],etapa:[0,1,6,7,8,9,10],creat:0,toctre:0,estilo:[0,4,10,1],implementan:1,convencion:4,"ah\u00ed":5,salen:9,implementar:[2,7,8,1],registramo:1,exist:[4,9,1],mejor:1,caracter:[0,4],tablero:[5,0,8,9],originalment:5,sprite:4,muestra:[5,10],leer:4,directament:[5,1],movimiento:[9,1,10],involucra:1,cuenta:[2,5],derecha:[5,9,1],reposando:1,significativo:3,componen:4,perfil:2,"podr\u00eda":8,parecida:10,podemo:10,resumimo:4,you:0,utilidad:[0,3],imag:4,frecuencia:1,draw:10,rasgo:[5,10],asadetri:[5,0],publicar:1,docstr:4,representan:9,optar:10,siguient:[5,9,1],"eliminaci\u00f3n":1,representar:10,important:[5,4,9,10],modelo:9,aternar:1,debe:[5,8,9,10],determinada:[5,7,1],grupo:5,restringir:1,debian:1,elemento:4,update_matrix_putting_a_new_piec:8,sphinx:[0,1],mensaj:[8,7,4,10,1],manten:10,util:[4,3],"organizaci\u00f3n":1,apilar:1,mask:[8,9],cuanta:6,izquierda:[5,9,1],"p\u00e1gina":[0,3],simplement:6,escap:[5,1],estrictament:4,preliminar:9,"b\u00e1sico":1},titles:["Asadetris","Tareas
y
etapas","Alcance del proyecto","M\u00f3dulos","Estilo de
programaci\u00f3n","Documento de dise\u00f1o","Dise\u00f1o de la etapa
5","Dise\u00f1o de la etapa 4","Dise\u00f1o de la etapa 3","Dise\u00f1o de
la etapa 2","Dise\u00f1o de la etapa
1","Integrantes"],modules:{},descrefs:{"lib.utils":{load_images:[3,0]}},filenames:["index","tareas_y_etapas","alcance","modules","estilo","documento_de_diseno","diseno_etapa_5","diseno_etapa_4","diseno_etapa_3","diseno_etapa_2","diseno_etapa_1","integrantes"]})
+Search.setIndex({desctypes:{"0":"function"},terms:{code:4,directorio:[8,9,1],ampliando:[0,10],cargar:1,breve:4,uno:[5,9,1],actualizar:10,alt:[],superfici:[8,3],precisament:10,atributo:[6,8],buscamo:[2,6],operar:10,medida:5,decim:6,vez:[5,9,1,10],otra:[4,9,1,10],igual:[9,10],estructura:[0,1,4,8,9,10],aplicar:1,caracter:[0,4],distingu:4,relaciona:1,"soluci\u00f3n":10,solicitado:4,solament:[9,1,10],"b\u00e1sico":1,"c\u00f3mo":[5,9,10],"eval\u00faa":5,naturalidad:4,previs:10,fuent:1,mous:[5,1],ejecut:[10,1],"interacci\u00f3n":[0,6,9],heredar:9,valioso:5,anotar:2,lacabra25:11,colorkei:3,bajen:[7,1],brevement:5,tre:[2,5],haber:10,"dise\u00f1o":[0,5,6,7,8,9,10],recib:[8,10],elegir:[2,5],pygam:4,especifica:2,"habr\u00e1":10,"dise\u00f1ar":10,"m\u00fasica":2,cosa:10,agrega:[8,1],consistent:4,ejemplo:[5,4,9,1,10],"bot\u00f3n":5,entr:[0,1,2,4,8,9,10],video:5,comienza:9,pass:4,carlo:11,click:[5,1],sentencia:4,aleatoriament:1,porqu:[5,9,1],tipo:1,usando:[4,1],manejar:[9,10],acceso:5,"l\u00f3gica":9,uniform:4,version:1,"dif\u00edcil":[5,10],"m\u00e9todo":[7,10],"new":10,net:4,"animaci\u00f3n":1,otro:[5,4,9,1,10],cambiar:[5,10,1],gener:10,component:10,objecto:6,indiqu:1,internament:[7,8,9],ubuntu:1,depend:6,interna:9,activa:10,invis:[8,9],"implementaci\u00f3n":[0,1],root:[],gent:5,tocado:8,resto:[5,8,1],def:4,permit:[5,4,1],bajan:5,izquiera:1,"espa\u00f1ol":4,restriccion:[9,1],texto:[4,10,1],creado:4,"configuraci\u00f3n":[2,1],"diferenciaci\u00f3n":5,sirv:5,palabra:4,"m\u00f3dulo":[0,4,3],txt:8,refleja:8,from:4,finalizar:10,fondo:1,diagrama:[0,8,10],meno:4,criterio:8,utilizando:10,representada:9,funciona:10,"programaci\u00f3n":[0,4,10],"mayor\u00eda":4,incluir:[4,10],visual:[5,0,8,9,1],"d\u00f3nde":2,"selecci\u00f3n":1,animacion:[2,1],bajar:[2,5,7,1],"ejecuci\u00f3n":10,pierd:5,setup:[5,1],concepto:10,del:[0,1,2,3,4,5,6,7,8,9,10],can:[],pero:[2,8,9,1,10],deb:1,tampoco:10,facilitar:2,sabe:[0,10],control:[5,0,10,1],almacenan:[3,9],figura:[5,9],quickstart:[],patron:10,cierra:1,funcionalidad:[5,4,10],atend:10,indic:0,apilar:1,perder:2,dokan:11,inicial:1,lograr:4,tal:1,presentacion:[10,1],ficha:[2,5,1],identando:4,llegu:1,surfac:4,mapa:8,end:[],objeto:[0,4,6,8,9,10],divid:1,utiliza:8,colocar:[4,1],hugo:11,"inspiraci\u00f3n":5,reposo:8,aument:6,fals:3,dividida:1,musica:[2,1],mejorar:1,retorna:4,cual:5,simpl:[2,4,9,10],sin:5,updat:7,tien:[6,8,9,1,10],escenario:[2,5,8,1],adoptado:4,implementada:7,variant:4,create_displai:4,salto:1,"informaci\u00f3n":8,dato:[8,4],construy:4,sistema:[5,0,4,10,1],estrategia:[10,1],horizontal:5,sonido:[2,10,1],tetri:5,distribucion:1,coordina:6,correspond:10,redundant:4,hasta:2,linea:[1,2,5,6,7,9],primero:1,"representaci\u00f3n":9,rotar:[2,1],acelera:5,compuesta:[5,9],move:[],girar:5,ingresa:[2,5],compuesto:10,operativo:1,hacia:[5,1],nombr:[2,0,4,5,10],retornando:3,mayor:[2,4,10],direccional:[5,9,1],ambientado:5,superior:[7,1],forma:[5,7,4,9],"tambi\u00e9n":[5,8,9],cerrar:1,asignar:[6,1],jugando:[5,6],tendremo:10,personaj:4,window:1,interesant:10,llega:[2,7,10,1],"asignaci\u00f3n":1,main:5,anim:4,elegido:5,imprimirla:10,python:4,mientra:[5,6],"opci\u00f3n":[5,1],difier:5,"est\u00e9":4,contador:[7,1],dar:5,"qu\u00e9":6,realiza:6,desarrollan:1,transparent:8,"as\u00ed":1,completar:2,realacionada:1,name:3,dividido:5,soportan:4,permanezca:1,representa:[8,4,9,10],"b\u00e1sicament":[2,6,10],enumeran:5,modo:[2,5,4],documento:[5,0,4,10,1],bueno:1,prohibir:9,resum:[3,9],idea:[2,10],toda:[8,10,1],meta:2,acomodar:5,pulsar:[5,4,1],giro:5,todo:[5,8,4,9,10],falta:10,variabl:[4,10],"documentaci\u00f3n":[0,4,1],"r\u00e1pido":5,convencion:4,matriz:[8,9],leyenda:1,adapt:[],"relizar\u00e1n":1,print:4,red:2,"peque\u00f1o":10,"aplicaci\u00f3n":[10,1],alcanc:[2,0],situar:9,"planificaci\u00f3n":1,"peque\u00f1a":10,inici:[5,0,1],base:1,que:[0,1,2,3,4,5,6,7,8,9,10,11],basa:10,entrar:5,realizar:2,luego:[10,1],probar:1,integrant:[0,11],deja:[8,1],asignamo:4,oper:10,mucha:10,agregan:1,"est\u00e1":[1,5,6,7,9,10],organiza:3,scena:10,videojuego:5,scene:9,rank:10,mucho:[5,10],cada:[1,5,4,6,7,8,9,10],participan:11,dond:[1,5,4,8,9,10],adicionalment:5,rutina:[4,10],size:4,gpl:5,"\u00fanico":5,"est\u00e1n":9,realidad:10,gestionar:[10,1],least:[],verifica:8,master:[],llegan:1,htm:4,juanxo:11,animado:4,pintar:1,para:[1,2,4,5,8,9,10],orden:[8,9,10],segunda:10,copi:5,direct:[],part:[0,1,6,7,8,10],avanza:[5,7],bajo:[4,10],necesitamo:10,"convenci\u00f3n":4,lista:11,diga:6,incorrecto:9,"colisi\u00f3n":[8,9,1],recurso:1,situado:4,colisionar:8,abstracta:1,"versi\u00f3n":1,aumentar:[7,1],"intensi\u00f3n":4,interactivo:2,colisionan:9,sigu:1,"rotaci\u00f3n":1,esta:[1,5,3,4,7,8,9,10,11],observar:[8,10],planificar:2,"return":4,teclado:[5,9,1],efecto:1,blit:4,"inicializaci\u00f3n":[0,9],simplificado:10,dentro:[8,3],imprim:10,poner:2,paquet:[3,1],blanco:[0,4],"despu\u00e9":4,self:4,tienen:5,note:1,nota:[5,4],separado:[9,10],licencia:5,funcion:[0,4,3,1],lugar:[9,10],nivel:[2,0,6,7,5],explicando:1,dibujar:10,clase:[0,4,6,7,8,9,10],centro:1,can_put_this_piece_her:[],horizontalment:5,cualquier:[10,1],diferent:[2,5,1],digestivo:5,contain:[],"class":4,set_mod:4,encargado:10,audio:[2,5],usuario:[1,2,5,6,7,8,9,10],url:1,doc:1,alguna:8,adopt:4,sola:[5,9,10],repositorio:1,resumimo:4,cambio:[8,4,10,1],"ser\u00e1":5,visualment:8,cambia:2,inmediatament:[2,5],cantidad:[5,6],usamo:4,ingresando:5,indispens:4,comenzar:1,realizada:5,enumera:1,manera:[4,9,10],carga:[4,3],realizado:5,help:5,pulsando:[5,9,1],durant:5,"funci\u00f3n":1,dice:10,menu:[4,10,1],llamar:[7,10],configur:[2,4],varia:[4,10,1],escena:[5,0,9,1,10],jugar:[5,1],should:[],lograda:1,separarla:4,png:4,rectangulo:[3,1],velazquez:11,separacion:[0,4],controla:8,ocupado:8,"introducci\u00f3n":[5,0],"alg\u00fan":1,implementan:1,genera:[6,4,10,1],suel:10,"creaci\u00f3n":1,constantement:10,tecla:[5,4,1],imprimir:[7,1],inclusion:[0,4],relacionan:10,"aqu\u00ed":[5,8,4,10,1],escriben:4,consist:[5,10],go_to_next_piec:[],utilidad:[0,3],partir:[7,10],utilizamo:[4,3],gameov:[7,1],intercambian:10,respond:[9,10],conform:[7,8],put_one_piece_her:[],caida:7,"autom\u00e1tica":7,frame:4,queda:1,individual:10,sea:[4,9],dividir:10,bloqueada:1,"\u00edndice":0,descarta:10,fullscreen:4,extend:1,"men\u00fa":[2,5,10],contenido:[0,8,10,1],certeza:[2,10],suelta:8,bien:[8,10],score:5,"estar\u00e1":10,"import":4,mui:[5,9,1,10],amba:2,alguien:5,llamado:10,solo:[1,2,4,5,8,10],realizamo:1,medio:[2,5],reemplazarlo:10,screen:4,constituyen:9,obligatorio:10,punto:5,evitamo:4,como:[1,2,4,5,9,10],opcion:[5,10],"m\u00ednimo":10,eliminar:10,instant:7,"peri\u00f3dicament":10,necesario:[4,10],operador:4,quier:[5,4,10],utilizan:5,utilizar:[5,1],una:[1,5,3,4,7,8,9,10],sencilla:[10,1],quien:[6,1],proyecto:[0,1,2,3,4,5,11],encarga:[7,10],sencillo:[9,10],"com\u00fan":2,con:[1,2,4,5,8,9,10],load:4,"se\u00f1alan":4,"colaboraci\u00f3n":10,por:[1,2,4,5,8,9,10],height:4,coma:4,complejidad:10,path:4,recomendamo:4,guion:4,guia:4,"min\u00fascula":4,interesa:10,creat:[],faltan:1,actualiza:10,conjunto:10,"incluir\u00e1":[2,0],"presentaci\u00f3n":[10,1],administrar:[10,1],walter:11,"pel\u00edcula":[0,10],esto:[1,2,4,5,6,10],otl:1,sprite:4,atien:10,pueden:[10,1],restant:8,xxx:9,intercambio:8,reposan:8,abajo:[5,1],"c\u00f3digo":[0,4,3,10],reposar:8,caer:1,deten:1,"ca\u00edda":[5,7,1],observa:5,modifica:1,inspecciona:9,marcado:9,present:5,representativo:4,implementar:[2,7,8,1],formato:1,defin:[2,4],orientada:10,marcador:2,sobr:[5,0,8,10],bueh:5,exist:[4,9,1],"situaci\u00f3n":8,buen:[2,5],analizar:10,permiten:4,responsabilidad:10,velocidad:[0,1,2,5,6,7],espacio:4,experto:[2,5],archivo:[4,3,9,1],origin:5,ofrec:9,ambient:2,consulta:[8,9],"f\u00e1cil":[2,5,4],tablero:[5,0,8,9],"__init__":4,evento:[10,1],alternar:1,etc:[4,10],pueda:[7,8,1],juan:11,"eligi\u00e9ramo":10,concluir:1,juego:[0,1,2,5,6,7,9,10,11],hecho:10,grand:[5,8,10],document:[],complet:[],"llegar\u00edamo":10,tiempo:10,persona:[5,11],"posici\u00f3n":[8,4],siempr:2,utf8:4,ella:8,director:[0,10],"se\u00f1ala":8,caen:1,hacer:[2,5,7,4,1],propon:1,lib:3,"a\u00fan":1,thu:[],game:[5,6,7],"cl\u00e1sico":5,radica:10,obligatoriament:10,implementa:8,programa:1,thi:[],conoc:[6,4,10],"prop\u00f3sito":1,joystick:1,dificultad:[5,10],desacoplamiento:[0,10],"ingl\u00e9":4,letra:9,incluso:10,vamo:10,visual_matrix:8,verificar:9,load_imag:[4,3],progresivament:[2,5,1],desd:[5,1],mantien:10,momento:[9,1,10],"may\u00fascula":4,desarrollar:1,brindar:5,habilidad:5,speed:6,comentario:4,nuestro:2,hai:[5,10,1],mundogeek:4,han:8,simpleanim:4,utilizado:9,detal:[5,4],suelen:4,color:[5,1],arriba:1,relativament:5,board:[0,8,9],"transici\u00f3n":1,colision:[0,8,9,1,10],ambo:8,formar:5,puedan:2,cuando:[6,7,8,10,1],piec:[0,6,7,9],camelcas:4,"codificaci\u00f3n":[0,4,1],igualment:1,tanto:[2,5,9,10],aspecto:[5,0,8,4],libr:8,"patr\u00f3n":10,porcion:5,"tama\u00f1o":4,desarrollo:[2,11,1],like:[],restringir:1,"t\u00e9rmino":10,incorpora:9,princip:[5,0,10,1],utilizaremo:10,escribir:[4,10],regresar:[5,9],comida:5,desacoplarlo:10,consultar:5,resolv:10,pieza:[0,1,2,5,6,7,8,9,10],bloqu:[5,8,4,9],toctre:[],salir:1,bord:1,tarea:[0,1],hace:[5,10],est:[1,5,4,6,8,9,10,11],mostrar:1,ilustrativo:10,definir:[5,4,9,1,10],tipografica:1,analiza:8,esc:1,mejora:1,esa:[8,10],eso:5,inicia:[5,10],jugador:[2,5,1],pued:[1,2,5,8,9,10],"b\u00fasqueda":0,aumenta:7,tocan:[9,1],suelo:[8,9,1],aumento:5,clarament:2,credito:1,mediant:6,nuevo:8,dibuja:[8,10],thepoi:11,usar:[5,10],losersjuego:5,habilitar:[2,1],nueva:[0,8,9,1,10],about:5,"enumeraci\u00f3n":2,actual:1,colaborativo:11,ocupar:8,descarga:7,http:4,explicar:1,queremo:[2,5,10],cadena:1,iniciando:4,"ser\u00e1n":5,algo:10,misma:[5,4,1],mismo:[2,10],ingresar:5,anterior:[9,1,10],encuentra:[9,10],traduccion:4,dibujan:9,cambiarla:10,agradecimiento:5,objetivo:[5,0,9],ruscitti:11,encod:4,son:[5,3,10],determina:2,ventana:[5,4,10,1],pantalla:[1,2,4,5,9,10],ayuda:[2,1],soport:1,your:[],ver:4,imagen:[1,5,3,4,8,9],puntaj:[2,0,5,1,10],agrupar:10,rotacion:1,incluy:[2,0],almacena:6,ello:[5,10],direccion:[2,5],"expl\u00edcita":4,width:4,resulten:4,contien:10,parec:5,editor:4,unidad:10,poder:[10,1],explica:[5,10],completa:[5,4,1],destello:2,haciendo:1,foro:1,realizando:5,jul:[],completo:[8,4,9,1,10],desarrollador:5,titulo:1,sphinx:1,mejor:1,utf:4,seleccionar:1,tab:4,notar:10,caja:10,josknet:11,intercambiarla:10,documentamo:4,displai:[6,4],comienzan:[7,4],tener:[2,10,1],tema:[5,1],permitir:[7,1],similar:[5,9],puls:1,crear:[8,9,1,10],definen:[4,10],cuatro:5,etapa:[0,1,6,7,8,9,10],inicialment:8,posibilidad:[5,9],funcionamiento:10,estilo:[0,4,10,1],generan:8,necesita:8,"ah\u00ed":5,salen:9,opci:10,registramo:1,"dise\u00f1ado":10,file:[],logo:[5,4],mover:[5,9,1],originalment:5,muestra:[5,10],leer:4,directament:[5,1],movimiento:[9,1,10],involucra:1,cuenta:[2,5],derecha:[5,9,1],reposando:1,significativo:3,componen:4,perfil:2,"podr\u00eda":8,parecida:10,podemo:10,parecido:8,you:[],set_scen:10,imag:4,frecuencia:1,draw:10,rasgo:[5,10],asadetri:[5,0],publicar:1,docstr:4,representan:9,optar:10,siguient:[5,9,1],"eliminaci\u00f3n":1,representar:10,important:[5,4,9,10],modelo:9,aternar:1,debe:[5,8,9,10],determinada:[5,7,1],grupo:5,auxiliar:3,debian:1,elemento:4,update_matrix_putting_a_new_piec:[],logra:[6,1],mensaj:[8,7,4,10,1],manten:10,util:[4,3],"organizaci\u00f3n":1,space:[5,1],mask:[8,9],cuanta:6,preliminar:9,izquierda:[5,9,1],"p\u00e1gina":[0,3],simplement:6,escap:[5,1],estrictament:4,decision:10,encuenta:6},titles:["Asadetris","Tareas
y
etapas","Alcance del proyecto","M\u00f3dulos","Estilo de
programaci\u00f3n","Documento de dise\u00f1o","Dise\u00f1o de la etapa
5","Dise\u00f1o de la etapa 4","Dise\u00f1o de la etapa 3","Dise\u00f1o de
la etapa 2","Dise\u00f1o de la etapa
1","Integrantes"],modules:{},descrefs:{"lib.utils":{load_images:[3,0]}},filenames:["index","tareas_y_etapas","alcance","modules","estilo","documento_de_diseno","diseno_etapa_5","diseno_etapa_4","diseno_etapa_3","diseno_etapa_2","diseno_etapa_1","integrantes"]})
=======================================
--- /doc/build/html/tareas_y_etapas.html Sun Oct 18 17:31:18 2009
+++ /doc/build/html/tareas_y_etapas.html Sun May 23 10:58:24 2010
@@ -10,7 +10,7 @@
<link rel="stylesheet" href="_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
- URL_ROOT: '',
+ URL_ROOT: '#',
VERSION: '0.1',
COLLAPSE_MODINDEX: false,
FILE_SUFFIX: '.html',
@@ -167,22 +167,19 @@
: Aquí se implementan la creación de lineas y la asignación de puntaje.
[X] permitir que el usuario pueda hacer lineas
[X] hacer que las piezas bajen a una determinada velocidad.
- [X] implementar un contador del lineas
+ [X] implementar un contador de lineas
[X] imprimir un mensaje de GameOver cuando llega a la parte superior.

-
Siguientes etapas
=================

-
-
[_] % Etapa 6
- [_] permitir que el usuario use el mouse para seleccionar en el menu.
+ [X] permitir que el usuario use el mouse para seleccionar en el menu.
[_] crear la escena de ayuda explicando los controles.
[_] crear la escena de configuración del juego
[_] opción para des/habilitar sonidos
[_] opción para des/habilitar musica
- [_] alternar entre ventana y pantalla completa.
+ [X] alternar entre ventana y pantalla completa.
[_] selección del tema visual a utilizar.
[_] administrar los puntajes del juego
[_] crear escena para mostrar los puntajes de los mejores jugadores
@@ -243,7 +240,7 @@
</div>
<div class="footer">
&copy; Copyright 2009, Losersjuegos.
- Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.1.
+ Creado con <a href="http://sphinx.pocoo.org/">Sphinx</a> 0.6.5.
</div>
</body>
</html>
=======================================
--- /lib/credits_scene.py Sat Dec 26 11:39:50 2009
+++ /lib/credits_scene.py Sun May 23 10:58:24 2010
@@ -10,7 +10,7 @@
def __init__(self, director):
scene.Scene.__init__(self, director)

- self.title , self.title_rect =
utils.load_images("creditscene/title.png")
+ self.background, rect =
utils.load_images("creditscene/background.png")
self.font = utils.load_font("FreeSans.ttf", 25)

self.authors = ["Hugo Ruscitti", "Juanxo", "Dokan", "lacabra25", \
@@ -23,10 +23,8 @@
pass

def on_draw(self, screen):
- self.title_rect.x = screen.get_width() / 2 - self.title_rect.width
/ 2
- self.title_rect.y = 10;
- screen.blit(self.title, self.title_rect)
- pos_y = self.title_rect.bottom + 50
+ screen.blit(self.background, (0, 0))
+ pos_y = 100
for author in self.rendered_authors:
pos_x = screen.get_width() / 2 - author.get_rect().width / 2
screen.blit(author, (pos_x, pos_y))

==============================================================================
Revision: 044c360990
Author: Hugo Ruscitti <hugoru...@gmail.com>
Date: Sun May 23 11:12:11 2010
Log: creando parametro de configuracion para que la rotacion animada de
piezas sea opcional.
http://code.google.com/p/asadetris/source/detail?r=044c360990

Modified:
/lib/config.py
/lib/piece.py

=======================================
--- /lib/config.py Sat Aug 8 18:03:18 2009
+++ /lib/config.py Sun May 23 11:12:11 2010
@@ -1,3 +1,4 @@
# -*- encoding: utf-8 -*-
LEFT_CORNER = 223
TOP_CORNER = 97
+ANIMATE_PIECES = False
=======================================
--- /lib/piece.py Sat Dec 26 18:29:31 2009
+++ /lib/piece.py Sun May 23 11:12:11 2010
@@ -4,6 +4,7 @@
import os
from config import LEFT_CORNER, TOP_CORNER
import random
+import config


class Group(pygame.sprite.GroupSingle):
@@ -214,9 +215,15 @@
if self.board.can_put_this_piece_here(row, col,
posible_next_matrix):
last_frame = self.frame_index
next_frame = (self.frame_index + delta) % 4
- self.start_animation(last_frame, next_frame)
- self.frame_index = next_frame
- self.set_frame(self.frame_index)
+
+ if config.ANIMATE_PIECES:
+ self.start_animation(last_frame, next_frame)
+ self.frame_index = next_frame
+ self.set_frame(self.frame_index)
+ else:
+ self.frame_index = next_frame
+ self.set_frame(self.frame_index)
+ self.set_animation_frame(next_frame * 3)
else:
print "Evitando rotar, la pieza no tiene espacio para girar."


==============================================================================
Revision: 8aada7c97e
Author: Hugo Ruscitti <hugoru...@gmail.com>
Date: Sun May 23 13:05:52 2010
Log: mejorando la escena de juego, colocando mensajes al inicio de la
partida y cuando el usuario pierde.
http://code.google.com/p/asadetris/source/detail?r=8aada7c97e

Added:
/images/gamescene/are_you_ready.png
/images/gamescene/game_over.png
/images/gamescene/go.png
/lib/game_scene_messages.py
Modified:
/doc/etapas.otl
/doc/source/diseno_etapa_5.rst
/lib/board.py
/lib/game_scene.py

=======================================
--- /dev/null
+++ /images/gamescene/are_you_ready.png Sun May 23 13:05:52 2010
Binary file, no diff available.
=======================================
--- /dev/null
+++ /images/gamescene/game_over.png Sun May 23 13:05:52 2010
Binary file, no diff available.
=======================================
--- /dev/null
+++ /images/gamescene/go.png Sun May 23 13:05:52 2010
@@ -0,0 +1,38 @@
+‰PNG
+
+
+IHDR ð Œ Bµ$( sRGB ®Î
+é bKGD ÿ ÿ ÿ ½§“
pHYs .# .# x¥?v tIME Ú - °Á‡( —IDATxÚíÝ[¨ U ÀñÿQ ¥GË®^z°‹EXž
+<e¡ * •RÏ= • QTÐC½Zv{ ‚$Í4 à Á Ì²HJº •hv4ƒ<š·$íaV ¶f»÷ì™íšãÿ ûá,ö¬õ =ëÛ3kϬ5
I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$Iê˜.? F ³ i@/0 ô C ½À
+` Ø l ¯µÀ/ ÇÖ Ì
+±M &„¸º€}@?° ø X
+¬swêd1 X
+ Ž x
+ Ö O — × `^HÌVcú ˜ Œ,1žX;ƒ¹>%® XS0ió^ Ë€ëÚŒí6`[ ñl æ˜À l
+ •œ¼etžaÀ‚
+bY ê6 UkC€W tô}À ÀcÀõÀ¥À9¡ó Æ
+ñèÝ!)¾/1 ‡ K Ô÷-ð4p#0
+8
+Æé3€'€¯ l¿ è6 Ug svô^àYàÌ uN ^ ?pµÓy^ˉm pG õÜÒ`Üüº ¬ºº'g'¯ GÖv
+GÁý :Ïý9±½ œV0–wsê|À VÝ\ ü ÙÁï ýÚ[¦óCò´òþXl+Û
+· ÍIâ}À &°êdIdç~G¹—YŠZ
+‰m[Á#ï±F [#õ/1 U —“]«ýïŽ= LM ¶É‘ØŽ ·–ØÆÍį]O6 U /Fv웉Äö|
$¶÷+hgU¤ &°R7 Ø Ù±7$ [ °3 ÛÜ
+Úš ig'­ÝBk «ã¦EvêæDbëËIªî
+ÚêÎù²˜j ž#Õ`4=Röq"±Íˆ”­ ãó²
+ >l2 ™Àɸ*R¶>‘Ø®ìplë›ü|d 'ã¢HÙ—‰Ä ›¹ôE
+í}
+)›d×7 Sv^¤lW±U9¯¸¿É 1 ý]dÌšr}&p ÆDÊ ‰íŒHÙî
+ÛÛÝäç“gï1 ïi3žÔë3 0¢Ä$){Jሠ¹ 4 C³Û ”
+Ojõ™Àjû4°LG"e­\ Þ]r‚¤^Ÿ œ€ ‘²Ó ‰í`›§´eœ² 0 Mà”
+t8IZñ{‡c ÓæpÂSh ¸ã~Ž” ]°®®ã¼Zµ=R6¾ÂÏb\“1x 6 “ñC¤,•› b·tV9Cjj“1x 6 “±!Rvu±õUØ^¬îVnjñ ¬Ž»–ÿ_ÚÙTQ[­^FŠM´ØAû«GÆ u Û^Ÿ]D©ŸYü é¸3 H༩ŽUL'œ içW¼|
¨ x)Òy % À _l S ú_°k¨ ¦D:ÿcV‘ îÍÙ® Kê\f×P]¼ éÄßPE'”/£ºEíF _Ôn©]Bu’·¬ìÛÀ©'8 'ñïZÒ XVv?ñi–RÒîÍI²µÀ¹'0
+ÌÙ~%ÙÒ°­ê VäÔ9ï ü u¬O Ê{´Ê ð ñû
+› Ç..¡ -"ÿQ¡··8æÝ”S× ƒ8áLà“@3 7[ <Jv©é à¬p::2
+©{ »€çhü0±V;Ðð GÍ ÆìO’=tmlx wˆi:ð8ðUƒíW„mL`ÕÞÃd¿DWõhÑ
+!ÑZÕ}œ/˜¢¯Wi µK XI¹‚l¥Æ2 e+p íß q'Ùò:íÆÓ Î Ê` +I3 ådós‹$ÉA²g
+ÝD¹w6õ ó Ä´ x„ì2 &ðà×e
+3 ˜Mvÿt/01Œ5{È.ç
+"[g©Ÿl–ÓFà à£0v®Ò4` p
+Ùe§ !.BÛ;Â WŸ «C\
+ $I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$I’$IRgý
++üÿ0
+O=¹ IEND®B`‚
=======================================
--- /dev/null
+++ /lib/game_scene_messages.py Sun May 23 13:05:52 2010
@@ -0,0 +1,88 @@
+# -*- encoding: utf-8 -*-
+import pygame
+import scene
+import utils
+import pytweener
+import board
+import piece
+import display
+
+class GameSceneMessage:
+ "Representa un mensaje dentro de la escena Game."
+
+ def __init__(self, game):
+ self.game = game
+ self.tweener = pytweener.Tweener()
+ self.timer = 0
+ pass
+
+ def on_update(self):
+ self.timer += 1
+ self.tweener.update(0.01)
+
+
+class AreYouReadyMessage(GameSceneMessage):
+
+ def __init__(self, game):
+ GameSceneMessage.__init__(self, game)
+ self.graphic_message, self.rect =
utils.load_images('gamescene/are_you_ready.png')
+ self.x = - 100
+ self.rect.y = 200
+ self.tweener.addTween(self, x=200, tweenTime=0.3,
+ tweenType=pytweener.Easing.Elastic.easeOut)
+ game.pause()
+
+ #self.unpause_and_start_to_play()
+
+ def on_update(self):
+ GameSceneMessage.on_update(self)
+
+ if self.timer > 50:
+ self.game.show_graphic_message(GoMessage(self.game))
+
+ def on_draw(self, screen):
+ self.rect.x = self.x
+ screen.blit(self.graphic_message, self.rect)
+
+
+class GoMessage(GameSceneMessage):
+
+ def __init__(self, game):
+ GameSceneMessage.__init__(self, game)
+ self.graphic_message, self.rect =
utils.load_images('gamescene/go.png')
+ self.x = - 100
+ self.rect.y = 200
+ self.tweener.addTween(self, x=200, tweenTime=0.3,
+ tweenType=pytweener.Easing.Elastic.easeOut)
+
+ def on_update(self):
+ GameSceneMessage.on_update(self)
+
+ if self.timer > 50:
+ self.game.unpause_and_start_to_play()
+ self.game.show_graphic_message(None)
+
+ def on_draw(self, screen):
+ self.rect.x = self.x
+ screen.blit(self.graphic_message, self.rect)
+
+
+class GameOverMessage(GameSceneMessage):
+
+ def __init__(self, game):
+ GameSceneMessage.__init__(self, game)
+ game.pause()
+ self.graphic_message, self.rect =
utils.load_images('gamescene/game_over.png')
+ self.x = - 100
+ self.rect.y = 200
+ self.tweener.addTween(self, x=200, tweenTime=0.3,
+ tweenType=pytweener.Easing.Elastic.easeOut)
+
+ def on_update(self):
+ GameSceneMessage.on_update(self)
+
+
+
+ def on_draw(self, screen):
+ self.rect.x = self.x
+ screen.blit(self.graphic_message, self.rect)
=======================================
--- /doc/etapas.otl Fri Jan 1 16:36:30 2010
+++ /doc/etapas.otl Sun May 23 13:05:52 2010
@@ -4,21 +4,24 @@
: Note que este archivo se modifica con frecuencia, en este momento
: no está completo.

-[_] 38% Etapa 5 (actual)
+☐ 38% Etapa 5 (actual)
: Se agregan mejoras como las animaciones
- [X] mostrar la siguiente pieza que va a caer.
- [X] aumentar la velocidad de caída cuando completa mas de 10 lineas.
- [_] crear presentacion del juego
- [_] mejorar la escena de creditos
- [_] cambiar el tema visual de las piezas
- [_] crear efectos visuales en la transición entre escenas
- [_] Colocar sonidos
- [_] crear animación a la eliminación de lineas
- [X] aplicar animaciones a la rotación de las piezas
- [X] permite aternar entre pantalla completa y ventana.
- [X] soporte para jugar con joystick.
- [_] probar en otros sistemas operativos como windows.
- [_] genera version ejecutable en formato .exe
+ ☑ mostrar la siguiente pieza que va a caer.
+ ☑ aumentar la velocidad de caída cuando completa mas de 10 lineas.
+ ☐ crear presentacion del juego
+ ☑ mejorar la escena de creditos
+ ☐ cambiar el tema visual de las piezas
+ ☐ crear efectos visuales en la transición entre escenas
+ ☐ Colocar sonidos
+ ☐ crear animación a la eliminación de lineas
+ ☑ aplicar animaciones a la rotación de las piezas
+ ☑ permite aternar entre pantalla completa y ventana.
+ ☑ soporte para jugar con joystick.
+ ☐ probar en otros sistemas operativos como windows.
+ ☐ genera version ejecutable en formato .exe
+ ☑ mejorar la escena de juego
+ ☑ crear un mensaje al inicio que diga "listo, ya!!"
+ ☑ mostrar un mensaje de game over con una imagen



@@ -26,7 +29,7 @@
=================


-[X] 100% Etapa 1
+☑ 100% Etapa 1
: El propósito de esta etapa es tener una ventana principal con
: un fondo de pantalla y una leyenda de texto. El usuario tiene
: que poder cerrar la ventana pulsando una tecla o haciendo click
@@ -36,25 +39,25 @@
: con la organización del proyecto, la documentación, los directorios y
: las funciones iniciales.

- [X] crear repositorio
- [X] definir la estructura de directorios a utilizar
- [X] crear el directorio 'doc' con la documentación en formato sphinx
- [X] crear una ventana
- [X] gestionar los eventos de mouse y teclado
- [X] crear el sistema de escenas básico
- [X] explicar la estrategia a desarrollar
- [X] mejorar el programa principal
- [X] crear la escena abstracta
- [X] crear una escena de implementación (presentación)
- [X] crear función para cargar imagenes
- [X] mostrar una imagen con el titulo del juego.
- [X] definir un archivo setup.py inicial
- [X] publicar URL de la documentación en el foro
- [X] 100% desarrollar un sistema de fuentes tipograficas
- [X] crear función para cargar e imprimir fuentes
- [X] mostrar el mensaje "pulse una tecla para salir" en la pantalla
principal.
- [X] proponer un estilo de codificación
-[X] 100% Etapa 2
+ ☑ crear repositorio
+ ☑ definir la estructura de directorios a utilizar
+ ☑ crear el directorio 'doc' con la documentación en formato sphinx
+ ☑ crear una ventana
+ ☑ gestionar los eventos de mouse y teclado
+ ☑ crear el sistema de escenas básico
+ ☑ explicar la estrategia a desarrollar
+ ☑ mejorar el programa principal
+ ☑ crear la escena abstracta
+ ☑ crear una escena de implementación (presentación)
+ ☑ crear función para cargar imagenes
+ ☑ mostrar una imagen con el titulo del juego.
+ ☑ definir un archivo setup.py inicial
+ ☑ publicar URL de la documentación en el foro
+ ☑ 100% desarrollar un sistema de fuentes tipograficas
+ ☑ crear función para cargar e imprimir fuentes
+ ☑ mostrar el mensaje "pulse una tecla para salir" en la pantalla
principal.
+ ☑ proponer un estilo de codificación
+☑ 100% Etapa 2
: Se desarrollan los movimientos básicos de las piezas, el usuario
: tiene que poder mover una pieza por la pantalla usando los
: direccionales del teclado y rotar las mismas con las teclas 'x' y
@@ -69,22 +72,22 @@

: Hay solo un tipo de pieza (la "L").

- [X] Extender el sistema de fuentes
- [X] crear un directorio para recursos de fuentes tipograficas
- [X] que la función de imprimir cadenas soporte saltos de linea.
- [X] crear escena de juego
- [X] crear una ficha
- [X] permitir el movimiento de la ficha
- [X] aplicar restricciones de movimiento como los bordes
- [X] colisiones sencillas con el centro de la pieza.
- [X] colisiones logradas con los bordes.
- [X] implementar las rotaciones hacia izquiera o derecha
- [X] restringir las rotaciones en los bordes
- [X] mejorar el sistema de escenas para permitir cambios de una a otra
- [X] hacer que el usuario pueda ir a otra escena (la de la etapa anterior)
pulsando la tecla ESC.
- [X] Imprimir un mensaje que indique esto en la ventana.
- [X] Asignar el cambio a la tecla ESCAPE.
-[X] 100% Etapa 3
+ ☑ Extender el sistema de fuentes
+ ☑ crear un directorio para recursos de fuentes tipograficas
+ ☑ que la función de imprimir cadenas soporte saltos de linea.
+ ☑ crear escena de juego
+ ☑ crear una ficha
+ ☑ permitir el movimiento de la ficha
+ ☑ aplicar restricciones de movimiento como los bordes
+ ☑ colisiones sencillas con el centro de la pieza.
+ ☑ colisiones logradas con los bordes.
+ ☑ implementar las rotaciones hacia izquiera o derecha
+ ☑ restringir las rotaciones en los bordes
+ ☑ mejorar el sistema de escenas para permitir cambios de una a otra
+ ☑ hacer que el usuario pueda ir a otra escena (la de la etapa anterior)
pulsando la tecla ESC.
+ ☑ Imprimir un mensaje que indique esto en la ventana.
+ ☑ Asignar el cambio a la tecla ESCAPE.
+☑ 100% Etapa 3
: En esta etapa ya se puede comenzar a apilar fichas. El usuario tiene
: que poder hacer bajar una pieza, que permanezca en el suelo y que
: llegue otra nueva para poder mover.
@@ -97,36 +100,37 @@

: No se pueden hacer lineas en esta versión, solamente apilar.

- [X] Detener piezas cuando llegan abajo
- [X] Crear nuevas piezas cuando deja una en el suelo
- [X] Implementar colisiones entre las piezas
- [X] Crear las piezas que faltan.
- [X] Mostrar las piezas aleatoriamente.
- [X] Permitir que el usuario pueda bajar una pieza directamente (y no
progresivamente)
+ ☑ Detener piezas cuando llegan abajo
+ ☑ Crear nuevas piezas cuando deja una en el suelo
+ ☑ Implementar colisiones entre las piezas
+ ☑ Crear las piezas que faltan.
+ ☑ Mostrar las piezas aleatoriamente.
+ ☑ Permitir que el usuario pueda bajar una pieza directamente (y no
progresivamente)
: se agrega la tecla SPACE al control del juego.
- [X] Mostrar las piezas reposando si tocan el suelo
+ ☑ Mostrar las piezas reposando si tocan el suelo
: primero mostrar rectangulos de cualquier color en donde
: existe una colisión. Luego se puede pintar la pieza tal y
: como es.
-[X] 100% Etapa 4
+☑ 100% Etapa 4
: Aquí se implementan la creación de lineas y la asignación de puntaje.
- [X] permitir que el usuario pueda hacer lineas
- [X] hacer que las piezas bajen a una determinada velocidad.
- [X] implementar un contador de lineas
- [X] imprimir un mensaje de GameOver cuando llega a la parte superior.
+ ☑ permitir que el usuario pueda hacer lineas
+ ☑ hacer que las piezas bajen a una determinada velocidad.
+ ☑ implementar un contador de lineas
+ ☑ imprimir un mensaje de GameOver cuando llega a la parte superior.

Siguientes etapas
=================

-[_] % Etapa 6
- [X] permitir que el usuario use el mouse para seleccionar en el menu.
- [_] crear la escena de ayuda explicando los controles.
- [_] crear la escena de configuración del juego
- [_] opción para des/habilitar sonidos
- [_] opción para des/habilitar musica
- [X] alternar entre ventana y pantalla completa.
- [_] selección del tema visual a utilizar.
- [_] administrar los puntajes del juego
- [_] crear escena para mostrar los puntajes de los mejores jugadores
- [_] crear escena para quien logra un puntaje muy bueno
- [_] crear paquete .deb para distribuciones como Debian y Ubuntu.
+☐ % Etapa 6
+ ☑ permitir que el usuario use el mouse para seleccionar en el menu.
+ ☐ crear la escena de ayuda explicando los controles.
+ ☐ crear la escena de configuración del juego
+ ☐ opción para des/habilitar sonidos
+ ☐ opción para des/habilitar musica
+ ☑ alternar entre ventana y pantalla completa.
+ ☒ selección del tema visual a utilizar.
+ : No se ve necesario utilizar varios temas.
+ ☐ administrar los puntajes del juego
+ ☐ crear escena para mostrar los puntajes de los mejores jugadores
+ ☐ crear escena para quien logra un puntaje muy bueno
+ ☐ crear paquete .deb para distribuciones como Debian y Ubuntu.
=======================================
--- /doc/source/diseno_etapa_5.rst Thu Sep 17 04:03:39 2009
+++ /doc/source/diseno_etapa_5.rst Sun May 23 13:05:52 2010
@@ -5,12 +5,11 @@
-------------------

Cuando el usuario realiza 10 lineas buscamos que el juego aumente
-de velocidad. Esto se logra mediante la interacción de los
-objectos `Display`, `Game` y `Piece`.
+de velocidad. Esto se logra mediante la interacción de los objectos
`Display`, `Game` y `Piece`.

Básicamente quien coordina la velocidad del juego es la clase
`Game`. Mientras el usuario está jugando el objeto `Game` almacena
-en su atributo `speed` la velocidad que le tiene que asignar
+en su atributo `speed` la veocidad que le tiene que asignar
a cada pieza que genera. Este atributo de velocidad depende de
lo que le diga la clase `Display`, que conoce cuantas lineas
del juego a realiza el usuario y en qué nivel se encuenta.
@@ -21,3 +20,34 @@

nivel = lineas / 10

+
+Mensajes dentro del juego como subscenes
+----------------------------------------
+
+Mientras estás jugando es importante que el juego que
+marque claramente cuando pierdes o comienza el nivel.
+
+Por eso, se ha creado la posibilidad de que la clase
+``game`` pueda presentar distintos mensajes durante la
+sesión de juego. Por ejemplo, cuando se inicia el
+juego se presenta un mensaje de tipo ``listo... ya!!`` para
+indicar que el juego ha comenzado.
+
+Los mensajes se han incoporado como objetos dentro
+del modulo ``game_scene_messages``.
+
+Cuando el objeto ``GameScene`` quiere mostrar un mensaje, solo
+tiene que llamar al método ``show_graphic_message`` y pasarle
+como argumento la instancia de un objeto del módulo
+``game_scene_messages``. Por ejemplo, cuando se inicia el
+juego.
+
+
+Algo similar ocurre cuando el jugador pierde. Simplemente se
+llama al método ``on_game_over`` de la clase ``GameScene`` y
+desde ahí se invoca a la siguiente sentencia.
+
+.. code-block:: python
+
+ def on_game_over(self):
+
self.show_graphic_message(game_scene_messages.GameOverMessage(self))
=======================================
--- /lib/board.py Sun Oct 4 14:06:40 2009
+++ /lib/board.py Sun May 23 13:05:52 2010
@@ -99,9 +99,7 @@
self.check_lines()

if 1 == row:
- print 'Game Over?'
- self.gamescene.pause()
- self.gamescene.show_message('Game Over?')
+ self.gamescene.on_game_over()
return False

def go_to_next_piece(self):
=======================================
--- /lib/game_scene.py Sat Dec 26 11:39:50 2009
+++ /lib/game_scene.py Sun May 23 13:05:52 2010
@@ -2,9 +2,11 @@
import pygame
import scene
import utils
+import pytweener
import board
import piece
import display
+import game_scene_messages


class GameScene(scene.Scene):
@@ -14,6 +16,7 @@

def __init__(self, director):
scene.Scene.__init__(self, director)
+ self.graphic_message = None
self.running = True
self.current_message = None
self.current_message_rect = None
@@ -22,8 +25,13 @@
self.background, tmp =
utils.load_images("gamescene/background.png")
self.pieces = piece.Group()
self.game_speed = 0
- self.go_to_next_piece()
self.create_return_message()
+
self.show_graphic_message(game_scene_messages.AreYouReadyMessage(self))
+
+ def unpause_and_start_to_play(self):
+ self.running = True
+ self.go_to_next_piece()
+

def create_return_message(self):
font = utils.load_font("FreeSans.ttf", 14)
@@ -33,6 +41,8 @@
def on_update(self):
self.board.update()
self.pieces.update()
+ if self.graphic_message:
+ self.graphic_message.on_update()

def on_draw(self, screen):
screen.blit(self.background, (0, 0))
@@ -40,6 +50,9 @@
self.pieces.draw(screen)
self.board.draw(screen)
screen.blit(self.return_message, (8, 460))
+
+ if self.graphic_message:
+ self.graphic_message.on_draw(screen)

if self.current_message:
x = ( 640 - self.current_message_rect.w ) / 2
@@ -97,3 +110,12 @@
def show_message(self, text):
font = utils.load_font("FreeSans.ttf", 14)
self.current_message, self.current_message_rect =
utils.render_text(text, font)
+
+ def show_graphic_message(self, message_object):
+ """Muestra un mensaje a partir de una imagen.
+
+ Detiene el juego hasta que el mensaje desaparece de la escena."""
+ self.graphic_message = message_object
+
+ def on_game_over(self):
+
self.show_graphic_message(game_scene_messages.GameOverMessage(self))

--
Has recibido este mensaje porque estás suscrito al grupo "losersjuegos-alerts" de Grupos de Google.
Para publicar una entrada en este grupo, envía un correo electrónico a losersjue...@googlegroups.com.
Para anular tu suscripción a este grupo, envía un correo electrónico a losersjuegos-al...@googlegroups.com
Para tener acceso a más opciones, visita el grupo en http://groups.google.com/group/losersjuegos-alerts?hl=es.

Reply all
Reply to author
Forward
0 new messages