VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras...

34
Casaaertaal tiempo \ ic ' ps -z- // I "ANIMACION, DICCIONARIO DE VERBOS MAS USUALES" ~~RFIAS VIUASEÑOR JORGE 84325868 VENTURA DEL CASTILLO ARTURO 83311937 ASESOR: MIGUEL ANGEL GUZMAN i

Transcript of VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras...

Page 1: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

Casaaertaal tiempo \ ic ' ps -z-

// I

"ANIMACION, DICCIONARIO DE VERBOS MAS USUALES"

~ ~ R F I A S VIUASEÑOR JORGE 84325868 VENTURA DEL CASTILLO ARTURO 83311937

ASESOR: MIGUEL ANGEL GUZMAN

i

Page 2: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

. J ,2

MTRODUCCION

La computadora, herramienta que para la mayoría de las personas es "una caja xmlgica". por sus atributos se ha hecho indispensable en la mayoría de las actividades humanas.

La educaddn no es una txcepdbn. encontrando en las computadoras el instrumento de apoyo que reditúa gratos resultados. Un instructor como ser humano, pendiente de un grupo conside- rable, tiene sus Ihnitaciones: de tiempo. estado de Bntmo y de otras limitantes. que a pesar de su afSn de instrutr correctamente algrueso de sus alumnos. hay elementos que son afectados. entre otros factores. por €stas limitaciones del instructor. Aprovechando que una milquina no se cansa d e r e p e t i r l o ~ o v a r l a s v t c e s y n o l e c a n s a u n u s u ~ ~ u l a r . v i e n e a s e r l a s o l u d b n a l o s problemas de aprendizaje de muchos ínstruidos.

La aplacacibn de la computadora como apoyo a la educacfbn se a fomentado mucho. entre los factores ya mencionados. por el atractivo que la computadora con un programa amlgable npresenta para el usuario. cabe mencionar que el uso de una m&quína de este tipo es por sí mismo mattvante. En el caso de la educacfbn espedal. (-ida a aquellas personas que requieren de un m¿todo

de instmcdh diferente al c o ~ o n a l ) . la pobladbn que 8c encuentra M este caso es muy grande y con problemas muyvarlados. en consecuencia requerimentos diferentes.

En el presente trabajo nos limitarrmos a atender una de las necesidades de bs grupos integradas para (de hypos-deficiencia, cústka-sonidos) con la cread6n. de un paquete de apoyo para ejcmpliflcar el uso de los verbos m& usuales por medio de la anímaci6n en computadora..dirI@do a ninos de fntcos grados lo. 20 y 30 de educacidn primaria, tratando de cubrir la mayoh de los perfiles propios de estos niAos. cxumbhdoles de la mejor manera posible en su a p r e n h j e vía una computadora.

Es importante mendonar que en ningún momento se pmtende que la m&quina sea el sustituto del maestro, es fadl de ver que la computadora en cualquier caso es solo una important& herramienta de apoyo para procesos específkos. requiriendo la d i m x ~ n y cstimub del instructor qulcn debe encausar a los ninos en el uso adecuado y sistem&ko del presente paquete. El paquete tiene las siguientes características:

- El usuarlo puede elegir de entre una llsta de ktras del alfabeto una de ellas. - Una vez selecdonada una letra se despliega en pane una lista de verbos ntsponibles con esta ktra. - El usuario selecdona un verbo de la lista. - Inmediatamente se ejecuta la anfmacfbn correspondiente según el verbo. desplegando tambitn la palabra escrita.

- Se repite la animacidn, esnibiendo ahora una oracibn en la que intewenga el verbo seleccionado. - Se despliega UM serie de ejercicios para domar el conocimiento adquirido en cada sesidn. - Si el usuario hace un desarrollo adecuado de los ejercicios seri3 felicitado e invitado a continuar con otro verbo. en otro caso se repite el pmceso para el verbo en cuesti6n invitándole de manera agradable a intentarlo nuevamente. - Se puede 'abandonar' el proceso en cualquier momento de la ejecuci6n.

Page 3: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

La soluclbn esta estructurada en tres partes bgak.as: - .

1. Elaboxacith y guardado de las figuras. 2. Recuperaclbn y pnsentacidn de las figuras y. 3. EJercicios y mensajes al usuario.

EUBORACION Y GUARDADO DE LAS FIGURAS.

Esta consta de cfnco fases:

1. Creaclbn de los dibujos base. ii. Captura de los dibujos. iii. DetaUe de los dibujos. iv. Importaddn de l o s dibujos al programa M lenguaje C. v. Caxgado de las nguraS con el programa en lenguaje C.

Creaci4n de br dibqjom bue. Se realkan los dibujos mas representativos del mavlmlento correspondiente obmmando en

cada uno de ellos una parte de la cvoluci6n de M e . Cuantos mAs dibujos sean el efecto toma mayor realeza al momento de la slmulacl6n. LOB trazos deben ser firmes para su posterio r captura. Captura de Ion dibqjos. Una vtz logrados los dibujos son capturados por medio del digitahador (sc#nner) el cual

"fotocopia" l o s dibujos en el mcmitor de la computadora, teniendo la fadlidad de salvarlos en archtvo de disco en tres formatos distintos. para nuestros fines se utiliza el formato "FCX".

. D e - de los m*. Los dibujos aan recuperados con el paquete editor de m PWush para su coloraci6n y

terminado, en muchos ~ 8 ~ 0 8 se obtienen copias para su comcddn y adaptaci6n como parte de la evoluci6ri de movlmicnto.

" c i ~ d e l o s ~ . 1 " l e n g a r j c C . Haciendo uso del prqpama residente FRIEZE hs figuras ya terminadas se "congelan" una

secd6n de la pantalla en archivos de m, con la fadlldad de recuperarlos en el momento que se dese¿. siempre y cuando se tenga el monitor en modo Wco. Cargado de kr llguras con el prognrrm en lee C.

Esta parte repmsenta la prhnera fase de prqgramadbn, se cred el programa "CARGAR", el cual guarda la imagen presente en el monitor (previamente "puesta" con el FRIEZE) en memorla principal y la tndere a un archivo de disco, para su posterior recuperacibn.

El procedimiento que carga las imagenes en archivos de disco es el siguiente:

i

Page 4: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

.. .

Creocion del archivo ‘nombre’ */ If Cdos-creat(nombre,ANORMAL,&arch) I= O)

(

exK-1); perrorCERROR EN LA CREACION DEL ARCHIVO’);

1

P Se dem el archivo */ if CdoS,close(arCh) != O)

-ffree((chor for ‘)ap); perlNERROR AL CERRAR EL ARCHIVU);

1

Page 5: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

El proce%o de cargar las imageries a disco es ejecutado por un prugnmm indepcndícnte. ya que las funciones que &te implican no son utilizadas en ntguna otra parte del sistema, y se c j c c u t d &lo para ampliar d aservo de agUras.

Este proctso est.& repmscntado en su totalidad en el siguiente dbgrama de flujo de datos:

crmc ion dibujos

(Dibujos

orch,PCX

COLOR

OIBUJOS,PCX

Iiq-f ínal

L ar ch,FR I EZE

L arch-f igs

Diagrama de f lu jo de datos para 01 corqodo de los dibujos.

RECUPERACION Y PRESENTACION DE LAS FIGURAS. Lasfasesdeesteproctsoson:

i. Rccuperacibn de las imAgencs de archivos de disco. U prtscntaddn de los escenaríos.

M. Las flguras. Iv. Lista ligada de flguras. v. Simulaci6n de movimiento (animaci6n).

Recuperaci6n de la8 idgencm de archim de disco. Los @cos que se despliegan em la pantalla tienen dos orígenes: ya sea que se realicen

mediante un programa o se recuperan de la memoria de la dquina. Por este hecho las Oguras que se encuentran en archivos de disco, deben ser cargadas a memoria principal. localizadas por medio de un apuntador al inicio de esa región. El listado del procedimiento que realiza este proceso es el siguiente:

i

Page 6: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

. .

r Recurera del archivo de disco y presenta en pantalla b imagen prevamente saivada'l void presentaant x1 , Int yl , ht x2, int $2, char nombreo)

* .

int arch; unsigned tam;

Preaentaai6n de loa escenarloa. Lhmamos "escenarilos" a las f3guras sobre las que se sfmula el movimiento. &os se cargan de

BIchfvos de disco fijhdose en la pantalla. Los escenarios que se manejan son cinco que corresponden a:

al Vista del campo. b) Interior de una casa. c) Patio de una casa. a) Interlor de un salbn de clase y e) vista de una calle. D i q r o u do i luJo de &tos pavo p a e n t a r

escenar lor.

i

"ncCori0

Page 7: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

.:

Las figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a

4 Tres diferentes tipos de desplazamiento: los casos citados abajo.

1.- Sin desplazamiento. 2.- Desplazo del centro a la orilla de l a s pantalla. 3.- Dezplazo por todo lo ancho de la'pantalla.

b) Analogías entre ngUras. 1.- Flguras d o g a s den- del mismo grupo para UM simulacih. Esto es el movimiento, se puede ver como la repetici6n de un &lo. Por cjlr-mplo: el golpear con un maxtiUo. es un ciclo en el cual se eleva el marWlo. el viaje del martillo hacia abajo es inverso al anterlor, las a u r a s utilizadas para representar este movimiento son las mismas, solo que presentadas en sentido fnvenw. 2.- Hay mavhntentoe que son parte de otros maS cxkplejos. es decir, acciones completamente contenidas en otras. Para nuetros &es basta obtener las -ras que se utilizan de un conjunto mayor comespondiente a otro verbo.

Los casos de la simulaci6n se puden resumir como slgue:

- Cada figura es representativa en forma Wca del movimiento. - Las nguraS usadas en una direccibn de la sfmulaci6n del mwimiento. son presentados en direccitjncontrarla. -Utllizarlasmisxnas~urascomunesendoso&verbos.

stNCt cola . char far 'buffer; Apuntador a la figura '/ stwd cda 'sig: p Apuntador al siguiente nodo */

1

Con el uso de esta estructura el cubrirlas variantes en las acciones presentadas anteriormente, se reduce a "encolar" apuntadores a figuras de manera adecuada a cada.caso. Las figuras se van cargando a la cola según su correspondencia en la evoluci6n del movimiento a simular.

Page 8: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

'"

X-' -=l(rc P h r r l h .

O F 0 parr descripciin de la representaciin animad

del verbo.

La anfmacfdn se logra presentando en forma secuenclal las @ras que se encuentran en la lista. L a forma de hacer esto es la siguiente: ' l . - S e c o I o c a l a ~ , ~ l a l i s t a , e n p a n t a l l a , 2.- Se calcula la posidbn que corresponda a la siguiente @m. 3.- Se coloca en pantalla la siguiente f&m en la lista removiendo la anterior. 4.- Se repite el paso 1 pero con la posidbn adecuada y removiendo la figura anterior. El procedimiento 8e lista a continuadbn:

p Reservo memoria paro guardor el fondo- poro su posterior restablecimiento '/

fondo=(char far)maNoc~images&e(tamf); p Inlcialbaclbn del punto inicial del desplazamiento */

swttch (sverbo) { case caminar: case correr: case sattar: xf = 410; yf= 5 0 ;

if (sverbo I= 37) ~getimage(41050,619,175,fondo);

x=120; ; break *.

Page 9: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

d e w . xf = 280; yf = 5 0 ;

~timage(28050A40,17S,f~o); bredv

1

p Simulocibn de movimiento *\ for (¡=O; I hash(sverbo).sincron; k+)

gutimage(x,y,apunt-br~G~; espera (factor/h~(sverbo).numflgs); a s i g n a s o s (800; apunt = apunt-dg; 1

p Restablece la parte del escenario que se mum */ gutimage W, yf, fondo);

1

El siguiente diagrama representa la totalidad del proceso descrito arriba.

i

i

Page 10: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

COMENTASUOS Y EJERCICI~.

i. Manejo de la Mormaci6n.

fl. Desplegado de mensajes en pantha. iii. Ejercicios.

itv. Motivaciones.

Manejo de k informacibn. La infonnaci6n necesaria para cada verbo de los incluidos en el paquete, esta contenida en un

registro que a su vez se encuentra en una tabla de acceso dirccto mediante un índice. Este 3nd* es un número asignado a cada verbo que 10 idenWa en forma iiníca. La informacic3n contenida en cada registro-verbo es la siguiente:

Duplegndo de menmajes en pantalla. La rutina "pomens" despliega un mensaje sobre la pantalh en modo video. el cual se centra

mlanntanacrcadaparaesteffnenlaparteinferlordelapantalIa.SetienedMdidalapantalla en dos zonas: zona de "reqrescntaci6n" que ocupa 2/3 de la pantalh. que es donde sc hace la prcscntaci6n de las Qpras en la Sfmulacidn de mavimienfo. ulna de "mensa@s" situada en la parte Weríor (1/3 de la pant-. Esto nos proporciona la facilidad de. por un lado, qar el e9cenarlo en pantalla. y por otro mandar los mensajes que se rtquicra en cualquier niaanento. Ejercicim.

l.-"Complcta elverbo". Presentadala acci6ndelverbo conrespondiente se cscribens6b algunas l e t rasenordenparaquet lusuar ioconnple te las le~f~es .e lcursorse~~~~enpr imera instancia en cl sitio donde se encontraba la letra desplazando este con las flechas, las letras que se Men son siempxe ekgidas de manera alcatoria para darle mils variedad al ejerddo.

2.-"¿Qut verbo es?". Este ejercicio consiste en que presentada una acci6n al usuario identifique el verbo al cual corresponde y escriba la palabra correspondiente a €&e.

&-"El verbo". Presentada la acci6n. se despliega en la ulna de mensajes una oracíbn que implique el verbo en cuesti6n. se coloca un rec-lo que encierra una de las palabras y mediante las flechas el usuario identifica y selecciona el verbo correspondiente implícito en UM oracibn. Se tienen dos posibles seleccionesd de oraciones para cada verbo.

4.- *'¿Cu&l es el verbor'. En este ejercicio se presenta la acci6n correspondiente al verbo seleccionado, así como una lista de verbos entre los que se encuentra el verbo presentado, mediante un "scroll" el usuario selecciona el verbo correcto.

Estos ejercicios son solo una parte de todos los posibles que se pueden implementar, aunque en esta parte no se contempla que el instructor modifique los ejercicios y mensajes. Con la

Page 11: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

lmplemartacldn de un pequctko editor que lo permita. esto no es difidl de int- en una htura vusl6n d e l paquete. Las motivaciones.

La correcta cjccuci6n de los ejercidos provoca una fellcitaci6n al usuarlo por su correcto desempefio invlthdolo a contlnuar con otro ejercido. En caso contrario se despliega un mensaje pidiendo d s atendi3n al usuario.

OF0 Para el desarrollo de I pntrllr 1 los ejercicios de apoyo. .

r z l Pmt.11. aqAsult.

Page 12: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

> -

BIBLIOGWIA. . . ...

Qukk "CY, Manual de programador. Mkroeof€ Co. , 1988.

"La computadbn. la educacion infantil yjwaril", M- del fefcersfry.?osfo fr&m&m& 1986. Somerville. 1.. Z q p n W u de so-, Addlson Wesley Iberoamericana. 1988.

Z n t r a d m al sfsterna de bases de datas. Mc. Graw Hill. Herbert Schildt, Lenguqje "CY Cufa de referencia. Osborne Mc. Graw Hill. Man: J. Rochklnd., Aduanced "CY -fa dfs-.

Leendext Ammeraal , cwnputer Gmphlcs for the IBMPC. John wiley h Sons.

i

Page 13: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

1 0 7 1 7 1 * """""""""""""""""""""""""""""-" + Animation, Diccionario de verbos mas usuales I

Por : Garfias Villasenor Jorge 84325868 Ventura Del Castillo Arturo 83311937

Asesor: Miguel Angel G u m n

Programa 2:

Recaperacien y presentacien de las figuras. Simula el movimiento en la pantalla.

""""""""""""""""""""""""""""""- + */ include <fcntl.h> include <sys\types.h> include <sys\stat.h> include <io.h> include <dos.h> include <malloc.h> include <graph.h> include <string.h> include <math.h> include <stdlib.h> include <stdio.h> include <conio.h> include <time.h> include <bios.h> include <ctype.h> include I1estructu. h"

* Funciones - prototipos y macros */ nt main(void) :

ypedef char far pointer;

truct cola { pointer *buffer; struct cola *sig:

1; ypedef struct cola elemento: ypedef elemento *enlace:

i

* Funciones para el manejo de imagenes */ nlace ordena-imagenes(int sverbo, enlace ultimo, pointer *ap); har *equivalente(int sverbo); nlace imagen-Selecc(int sverbo, int i, enlace ultimo, pointer *ap); ointer *imagen-de-disco(int sverbo, char nombre[]): nt modovideo (void) ; nlace encola(en1ace ultimo, pointer *ap):

Page 14: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

)id pon-escenario(int sverbo); ,id presenta (int x, char nombre [ ] ) : ,id animacion(int sverbo, enlace ultimo): )id asignapos (int sverbo, int *desp) : llace libera - mem(int sverbo, enlace ultimo);

:ruct videoconfig vc; lar mensaje [ J=nMODO VIDEO NO SOPORTADO11 :

t Funciones implementadas para los ejercicios */ It ponmens (char cadena[ 1, int x) : ,inter *creaindicador (void) : >id ponindicador(int pos, int largo): It longpalabra(char cadena[], int pos): It numpalabras(char cadena[]): It ScrOrac(char cadena[], int posinic): It ejercicios ( int sverbo) : It quitaletras(char cadena[]); It escribe (int sverbo) : It ElVerbo (int sverbo) : It encverbo (int sverbo) : lid captcad(char cadena[], int maximo, int x, int y):

/* Menus */ It menu( int ren, int col, int t-col, char * *datos) : ,id caja (int ren, int col, int hi, int ancho, int t-col) : >id pondato(int Ten, int col, char *str, int len); ,id SelecModoMenu (void) :

lsigned cursor(unsigned valor): It seleccion (void) ;

t Constantes */ lef ine ief ine lef ine ief ine ief ine ief ine ief ine ief ine

XMAX (tc.xCnt / 2) Y= (tc.yCnt / 2) DEFAULT -1 TRUE 1 FALSE O TCURSOROFF 0x2020 LASTATR 15 NLASTATR 14

t Codigos para el scroll */ ief ine ESC 27 iefine UP 72 iefine DOWN 80 iefine LEFT 75 iefine RIGHT 77 iefine ENTER 28

t Arreglo y enumeracion del menu principal */ lar *mnuMain[ ] = {

IIAII, ngn, ncn, nDn,

I1EH, "F", "Gn, "Hn,

Page 15: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

har *mnuA[] = { "ABRIR" I

"ADHERIR", "Terminar", NULL ):

h a r *mnuB[ ] = { "BAILAR'# , "BEBER", "BORRAR", IqTerminarv1 I

NULL }:

har *mnuC[ ] = { "CAER", "CAMINAR" I

"CERRAR" I "COMER" I

"COMPRAR", "CORRER" I

aCORTARvg, "Terminartf I

NULL }:

har *mnuD[ ] = { IIDAR", '8DESCANSAR" I

llDIBUJAR", **Terminar" I

NULL }:

har *mnuE[ ] = ( *@ENTRAR" I

"ESCRIBIR", IgTerminarH I

NULL }:

har *mnuF[ ] = { "FORMAR", "Terminar'*, NULL 1:

har *mnuG[ ] = { '8GOLPEAR" I

"GUSTAR", IITerminar", NULL ):

nar *mnuH[ 3 = { WABLAR" ,

"HACER", t1Terminar9v, NULL }:

nar *muJ[ ] = { "JUGAR", 8*Terminar*1 I

NULL }:

I

nar *mnuL[ ] = {

Page 16: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

har *mnuO[ 3 = { "OIR" , "OLER" , "Terminar" , NULL ) t

h a r *mnuP[ J = { l*PARAR" , "PATEAR" , "PEGAR" , "PEINAR" I

PENSAR" , "PINTAR" , "PLANCHAR" , "PONER", v1Terminar'9 , NULL );

nar *mnuR[ 3 = { "REIR" , "RECORTAR" , " T e r m i n a r u , NULL );

lar *mnuS[] = { "SALTAR" I

"SENTAR" I

"SER" , "SUBRAYAR" , l t T e r m i n a r H , NULL ) t

nar *mnuT[ 3 = { "TACHAR" , "TENER" , "TOCAR" , "TRAER" , n T e r m i n a r t v , NULL ) t

"TRABAJAR" ,

lar *mnuV[ J = { 'VENIR" , VESTIR" , NULL ) t

IIVERII I

"Terminar" ,

?um letras { A,B,C,D,E,F,G,H,J,L,O,P,R,S,T,V,TEWINA}; lum verbos JBRIR , ADHERIR , BAILAR , BEBER, BORRAR , CAER , CAMINAR , CERRAR , COMER, )MPRAR,CORRER,CORTAR,DAR,DESCANSAR,DIBUJAR,E~,ESCRIBIR, )RMAR,GOLPEAR,GUSTAR,H.ABLAR,HACER,JVGAR,~ZAR,LLEGAR,OIR,

Page 17: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

LER,PARAR,PATEAR,PEGAR,PEINAR,PANSAR,PINTAR,PLANCHAR,PONER, EIR,RECORTAR,SALTAR,SENTAR,SER,SER,SUB~YAR,TAC~,TENER,TOCAR, RABAJAFt,TRAER,VENIR,VER,VESTIR,Terminar);

* Arreglo de los modos */ nt modes[ ] = (

- MRES4COLOR, - MRESNOCOLOR, - HRESBW, - MRES16COLOR, - HRES 16COLOR, - ERESCOLOR, - VRES2COLOR, - VRES16COIDR, - MRES256COLOR, - ERESNOCOLOR, - HERCMONO , DEFAULT } ;

truct mnuAtr ( int fgNorma1, fgSelecc, fgborde; long bgNormal, bgselecc, bgborde: int centrado;

I

truct mnuAtr menus = { 0x00, OxOf, 0x04, 0x03, 0x04, 0x03, TRUE, nun II 11 H ~ I I nAn , 113 n r r A n nAn , "An

I C r I

truct mnuAtr bwmenus = { 0x07, 0x00, 0x07, 0x00, 0x07, 0x00, TRUE, nun II . II nbn nAn 113 II nAn nftn , IIAII

I C r I

aar messl[ 3 = ( #*Diccionario de verbos" } ; lar mess2[] = ( "Elige una letra con las flechas para ver los verbos" }; aar mess311 = ( nPresiona ENTER despues" }; nt lmessl = sizeof(messl), lmessl = sizeof(mess2), lmess3 = izeof (mess3) ;

>inter *indicador; /*Cursor para el scroll*/

4

I

nin ( ) { pointer *apbuff; /* enlace ultimo = NULL; /* int sverbo:

Apuntador a registro-imagen */ Ultimo elemento de la lista */

Page 18: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

inicializa ( ) ; - setvideomode ( DEFAULTMODE) ; - getvideoconf igTfvc) ; SelecModoMenu ( ) ; for(: ;)

{ sverbo = seleccion ( ) ; if (sverbo < 60)

{ if ( lmodovideo ( ) )

{ printf (n%s\nn,mensaje) ;

exit (O) ;

getvideoconfig(&vc);

- setvideomode(-DEFAULTMODE); 1

/* indicador = creaindicadoro; */ - settextwindow(l7,1,25,80); - clearscreen(-GWINDOW); - wrapon (-GwRAPON) ; pon escenario(sverbo); ultimo = ordena-imagenes (sverbo , ultimo, apbuf f ) ; if (ultimo==NULL)

animacion(sverbo, ultimo); ponmens(hash[sverbo].nomverbo, 4); getch ( ) t animacion(sverbo, ultimo); ponmens(hash[sverbo].oracionl, 4); getch ( ) :

ultimo = libera-mem(sverbo, ultimo); - setvideomode (-DEFAULTMODE);

printf ('@\mala seleccion! ! ! \nH) ;

/* ejercicios (sverbo) ;

1 else

{ - setvideomode (-DEFAULTMODE);

*/

- exit ( o ) ;

1 1 return (O) ;

1

Bid SelecModoMenu ( )

int cren, ccol; int vmode;

I

cren = vc.numtextrows ccol = vc.numtextcols

/ 2; / 2 :

/* Seleccona el mejor modo texto y grafico */ switch (vc. adapter)

{ case "DPA : puts(nVideo modo no soportado.\n");

case -CGA : vmode = -MRES4COLOR; exit (O) ;

I

Page 19: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

break: case -HGC : mode = -HERCMONO;

break: case -EGA : if (vc.memory > 64)

vmode = -ERESCOLOR;

vmode = -HRES16COLOR; else

break: case -VGA : case "CGA :mode = -MRES256COLOR:

break: 1

{ switch (vc-mode)

case -TEXTBW8O : case -TExTBW40 : menus = bwmenus:

case -TEXTMONO : case -ERESNOCOLOR : case -HERCMONO : menus = bwmenus:

break:

if (vmode != HERCMONO) vmode-= -ERESNOCOLOR:

1 - settextposition(2,ccol - (lmessl / 2)): - outtext (messl) : - settextposition(3,ccol - (lmess2 / 2)): - outtext (mess2) : - settextposition(4,ccol - (lmess3 / 2)); - outtext (mess3) ;

'* Iniciliza en modo video */ '* Exige por lo menos una resolucion de 640 x 480 pixeles */

modovideo ( )

{ if (-setvideomode(-VRESl6CO~R))

else return (-VRES16COLOR) ;

if (-setvideomode(-ERESCOLOR))

else return (-ERESCOLOR) ;

if (-setvideomode (-HRES16COLOR) )

else return (-HRES16COLOR) :

if (-setvideomode(-HRESBW))

else return (O) ; return (-HRESBW) :

It seleccion ( ) { int nun-col,

cren = vc.numtextrows / 2, ccol = vc.numtextcols / 2, letras,verbos; nun-col = 4: - clearscreen(-GCLEARSCREEN); letras = menu(cren,ccol,num-co1,mnuMain);

Page 20: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

num-col = 1: switch (letras)

{ case A : verbos = menu(cren,ccol,num-co1,mnuA):

verbos += ABRIR: break:

verbos += BAILAR: break:

verbos += CAER: break:

verbos += DAR: break:

verbos += ENTRAR: break:

verbos += FORMAR: break:

verbos += GOLPEAR: break:

verbos += HABLAR: break:

verbos += JUGAR: break:

verbos += LANZAR:

case B : verbos = menu(cren,ccol,num-co1,mnuB):

case C : verbos = menu(cren,ccol,num-co1,mnuC):

case D : verbos = menu(cren,ccol,nm-co1,mnuD):

case E : verbos = menu(cren,ccol,num-co1,mnuE):

case F : verbos = menu(cren,ccol,num-co1,mnuF):

case G : verbos = menu(cren,ccol,num-co1,mnuG):

case H : verbos = menu(cren,ccol,num-co1,mnuH):

case J : verbos = menu(cren,ccol,num-co1,mnuJ):

case L : verbos = menu(cren,ccol,num-co1,mnuL):

' break: case O : verbos = menu(cren,ccol,num-co1,mnuO):

verbos += OIR: break:

verbos += PARAR: break:

verbos += REIR: break:

verbos += SALTAR: break:

verbos += TACHAR: break:

verbos += VENIR: break:

case P : verbos = menu(cren,ccol,num-co1,mnuP):

case R : verbos = menu(cren,ccol,num-co1,mnuR):

case S : verbos = menu(cren,ccol,num-co1,mnuS):

case T : verbos = menu(cren,ccol,num-co1,mnuT):

case V : verbos = menu(cren,ccol,num-co1,mnuV):

case TERMINA : exit(0) : case 60:break:

1 return(verbos):

1

t Pone el menu en la pantalla. con <ren> y <column>.

Page 21: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

Arreglo del menu <datos> strings. Structure global variable <menus> determina: Colores del borde, datos normales, y seleccion del dato.

justificacion al centro o a la izquierda. Caracteristicas del Borde.

Regresa el numero del dato seleccionado. */ nt menu( int ren, int col, int n-col, char * *datos)

int i, num, max = 2, num-ren, prev, actu = O; int ldato[25]; long bcolor; char c;

cursor (TCURSOROFF) ; bcolor = -getbkcolor();

/* Cuenta los datos y sus longitudes */ for (num = O; datos[num]; nu++) {

ldato[num] = strlen(datos[num]); max = (ldato[num] > max) ? ldato[num] : max;

1 max += 2; if ( (num+l)%n-col == O ) num-ren = num / n-col;

else num-ren = num / n-col + 1;

if (menus. centrado) { ren -= nun-ren / 2; col -= (max*n-col) / 2;

1

/* Dibuja la caja para el menu */ - settextcolor(menus.fgborde); - setbkcolor(menus.bgborde); caja(ren++,col++,num,max,n-col);

/* Pone los datos en la caja del menu */ for (i = O; i < num; ++i) {

if (i == actu) { - settextcolor(menus.fgSelecc); setbkcolor(menus.bgSelecc);

- settextcolor(menus.fgNorma1); setbkcolor(menus.bgNorma1);

pondato(ren+i/n col,col+(i%n-col)*max+i%n-col,

1 else {-

1 -

datos[i'j-,max - IdatoCi]); 1

/* Realiza la seleccion */ for (;:) {

switch ( (-bios-keybra(-KEYBRD-READ) C Oxff00) >> 8) {

Page 22: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

case ESC : exit( O ) ; case UP :

prev = actu; actu = (actu n-col) ? (num-n-col+actu) :

break;

prev = actu; actu = (,actu < nu-1) ? ( (actu + n-col) %num) : O; break;

prev = actu; actu = (actu > O) ? (actu-1) : num-1; break;

case RIGHT : prev = actu; actu = (actu num-1) ? actu+l : O; break;

case ENTER :

( (actu -= n-col) %nu) ;

case DOWN :

case LEFT :

- setbkcolor(bco1or) ; if (actu == num-1)

else return (60) ;

return (actu) ; default :

continue; 1 - settextcolor(menus.fgNorma1); - setbkcolor(menus.bgNorma1); pondato(ren+prev/n_col,col+(prev%n-col)*max+prev%n-col,

- settextcolor(menus.fgSelecc); - setbkcolor(menus.bgSe1ecc); pondato(ren+actu/n-col,col+(actu%n_col)*max+actu%n-col,

datos[prev],max - ldato[prev]);

datos[actu],max - ldato[actu]); 1

C Dibuja la caja para el menu. <rem y <col> son la esquina superior de la caja. <hi> y <ancho> son la longitud y la altura de la caja. */

>id caja(int ren, int col, int hi, int ancho, int ncol)

int i, j = O; char temp[80] ;

temp[j] = *menus.nw; for (i=l; i <= ncol ; i++) {

- settextposition(ren,col);

j++; memset(temp+j,*menus.ew,ancho); j += ancho; memset(temp+j,*menus.tu,l);

1 temp[ j++] = *menus.ne; temp[j] = O; - outtext (temp) ; for (i = 1; i <= hi/ncol; ++i) { for (j = O ; j <= ncol; ++j) {

- settextposition(ren+i,col+j*ancho+j);

. . .""* ..,- ." -1. . . I . .

Page 23: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

- outtext (menus. ns) ; 1

1 - settextposition(ren+hi/ncol+l,col); j = O; temp[j] = *menus.sw; for ( i-1; i <= ncol; i++) ( j++; memset(temp+j,*menus.ew,ancho); j += ancho; memset (temp+ j , *menus. td, 1) ;

1 temp [ j ++] = *menus. se ; temp[j] = o ; - outtext (temp) ;

Pone un dato en el menu. <ren> y <col> son la posicion inicial del dato. <str> es la cadena del dato. Clem es el numero de espacios a ocupar. */

)id pondato(int ren, int col, char *str, int len)

char temp[80] ;

settextposition(ren,col); - outtext ( ") ; outtext (str) ;

iüemset (temp, 1 1,len--) ; temp[len] = O; - outtext (temp) ;

Cambia la forma del cursor. <valor> El valor inicial es la parte alta del byte,

el final es la parte baja del byte. Regresa el anterior valor del cursor . */

lsigned cursor(unsigned valor) {

union REGS Eregs, Oregs; int ret;

Eregs.h.ah = 3; /* Guarda el anterior cursor */ Eregs.h.bh = O; int86(0x10,CEregs,&0regs); ret = 0regs.x.c~;

Eregs.h.ah = 1; /* Pone el nuevo cursor */ Eregs.x.cx = valor; int86(0xlO,fEregs,fOregs);

return (ret) ;

I: Depliega un mensaje en el centro de la ventana */

Page 24: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

nt ponrnens(char cadena[], int x )

int longcad = strlen(cadena), longren, longcol = vc.numtextcols, Y:

char *buffer; y = ( longcol - longcad ) / 2; - settextposition (x,y) t - outtext (cadena) ; return (y) t

{

1

k Coloca el fondo en el que se simulara el movimento */ >id pon-escenario (int sverbo) { char cad[8];

cad[O] = @e1: cad[l] = @ S @ : cad[2] = I C @ : cad[3] = @e@: cad[4] = In@: cad[5] = hash[sverbo].tipoesce[O]; cad[6] = Il@; cad[7] = @ \ O @ : presenta (O, cad) t cad[?] = @2't cad[8] = @ \ O @ : presenta (3 19, cad) t

1

k Recupera el escenario de archivos de disco poniendo10 en pantalla */

>id presenta (int x , char nombre[ 3 ) { pointer *apt int arch, y=Ot unsigned tam, tamesce=50564; if (-dos-open (nombre, O-RDONLY, Itarch) ! = O) { perror("error en la apertura en presenta escenario\n"); printf ("===> %S <===\n",nombre)t 1

else { ap= (char far *) -fmalloc (tamesce) ;

Zputimage(x, y, ap, -GPSET) t - f f ree ( (char far *) ap) t if (-dos-close (arch) != O)

dos-read (arch, (char far*) ap, tamesce, &tam) t

Page 25: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

perror("error al cerrar archivo"); 1

1

* Dirige la recuperacion de las figuras,regresa el apuntador al ultimo elemento de la lista de figuras */

?lace ordena-imagenes(int sverbo, enlace ultimo,pointer *ap) { enlace segundo; /* segundo elemento en la lista */ int ir

printf ( "\nOdenando\nn) ; getch ( ) ; printf(n\nbs\nn,hash[sverbo].tipofig); getch(); switch (hash[sverbo].tipofig)

{ case O: for (i=l; i<hash[sverbo].numfigs+l; i++)

ultimo = imagen-Selecc(sverbo, i, ultimo, ap); if (u1 t imo==NULL) printf (nl/nNULL en ordena! ! !\nnn) ;

break; case 1: for (i=l; i<hash[sverbo].numfigs+l; i++)

ultimo = imagen Selecc(sverbo, i, ultimo, ap); if (ultimo != NULE { segundo=ultimo->sig->sig; switch (hash[sverbo].numfigs) { case 4: ultimo = encola(ultimo,

segundo->sig->buffer); break;

case 5: ultimo = encola(ultimo, segundo->sig->sig->buffer);

encola(ultimo, segundo->sig->buffer); break;

1 ultimo=encola(ultimo,segundo->buffer);

1 else printf("Nada en ordana caso l/n");

ultimo = imagen-Selecc(sverbo, i, ultimo, ap); break;

case 2: for (i=hash[sverbo].numfigs; i=O; i--)

1 return (ultimo) ;

1

'* Inicializa el nombre de la imagen de archivo de disco a ser cargada enla cola ligada de figuras */

mlace imagen-Selecc(int sverbo, int i, enlace ultimo, pointer *ap) {

char *imagen, *x; int j=lO;

printf ( ; if (hash[sverbo].tipofig == 2) /* figuras equivalentes */ strcpy(imagen,equivalente(sverbo));

Page 26: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

else strcpy(imagen,hash[sverbo].nomverbo); itoa(i,x, j) : imagen = strcat (imagen, x) : ap = imagen-de-disco(sverbo, imagen): if (ap == NUU )

{ /* No se encontro el archivo en disco */

1

printf("***** imposible cargar imagenes *****\nn): return (O) :

else ultimo = encola(ultimo, ap): return (ultimo) :

1

Regresa el nombre con el cual se guardaron las imagenes equivalentes al verbo seleccionado */

zhar *equivalente(int sverbo) { char *aux;

switch (sverbo) { case PARAR :

case CERRAR:

/*case quitar:

1 return (aux) :

1

aux = hash[SEWTAR].nomverbo; break: aux = hash[ABRIR].nomverbo; break: aux = hash[PONER].nomverbo: break: */

t Recupera una figura de un archivo de disco, regresa el apuntador a la figura en memoria principal */

)inter *imagen-de-disco (int sverbo, char nombre[]) { pointer *app: /* Apuntador a la figura en memoria */ int arch: unsigned tam, taml; /* Tamanos; del archivo, bytes leidos */ if (_dos-open(nombre,O-RDONLY,&arch) != O)

{ perror("error en la apertura en imagen de disco\n"); return (O) :

1 else

{ tam = 11404 /* TamArch(nombre)) :*/: app=(pointer *)-fmalloc( (unsigned) tam) :

3utimage (O, O, app,-GPSET) : /*-f free ( (pointer *) app) : */ getch ( ) : if (-dos-close(arch) != O)

dos-read(arch, (pointer*) app, (unsigned) tam, (tttaml) ;

perror ("error al cerrar archivo8I) : 1

return (app) t

I

t

1

I . .

Page 27: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

I* Inserta un apuntador a figurá en la cola ligada de anillo */ mlace encola(en1ace ultimo, pointer *ap)

( enlace lista; /* Primer elemento de la cola */ if (ultimo-=NVU) /* Se inserta el primer elemento */

( ultimo = (enlace)malloc(sizeof(elemento)); ultimo->buffer = ap; ultimo->sig = ultimo;

1 else

( lista = ultimo->sig; ultimo->sig = (enlace)malloc(sizeof(elemento)); ultimo->sig->buffer = apt ultimo->sig->sig = lista; ultimo = ultimo->sig;

1 return (ultimo) ;

1

I* Presenta las figuras de la cola simulando movimiento */ roid animacion(int sverbo, enlace ultimo)

( pointer *fondo; unsigned tamf; int x=283, xf; int y=72, yf; int i, zt unsigned factor = (unsigned) (47520/hash[sverbol .numfigs) ; enlace apunt=ultimo->sig;

/* Reserva memoria para guardar el fondo para su posterior restablecmiento */

fondo = (char far *)-fmalloc( (unsigned) 11404) ;

switch (sverbo) ( case CAMINAR: case CORRER: case SALTAR: xf = 410; yf = 72;

if (sverbo != 37)

break;

/* Inicializacion del punto inicial del desplazamiento */

- getimage(524,50,619,17O,fondo); x=12 o ;

defualt: xf = 283; yf = 72; - getimage(283,72,366,192,fondo); break;

1

/* Simulacion de movimiento */ for (i=O; i < hash[sverbo].sincron; i++)

gutimage(x,y,apunt->buffer,-GPSET); gutimage(x,y,apunt->buffer,-GPSET); for ( z = O ; z != factor; z++); asignagos (sverbo, &x) ; apunt = apunt->sig;

{

1

"- - . " ... " _ ,

Page 28: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

getch ( ) :

gutimage (xf, yf, fondo,-GPSET) : - f free ( (char far *) fondo) : getch ( ) :

/* Restablece la parte del escenario que se ocupo */

1

/* Asigna la nueva posicion de la figura segun el verbo */ roid asignagos(int sverbo, int *desp)

{ switch (sverbo)

{ case CAMINAR: *desp += 40; break: case CORRER: *desp += 60; break: case SALTAR: *desp += 3 0 ; break:

1 1

Libera la memoria */ {

inlace libera-mem(int sverbo, enlace ultimo)

int i=o; enlace nodo: enlace lista=ultimo->sig: if (lista == MU)

else {

printf("me9aoria libre"):

while (i c hash[sverbo].numfigs) { nodo = lista: lista = lista->sig: - f free ( (pointer *) nodo->buf fer) : free (nodo) : i++ :

1 - ffree( (pointer *) lista->buffer) : free(1ista) :

1 lista = NULL; return (lista) :

1 .""""""""""""""""""""""""""-------- ,""""""""""""""""""""--""-------------- */

Rutina de captura y validacion de cadenas */ ,id captcad(char cadena[],int maximo,int x,int y)

int cont = O , car:

do ( car = getch() : if ( (isalpha(car) ) I I car == 13 I I car == 32 I I car == 8 )

{ if (car != 13 LC car != 8 &L COnt C maxima)

{ if (cont == O) car = toupper(car) :

I

I I

Page 29: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

else

putch (car) t cadena[ cont] = (char) car; cont++ t y++ t

car = tolower (car) ;

1 else

{ if (car == 8 && cont > O)

{ - settextposition(x,--y); - outtext ( ; - settextposition(x,y); cont-- ;

1 1

1 else printf ( n\an) ;

} while(car != 13); cadena[cont] = I \ O 1 ;

1 0 7 7 7 1

)ointer *creaindicador ( ) { pointer *indica; int a,b; printf("xpic -->%d ypic -->%d tcol -->%d trow -->%d I@,

vc.numxpixels,vc.numypixels,vc.numte~cols,vc.numtextrows); '* */ a = vc.numxpixels/vc.numtextcols; '* */ b = vc.numypixels/vc.numtextrows;

indica = (pointer *)-fmalloc((unsigned)-imagesize(O,O,a,b)); - setcolor (15) ; - rectangle( GFIUINTERIOR, O , O , a, b); - get image (OTO, a, b, indica) ; printf(N\n""""-- > crea %Id indica) ; getch (1 : - clearscreen ( GCLEARSCREEN) ; return (indica";

1

Regresa el numero de letras de la palabra en "cadenav1 a partir de @@posn */

lt longpalabra(char *cadena, int pos) { int largo = O;

while ( (cadenaCpos] != I I ) I I (cadena[pos] != ' \ O 1 ) { largo++; pos++ ;

1 return (largo) ;

1

' Regresa el numero de palabras de ncadenaH. */

Page 30: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

" - "

nt numpalabras(char *cadena)

int npalabra = O, i = -1; {

printf ("\n en npalabras ") ; printf ( n\n%s \n\nn ,cadena) ; do (

i++ ; while(cadena[i] != I && cadenali] != ' \ O 1 )

npalabra++; i++ ;

} while (cadena[i] != ' \ O 1 ) ; printf ( \n%d ,npalabra) t return (npalabra) ;

1

t Pone un rectangulo en una posicion dada con un largo de caracteres */

roid {

ponindicador (int pos, int largo)

int i, ipos=pos-l, yi = 21 * vc.numypixels / vc.numtextrows, a = vc.numxpixels / vc.numtextcols;

printf(n\n++++++++++> %Id n,indicador); for (i=o; i<largo; i++, ipos++) gutimage(ipos*a, yi, indicador, -GXOR);

1

Dada una cadena en una posicion inicial en la pantalla, la marca con un rectangulo.

h t ScrOrac(char cadena[], int posini) { int pos[7], cont, ant; int numpal = numpalabras(cadena);

*/

pos[O] = o; for (cont=l; cont<numpal; cont++)

cont = ant = O; printf ( " llama a pon @I) ; ponindicador(pos[cont]+posini, pos[cont+l]-1); for ( t ; )

pos[cont] = longpalabra(cadena, pos[cont-11);

{ switch ((-bios_keybrd(-KEYBRD-READ) & Oxff00) >> 8)

{ case ESC: exit (O) ; case LEFT: ant = cont;

cont = (contm) ? (cont-1) : (numpal-1); break;

cont = (cont+l) % numpal; break;

case R1GHT:ant = cont;

case ENTER:return(cont); 1

ponindicador(pos[ant]+posini, pos[ant+l]-1);

Page 31: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

ponindicador(pos[cont]+posini, pos[cont+l]-1); 1

1

It ejercicios ( int sverbo)

int bien,ejercicio = 1; char cont t for (ti) {

{

switch (ejercicio) {

case 1: bien = quitaletras(hash[sverbo].nomverbo);

case 2: bien = escribe(sverbo);

case 3: bien = ElVerbo(sverbo):

case 4: bien = encverbo(sverbo);

break:

break:

break:

1 ponmens(%prime cualquier tecla para continuar8@,7); putch (getch ( ) ) t - clearscreen (-GWINDOW) t if ( bien ) {

do { ponmens ("Deseas otro ejercicio (S = si, N = no) ? , 4) ; cont = (char) getch ( ) t cont = toupper (cont) t

) while( cont != IS@ CC cont != INn): putch (cont) t - clearscreen( GWINDOW); if (cont == 27)

else exit (O) t

if (cont == 'NI)

else return (O) t

ejercicio += 1; 1 else {

ponmens ("Deseas otra oportunidad (S = si, N = no) ? , 4) t do { cont = (char) getch ( ) t cont = toupper (cont) t

} while( cont != @ S 8 && cont != @N'): putch (cont) t - clearscreen (-GWINDOW) t if (cont == 27)

else exit (O) t

if (cont == IN!) return (O) ;

Modulo que realiza el ejercicio "Completa el verbo" */ Tomando el verbo elimina algunas de las letras para que el */ usuario las identifique para probar si es el verbo que se le*/

. I1-1 ""- .. .". .

Page 32: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

* presenta 2t quitaletras(char cadena[]) ( char cadena2[20]; int lonCad = strlen(cadena),

x = lonCad/2, ifjfY,Yb quiW51 I

c; long z ; cadena2[0] = l \ O I ;

/* elimina algunas letras

for (i = j = O; j < x && i < lonCad; do (

if ( ( rand() % 2) != O ) ( quite[j++] = i; cadenal[i] = I ;

1 else cadenaali] = cadena[i];

1 } while (j == O ) ;

del verbo */ i++) {

*/

/*termina de copiar el verbo cuando sale por */ /*haber quitado la mitad de las letras del verbo */

while ( i < lonCad ) ( cadena2[i] = cadena[i]; i++ ;

1 cadena2 [ i] = I \ O 1 ;

x = 4; y = ponmens(cadena2,x); /* escribe el verbo a completar

r

i = O: /* mientras no se reciba << enter >> el */ /* usuario puede estar corrigiendo el verbo */

do ( y1 = y + quite[i]; while ( !Whit() ) { - settextposition (x, yl) ; printf ( W ? W ) ; /*para indicar que se esta*/ for(z=O;z != 40000;2++); /* esperando un caracter */ printf(n%cn,cadena2[quite[i]]); for(z=O;z != 40000;2++);

- settextposition (x, yl) ;

1 c = getch() ; - settextposition (x, yl) ; if (isalpha(c) ) ( if ( y1 == y )

else

printf(n%cn,cadena2[quite[i]]); i= (i+l) % j ;

cadena2[quite[i]] = (char) toupper(c);

cadena2 [quite [ i] 3 = (char) tolower (c) ;

1 else

Page 33: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

if (c == 27)

else exit (O) ;

if (c == 52) /* flecha izquierda */ else i = (i > O) ? (i-1) : (j-1);

if (c == 54 ) /* flecha derecha */ i = (i+l) S j;

} while (c != 13); /* termina ciclo al recibir <<enter>> */ - clearscreen(-GWINDOW); if ( strcmp(cadena,cadena2) == O )

{ printf("\n\nBienl palabra correcta return (1) ;

1 else printf("\n\n Lo siento, palabra incorrecta ");

return (O) ; 1

t Modulo que realiza el ejercicio "Que verbo es" Presentada una acion el usuario identifica el verbo que se

presenta, debiendo ecribir el nombre del verbo. */ escribe(int sverbo)

char *verbus;

- settextposition (4,10) ; printf("Escribe el verbo: ") : settextposition (4,30) ;

captcad(verbus,l0,4,30) ; - settextposition (6,lO) ; if (strcmp(verbus, hash[sverbo].nomverbo) == O )

printf ("Bien! Tu respusta es acertada. I!) ; return (1) ;

{

1 else printf("Lo siento, te equivocaste de verbo"); return (O) ;

Modulo que realiza el ejercicio Wual es el verboll. presenta una oracion que contiene el verbo para que el

usuario identifique verbo dentro de esta */ ElVerbo(int sverbo)

int x, respus, noracion= (rand ( ) % 2) +I; char *oration;

if (noracion == 1)

else

printf ("/n llama a mensaje " ) ; x = ponmens(oracion,4);

strcpy(oracion,hash[sverbo].oracionl);

strcpy(oracion,hash[sverbo].oracion2);

Page 34: VIUASEÑOR JORGE 84325868 VENTURA DEL …148.206.53.84/tesiuami/UAM8558.pdfLas figuras comespondienes al verbo seleccionado. para la simulaci6n pueden corresponder a 4 Tres diferentes

printf (Ig --- llama a ScrOrac --- ") ; respus = ScrOrac(oracion,x)t if (respus == atoi(&hash[sverbo].tipoesce[noracion]))

( - settextposition(6,lO); printf("Bien! Tu respusta es acertada.Il); return ( 1) ;

1 else printf("Lo siento, esa palabra no es el verbol'); return (O) ;

1

t encverbo(int sverbo) { char *cadena; int verbs[5],

pres I

x, respus ; i,j,

pres = rand() % 5; verbs[presJ = sverbo; for (i = O; i < 5; i++) if (i != pres)

verbs[ i] = rand ( ) % Terminar; strcpy(cadena,hash[verbs[O]].nomverbo); for (i = 1; i < 4; i++) ( cadena = strcat (cadena, I@) ; cadena = strcat(cadena,hash[verbs[i]J.nomverbo);

1 cadena = strcat(cadena,hash[verbs[4]].nomverbo); cadena = strcat(cadena,g\Ot); x = ponmens(cadena, 4 ) ; respus = ScrOrac(cadena, x); if (respus==pres)

{ - settextposition(6,lO); printf("Bien! Tu respusta es acertada."); return (1) ;

1 else printf("Lo siento, esa palabra no es el verbo"); return (O) ;

1