32diseño


 * Fishdom: ** es un divertido juego en el que se unen piezas iguales, al estilo Jewels, hasta vaciar un tablero.

Con cada tablero resuelto se reciben créditos, los cuales se invierten en construir y personalizar una propia pecera virtual, que una vez terminada, se podrá usar como salvapantallas.

Para dicho proyecto fue importante el uso de varios componentes de Phyton y paquetes del Swampy y el Tk Inter. Habitualmente las acciones se realizan mediante manipulación directa para facilitar la interacción del usuario con la computadora. Surge como evolución de la línea de comandos de los primeros sistemas operativos y es pieza fundamental en un entorno gráfico. Como ejemplo de interfaz gráfica de usuario podemos citar el entorno de escritorio del sistema operativo Windows, el X-Windows de Linux o el de Mac OS X, Agua. En el contexto del proceso de interacción persona-ordenador, la interfaz gráfica de usuario es el artefacto tecnológico de un sistema interactivo que posibilita, a través del uso y la representación del lenguaje visual, una interacción amigable con un sistema informático. La historia reciente de la informática está indisolublemente unida a las interfaces gráficas, puesto que los sistemas operativos gráficos han ocasionado grandes consecuencias en la industria del software y del hardware.
 * La** **interfaz gráfica de usuario**: conocida también como GUI (del graphical user interface) es un tipo de interfaz de usuario que utiliza un conjunto de imágenes y objetos gráficos para representar la información y acciones disponibles en la interfaz.

Las interfaces gráficas surgen de la necesidad de hacer los ordenadores más accesibles para el uso de los usuarios comunes. La mayoría de ordenadores domesticos requerían conocimientos de BASIC (el 95% de ellos mostraban el intérprete BASIC al encenderse) u ofrecían una interfaz de línea de órdenes (como los sistemos operativos CP/M o los diferentes OS del Apple II), lo que requería conocimientos por encima de la media si se deseaba hacer algo más que usarlo como consola de videojuegos. Esta limitación fue salvada gracias al desarrollo de los entornos gráficos, que permitieron que las personas pudieran acceder a un ordenador sin tener que pasar por el tortuoso proceso de tener que aprender a manejar un entorno bajo línea de órdenes.
 * Definición de GUI ****:** conjunto de formas y métodos que posibilitan la interacción de un sistema con los usuarios utilizando formas gráficas e imágenes. Con formas gráficas se refiere a botones, íconos, ventanas, fuentes, etc. los cuales representan funciones, acciones e información.

Es una evolución de la línea de comandos tradicional (CLI) de los primeros sistemas operativos como la familia de sistemas DOS (como MS-DOS). Por ejemplo, el escritorio de Windows es un GUI.

Para usar el control //Canvas// se define una clase derivada que redefina la función //paint//. En primer lugar, hemos de traer la información referente a la clase //Canvas// mediante la sentencia "import**"****.** Ejemplo: //>>> Lista = ["a", "b", "alfa", "beta", "3"]// Hoy en día hay otras alternativas disponibles como wxPython, PyQt, y PyGTK que cumplen con todos los estandares de componente visual.
 * Un control //Canvas//**//:// es un control apropiado para dibujar en su superficie. El control //Canvas// define la función //paint// que pinta su superficie con el color de fondo.
 * Listas:** son la esencia de Python, se podrían definir como una secuencia ordenada de elementos encerrados entre corchetes y separados por comas.
 * Tkinter**: es un binding de la biblioteca gráfica Tcl/Tk para el lenguaje de programación Python. Se considera un estándar del GUI para Python y es el que viene por defecto con la instalación para Windows.

Para llevar a cabo la solución se pretende crear funciones. Estas funciones tendrán repeticiones y así se tendrán ciclos que realicen los movimientos del juego una y otra vez. Se utilizarán muchas variables. Tablero, vector, tableroDIB, vector, Jugadas, color, h, v, hh, vv, temporal2, tablero[h1][v1], tablero[h2][v2], apachado, h2, v2, red, yellow, green, black, organe, sky, w, o, n, Entre los objetos que utilizaremos están unos cuadros de colores, para simular las figuras que se tienen que jugar para así jugar y también tres letras, “W”, “O” y “N”. Éstas últimas para mostrar cuando el jugador haya ganado. Se usarán objetos que estén asignados con la misma variable (cinco objetos), una vez hayan tres de éstos objetos iguales en línea horizontal o vertical se procederá a borrarlos. Para que éstos objetos se borren debe estar la condición que sólo se pueden mover aquellos objetos que vayan a quedar junto a otros, por lo menos dos, iguales. Para poder hacer todo esto se necesita de una variable que recorra horizontalmente y verticalmente la matriz. Para esto se necesita de una matriz y un módulo de python que asigne objetos al azar en el tablero. También se necesita de una función que vaya verificando si están juntos tres objetos y si es así los borre y asigne nuevamente objetos. También se necesita una función que vaya llamando a los objetos para ser pegados y así tener una vista de lo que pase y que eso sea amigable. Se importó el módulo random, se usó cuando se tenían espacios en blanco, es decir, que habían sido borrados porque se había completado una línea o un caracter. Entonces se seleccionaba y éste daba un número, ya que se usó randint, entre 0 y 4 y se asignaba un color/valor a cada número así cuando algún número aparecía de una vez se asignaba un color/valor y así era posible que el juego tuviera, al azar, los mismos caracteres y se pudiera completar. También el módulo Gui Tkinter para poder mostrar una interfaz gráfica y que ahí aparecieran las imágenes importadas y ahí se pudiera realizar el juego. Se utilizaron varias funciones, entre ellas Colores: en esta función se utilizó el random.randint, el cual asigna a las variables un número y luego da el número al azar para que así, al azar, salgan los colores de los cuadrados. No recibe parámetro alguno. Plataforma: esta función es la que recorre toda la matriz horizontal y verticalmente y asigna los colores. Recibe como parámetro a la matriz. Eliminar: esta función verifica si las casillas que están alrededor de ella son iguales y si sí lo son entonces los eliminará y asignará un valor “c” en la casilla para demostrar que está vacía. También recibe como parámetro la matriz. Apilar: esta función revisa qué casillas están vacías y si están vacías las manda para arriba y baja los valores que estaban en un principio arriba. Recibe como parámetro la matriz Completar: esta función asigna colores a las casillas que están vacías y que han sido enviadas hacia arriba llamando a la función colores. Su parámetro es la matriz. Probar: esta función va verificando sí ha logrado quitar filas de columnas o de líneas y cuantas jugadas lleva. Cuando ha logrado quitar 10 grupos de 3 figuras iguales entonces se muestra en el tablero la palabra “won” para indicar que el usuario ha ganado. Recibe como parámetro la matriz y las posiciones de los objetos. Demostrar: esta función mira el número de click, en la primera guardará los valores ingresados y el segundo guarda también los valores y luego llama a la función de probar que es la encargada de hacer el resto del juego. También llama a la función de pintar. Los parámetros son las casillas. Pintar: esta función no recibe parámetro alguno. Lo que hace es llamar a las imágenes y las coloca en el tablero.
 * ¿Cómo llevar a cabo la solución? Variables y objetos a usar**
 * Narración de la solución**
 * Módulos de Python usados y cómo se usaron**
 * Funciones utilizadas para qué y cuáles eran sus parámetros**


 * 1) Proyecto3.py
 * 2) Hugo Pivaral, Ana Basso, Alejandro Ordoñez
 * 3) El objetivo de este proyecto es que el usuario ponga tres cajas del mismo color en una
 * 4) línea horizontal o vertical y así porder eliminarlos.
 * 5) 9/11/09
 * 1) 9/11/09

from Gui import* import random

g=Gui

tablero=[[1 for col in range(11)] for row in range(11)] tableroDIB=[[1 for col in range(11)] for row in range(11)] #el DIB es la matriz de los botones

vector=[1 for col in range(11)]

Jugadas=0

color=''

def colores: '''en esta función se utilizó el random.randint, el cual asigna a las variables un número y luego da el número al azar para que así, al azar, salgan los colores de los cuadrados. No recibe parámetro alguno. ''' global color tamporal=random.randint(0,4) if (tamporal==0): color='r' if (tamporal==1): color='a' if (tamporal==2): color='v' if (tamporal==3): color='n' if (tamporal==4): color='b'

def plataforma(tablero): '''esta función es la que recorre toda la matriz horizontal y verticalmente y asigna los colores. Recibe como parámetro a la matriz. ''' global color h=1 while (h<10): v=1 while (v<10): colores tablero[h][v]=color v=v+1 h=h+1

def eliminar(tablero): '''Esta función verifica si las casillas que están alrededor de ella son iguales y si sí lo son entonces los eliminará y asignará un valor “c” en la casilla para demostrar que está vacía. También recibe como parámetro la matriz.''' h=1 while (h<10): v=1 while (v<10): color2=tablero[h][v] hh=h while ((hh+1<10) and (tablero[hh+1][v]==color2)): hh=hh+1 if ((hh-h)>=2): hh=h while ((hh+1<10) and (tablero[hh][v]==color2)): tablero[hh][v]='c' hh=hh+1 else: vv=v while ((vv+1<10) and (tablero[h][vv+1]==color2)): vv=vv+1 if ((vv-v)>=2): vv=v while ((vv+1<10) and (tablero[h][vv]==color2)): tablero[h][vv]='c' vv=vv+1 v=v+1 h=h+1

def apilar(tablero): '''Esta función revisa qué casillas están vacías y si están vacías las manda para arriba y baja los valores que estaban en un principio arriba. Recibe como parámetro la matriz''' h=1 while (h<10): v=1 contador=1 while (v<10): if (tablero[h][v]<>'c'): vector[contador]=tablero[h][v] contador=contador+1 v=v+1 v=1 while (v'c'): vector[contador]=tablero[h][v] contador=contador+1 h=h+1 h=1 while (h<contador): tablero[h][v]=vector[h] h=h+1 h=contador while (h<10): tablero[h][v]='c' h=h+1 v=v+1

def completar(tablero): '''Esta función asigna colores a las casillas que están vacías y que han sido enviadas hacia arriba llamando a la función colores. Su parámetro es la matriz.''' h=1 while (h<10): v=1 while (v<10): if (tablero[h][v]=='c'): colores tablero[h][v]=color v=v+1 h=h+1

def probar(tablero, h1, v1, h2, v2): '''Esta función va verificando sí ha logrado quitar filas de columnas o de líneas y cuantas jugadas lleva. Cuando ha logrado quitar 10 grupos de 3 figuras iguales entonces se muestra en el tablero la palabra “won” para indicar que el usuario ha ganado. Recibe como parámetro la matriz y las posiciones de los objetos. ''' global Jugadas global w global o global n global tableroDIB temporal2=tablero[h1][v1] tablero[h1][v1]=tablero[h2][v2] tablero[h2][v2]=temporal2 eliminar(tablero) if ((tablero[h1][v1]=='c') or (tablero[h2][v2]=='c')) and Jugadas<100: apilar(tablero) completar(tablero) Jugadas=Jugadas+10 elif (Jugadas<100): temporal2=tablero[h1][v1] tablero[h1][v1]=tablero[h2][v2] tablero[h2][v2]=temporal2 apilar(tablero) completar(tablero) if Jugadas>=100:

letra=1 h=1 while (h<10): v=1 while (v<10): if letra==1: tableroDIB[h][v].config(image=n) elif letra==2: tableroDIB[h][v].config(image=o) elif letra==3: tableroDIB[h][v].config(image=w) letra=0 letra=letra+1 v=v+1 h=h+1

h1=v1=h2=v2=0
 * 1) se inician las variables en cero otra vez, porque si no cambia de valor otra vez

def demostrar(h,v): '''Esta función mira el número de click, en la primera guardará los valores ingresados y el segundo guarda también los valores y luego llama a la función de probar que es la encargada de hacer el resto del juego. También llama a la función de pintar. Los parámetros son las casillas.''' global apachado global h1,v1,h2,v2 global Jugadas print str(apachado) if apachado==False: apachado=True h1=h v1=v print str(h1) print str(v1) else: apachado=False h2=h v2=v print str(h2) print str(v2) probar(tablero, h1, v1, h2, v2) if Jugadas<100: pintar

def pintar: '''Esta función no recibe parámetro alguno. Lo que hace es llamar a las imágenes y las coloca en el tablero. ''' global red,yellow,green,black,orange,sky h=1 while (h<10): v=1 while (v<10): if tablero[h][v]=='r': tableroDIB[h][v].config(image=red) elif tablero[h][v]=='a': tableroDIB[h][v].config(image=yellow) elif tablero[h][v]=='v': tableroDIB[h][v].config(image=green) elif tablero[h][v]=='n': tableroDIB[h][v].config(image=orange) elif tablero[h][v]=='b': tableroDIB[h][v].config(image=black) else: tableroDIB[h][v].config(image=sky) v=v+1 h=h+1

red=PhotoImage(file = 'r.gif') yellow=PhotoImage(file = 'y.gif') green=PhotoImage(file = 'g.gif') black=PhotoImage(file = 'b.gif') orange=PhotoImage(file = 'o.gif') sky=PhotoImage(file = 's.gif')
 * 1) Aquí se puede verificar para cada color y cada letra cual es el nombre del archivo

w=PhotoImage(file = 'W.gif') o=PhotoImage(file = 'Oo.gif') n=PhotoImage(file = 'N.gif')

plataforma(tablero)

apachado=False h=9

while (h>0): v=9 g.fr(side=LEFT) while (v>0): if tablero[h][v]=='r': tableroDIB[h][v]=g.bu(image=red,command=Callable(demostrar,h,v)) elif tablero[h][v]=='a': tableroDIB[h][v]=g.bu(image=yellow,command=Callable(demostrar,h,v)) elif tablero[h][v]=='v': tableroDIB[h][v]=g.bu(image=green,command=Callable(demostrar,h,v)) elif tablero[h][v]=='n': tableroDIB[h][v]=g.bu(image=orange,command=Callable(demostrar,h,v)) elif tablero[h][v]=='b': tableroDIB[h][v]=g.bu(image=black,command=Callable(demostrar,h,v)) else: tableroDIB[h][v]=g.bu(image=sky,command=Callable(demostrar,h,v)) v=v-1 g.endfr h=h-1
 * 1) dibuja la matriz con los botones