universidad autonoma metropolitana c r: -1148.206.53.84/tesiuami/uam6787.pdf · para que el usuario...

57
I" UNIVERSIDAD AUTONOMA METROPOLITANA c r: -1 . , PROYECTO DE INVESTIGACION "109 KAIJJIS EN 10 LECCIONES" ASESOR: ING. HECTOR ELEASID GARCIA GOMEZ ALMA EDITH~MARTINEZ LICONA 86326696 VIDAL LUNA mEZ 86328812 I i

Upload: vankiet

Post on 18-Oct-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

I"

UNIVERSIDAD AUTONOMA METROPOLITANA

c r: -1 . ,

PROYECTO DE INVESTIGACION

"109 KAIJJIS EN 10 LECCIONES"

ASESOR: ING. HECTOR ELEASID GARCIA GOMEZ

ALMA EDITH~MARTINEZ LICONA 86326696 VIDAL LUNA m E Z 86328812

I

i

INDICE

INTRODUCCION ..................................... 1

DESCRIPCION DEL PAQUETE .......................... 3

DESCRIPCION DE CADA OPCION DEL MENU PRINCIPAL:

DESCRIPCION EN CUESTION DE PIROGRAMACION:

LENGUAJE DE PROGRAMACION .......................... 1 0 ESTRUCTURA DE DATOS QUE SE UTILIZARON ............ 1 0

DESCRIPCION DE LAS UNIDADES DE AUXILIO

. DIBUJOSOC .................................... 11

. 1NTR.C ....................................... 12 - LINEASmC ..................................... 12 - MENUSmC ...................................... 13 - JAP0N.C (UNIDAD PRINCIPAL) ................... 13 - ELABORACION DE PAISAJES (EXAMEN B) ........... 14 - AYUDAS ....................................... 1 7 - FORMA DE AGREGAR MAS LECCIONES Y KANJIS ...... 1 7 - LISTADO DE CADA UNIDAD ....................... 1 8

INTRODUCCION

La computadora, herramienta que para la mayoria de las personas es "una caja mágicatt, por sus atributos se ha hecho indispensable en la mayoriade las actividades humanas.

La educación no es una excepción encontrando en las computadoras .el instrumento de apoyo que reditúa gratos resultados. Un instructor como ser humano, pendiente de un grupo considerable, tiene sus limitaciones: de tiempo, estado de dnimo, etc. que a pesar de su afdn de instruir correctamente al grueso de sus alumnos, hay ,elementos que-son afectados, entre otros factores, por éstas limitaciones del instructor. Aprovechando que una mdquina no se cansa de repetir lo mismo varias veces y no le cansa un usuario particular, viene a ser la solución a los problemas de aprendizaje de muchos instruidos.

1

Es importante mencionar que en ningún momento se pretende que la máquina sea el sustituto del maestro, es fácil de ver que la computadora en cualquier caso es solo una importante herramienta de apoyo para procesos especificos, requiriendo la dirección y estimulo del instructor quién debe encausar a los estudiantes en el uso adecuado del presente paquete.

En el presente trabajo se limitará a atender las necesidades de los estudiantes del idioma japones, el idioma es demasiado complejo y extenso para tratar de abarcarlo en su totalidad, es por eso que únicamente se dedicara a desarrollar un paquete que muestre' los KANJIS básicos como un apoyo para los estudiantes que apenas empiezan a tener un conocimiento del idioma.

Los KANJIS son caracteres que representan una idea completa. El origen de los caracteres KANJI es a partir de la representación gráfica de su significado.

1

I

I I

I

EJEMPLO:

El KANJI

E

significa sol y éste surge a partir de la siguiente representación:

,

' I I

El nombre del paquete es "109 KANJIS EN 10 LECCIONES", éste paquete tendrá la siguiente información:

- Una breve introducción - El trazo correcto de cada KANJI - La pronunciación KUN - La pronunciación ON

I

!

i

2

DESCRIPCION DEL PAQUETE

El paquete se divide en :LO lecciones, cada lección tiene un contenido de 10 K A N J I S aproximadamente (varia el número segtín la lección) y cuenta con dos tipos de exsmenes para la evaluaci6n del avance que se tenga en cada lección.

,

La primer pantalla que le aparece al usuario es siguiente:

INTRODUCCION

LECCIOIQ LECCIOI'J LECCIOI'J LECCIOIN LECCIOIN LECCIOIN LECCIOIN LECCI0:N LECCI0:N LECC1O:N

1 2 3 4 5 6 7 8 9 10

K A N J I S A L I R

EXAMEN EXAMEN EXAMEN EXAMEN EXAMEN EXAMEN EXAMEN EXAMEN EXAMEN EXAMEN

1 2 3 4 5 6 7 8 9 10

1 OPCIONES I1At1yuda ++t 4 S A L I R f

A continuación se dará la explicación de cada opción:

- INTRODUCCION \

E l contenido de la introducción es el siguiente:

la

Usualmente cada K A N J I tiene dos tipos de lectura: la lectura japonesa llamada "KUN YOMItl y la lectura china conocida como tlOy YOMI". Cuando un K A N J I es usado solo, como una palabra se utilxza la lectura KUN, si el KANJI se utiliza junto con otqos KANJI utiliza la lectura ON.

Ye

3

La escritura de los caracteres KANJI siguen un conjunto de reglas bdsicas, las cuales son las siguientes:

- Hacer cada KANJI del mismo tamaño y colocarlos en un cuadro. - Seguir el siguiente orden al realizar cada trazo del KANJI:

a) Cuando se traza una linea horizontal esta se hace de *

izquierda a derecha.

b) Cuando se traza una linea vertical el orden es de arriba hacia abajo.

c) Si son varias líneas horizontales éstas se harán cada una de izquierda a derecha y en conjunto se comienza con la linea del tope y se termina con la de la base. .

d) Si el conjunto de líneas son verticales cada una se trazará de arriba hacia abajo y en conjunto se comenzará con la linea de más a la izquierda y se trminará con la linea de más a la derecha.

- El cuadro donde debe ir el KANJI se traza de la siguiente manera :

1) Se traza la linea vertical de más a la izquierda de

2 ) La linea horizontal de la parte superior de izquierda a

3) La linea vertical de la derecha de arriba hacia abajo y 4 ) La línea horizontal de abajo de izquirda a derecha, éSta

arriba hacia abajo.

derecha.

última linea cierra el cuadro.

- Cuando existe una figura dentro de un cuadro, lo último que se traza es la linea con que st? cierra el cuadro.

4

- L E C C I O N 1

En éSta opción se traza.rá uno por uno cada KANJI que forme parte de la lección elegida, en éste caso de la lección 1, el trazo de cada KANJI será siguiendo el orden correcto según las reglas ya mencionadas en la INTRODUCCION en un tiempo adecuado para que el usuario pueda observar y aprender el orden en que se debe trazar cada KANJI, además de que se proporcionará el significado del KANJI en cuestión y sus dos tipos de lecturas o pronunciaciones , es decir, la pronunciación I1KUNI1 Y la pronunciación "ONt'.

La pantalla que el usuario observará es la siguiente:

SIGNIFICADO:SOL/DIA

PRONUNCIACION ''KUN" : TPLIYO PRONUNCIACION llON1l : NICHI

OPCIONES: D-DIBUJAR P--MENU PRINCIPAL S-SIGUIENTE KANJI

I E

El significado de cada opción es el siguiente:

- DIBUJA: Dibuja nuevamente el KANJI - MENU PXINCIPAL: Regresa al usuario al menú principal, el cual se observa en la primer pantalla que ya se mencionó anteriormente, (pág. 3 ) .

- SIGUIZNTE KANJI: Dibuja el siguiente KANJI de la lección

Lo descrito para éSta cpción (LECCION i) le corresponde análogamente a las demás lecciones.

5

-EXAMEN 1

Al entrar a éSta opci6n se proporcionar6 otro menú, en el cual se seleccionara el tipo de examen que se desea resolver, éstos exdmenes corresponden a la LECCION 1, si la opci6n seleccionada hubiera sido IEXAMEN 2 (o cualquie otro del mund principal) aparecer6 el mismo menú que en el EXAMEN 1, pero una vez seleccionado el tipo de exámen éste corresponder6 a .la LECCION 2 o a la lección según la opción seleccionada.

El menú que se presentara es el siguiente:

OPCIONES A-AYUDA S-RELACIONAR KANJI-SIGNIFICADO D-RELACIONAR KANJI-DIBUJO P-MENU PRINCIPAL

f

Si la opción elegida e s A, corresponde a la ayuda de éste menú, la cual le explica al usuario cada opción del menú.

Si la opción elegida es S, corresponde al exámen tipo A.

- EXAMEN A En éste tipo de exámen se irán trazando los KANJI (uno por

uno) aleatoriamente en la parte superior de la pantalla, en la parte inferior aparecerá un.a lista de significados con una letra al lado de cada significado, en el momento que se termine de trazar el KANJI se deberá teclear la letra que le corresponda, si ésta es incorrecta sonará un beep, si se desea abandonar el ex6men antes de ser terminado se tiene la opción 2, se haya terminado el exámen o no, siempre aparecerá al final la calificación que se ha obte:nido en la realización de éste.

En la siguiente página se muestra un esquema de este tipo de ex6men.

6

EXAMEN A

, E o o

E L- A) SOL/DIA B) LUNA/MES C) ARBOL D) MONTAÑA E) RIO F)CAMPO DE ARROZ G ) HOMBRE/PERSONA H) BOCA I ) CARRO J) PUERTA

1

P) MENU PRINCIPAL

Si la opción elegida es D, el exámen será el exámen tipo B

- EXAMEN B

EL significado de cada KANJI se verá ejemplificado dentro de un paisaje, en el cual se colocará un letra en cada parte del paisaje que ejemplifique un KANJI, en la parte inferior de la pantalla se irá trazando cada KANJI (uno, por uno) aleatoriamente, la forma de resolver éste lexámen es la siguiente: al momento de que se termine de trazar el KANJI se deberá teclear la letra que le corresponde según el paisaje, si la respuesta es errónea sonara un beep, desaparecerá el KANJI para trazar en seguida uno nuevo, si la respuesta es correcta sucede lo mismo, solo que va acumulando puntos buenos para la calificación que se dará al final de la ejecución del exámen, si se desea a ~andonar éste sin ser terminado se cuenta con la opción 2". S

7 i

EL siguiente esquema muestra el tipo de examen B:

w KANJI: 1 OPCION P MENU PRINCIPAL

f- CALIFICACION 4

Si la opción es P, el usuario regresará al menú principal.

8

- KANJI Al entrar a esta opción se presentartin el significado de

todos los 109 KANJIS en dos pantallas, asi si se desea conocer un KANJI especifico no es necesario entrar a la lección donde éste se encuentre, ~ 6 1 0 hay que dirigirse a esta opción del mentí principal y señalar el KANJI que queremos observar en pantalla, éste se verá igual que como se explico en la opción LECCION 1: En esta parte también existe una ayuda, la cual le proporcionará al usuario una breve explica,ción de lo que es la opción KANJI.

- SALIR

Con ésta opción se da por terminado el uso del paquete.

- AYUDA La ayuda que aparece en el menú principal explica cada

opción de dicho menú.

9

CARACTERISTICAS GENERALES

El lenguaje que se decidió utilizar para la creación de éste paquete fue el Lenguaje C. Se seleccionó éste lenguaje por las caracteristicas con que cuenta, las cualles lo hacen apropiado para nuestro fin.

Algunas de las caracteristicas son las siguientes: ,

- C es un lenguaje de programación de empleo general. - C es un lenguaje que no esta ligado a ningún sistema operativo o máquina concretos.

- Debido a que los tipos de datos y estructuras de control que ofrece son manejados directamente por la mayoría de las computadoras actuales, la biblioteca de tiempo de ejecución, necesaria para realizar programas independientes es minúscula.

- Los programas en C tienden a ser lo suficientemente eficientes.

- Además de poseer un rico conjunto de operadores. A - El lenguaje es independiente a cualquier arquitectura de

máquina en particular y asi, es fácil escribir programas tlportátileslt, es decir; programas que pueden ejecutarse sin cambios en una amplia variedad de computadoras.

"109 KANJIS EN 10 LECCIONES" es un programa que hace uso de dos dos arreglos principalmente:

1) KANJI: Cuyo tamaño es da 109 y sus campos son los siguientes:SIGNIFICADO, KUN,ON.

2). LIM - LEC: De tamaño 10 y con los campos INICIO, FIN.

El primero para guardar el significado y pronunciaciones de cada KANJI, el segundo para guardar un apuntador al inicio y otro al final de cada lección.

~ Se seleccionó ésta estructura de datos ya que es rápida de acc sar además de que se sabe desde el principio el tamaño de los arreglos, (éste tamaño nunca varía). e

10

El paquete cuenta c m cuatro unidades de auxilio, la descripción de cada unidad s.e da a continuación:

1) DIBUJOS. C

En éSta unidad se define cada KANJI como una función, la cual s e crea en base a los trazos definidos en la unidad LINEAS.C,la cual se explicará más adelante.

Un ejemplo de las funciones que se encuentran en dicha unidad es el siguiente:

SOL ( 1 { o

LINEA2(2,0,2,16); LINEA1(2,0,10,0); LINEA2 (10, O , 10,16) ; LINEA1(2,8,10,8); LINEA1(2,16,10,16);

I A

Esta función cuando es llamada traza 'el KANJI cuyo significado es sol.

Dentro de ésta unidad hay otra función además de las de cada KANJ1,dicha función es la siguiente:

/*DADO EL NUMERO DEL KANJI ESTE SE DIBUJARA*/

DIBUJA(int NUM - KANJI)

switch (NUM KANJI) { case O : SOL() ; break; case 1: LUNA() ; brealk; case 2 : ARBOL() ; brealk;

-

case 109: SEMANA() ; break; I

11

2) 1NTR.C

En éSta unidad se encuentra el contenido de la INTRODUCCION el cual ya se mencionó en la descripción que se dió de la opción INTRODUCCION del menú principal (p6g.3).

, 3 ) L1NEAS.C.

En éSta unidad se defin.en lineas y curvas sencillas y dobles para el trazo de cada KANJI, éstas lineas y curvas se hacen por medio de las funciones con que cuenta el lenguaje C para el trazo de lineas o elipses.

Un ejemplo de las funci.ones que se encuentran en éSta unidad lo es:

/*ELIPSE SENCILLA, CENTRO ( X 0 , Y O ) ENTRE LOS ANGULOS (AO,A)*/

FLIPSE(int X0,int Y0,int A0,int A,int X,int Y) .{

int I; if (AOCA) {

for (I=AO; I<=A; I++) .(

ellipse(XO*DX,YO*DY,AO,I,X*DX,Y*DY); ellipse(XO*DX,YO*DY,AO,I,X*DX+l,Y*DY+l); delay 0 ;

1 1 else{

for (I=AO; I>=A; I--:) i

el1ipse(XO*DX,YO*DY,I,AO,X*DX,Y*DY); i e11ipse(XO*DX,YO*DY,I,AO,X*DX+1,Y*DY+1);

delay (1 1

1 1

12

- MENUS.C

En éSta unidad están. las funciones que controlan el movimiento del cursor, dentro del menú principal y del menú de KANJIS, además de que ejecuta la opción seleccionada.

- JAP0N.C

JAP0N.C es la unidad principal, en ésta unidad existen 6 funciones:

1) INICIALIZA() :Lo que hace ésta función es lo siguiente: del archivo KANJ1S.C se leen el significado y pronunciaciones de l o s kanjis y se van guardando en el arreglo de definiciones, finalmente del archivo LECCI0N.C se leen los limites de cada lección y se van guardando en el arreglo de límites.

2) DIBUJA LECCION(NUM LECC): Dibuja uno a uno los KANJIS de la lección correspondiente con las opciones de dibujarlo otra vez, regresar al menú principal o continuar.

3) DIBUJA KANJI(NUM KANJI) :Dibuja un KANJI con las opciones de dibujarlo oTra vez o regresar al menú principal, ésta función corresponde a las acciones que se hacen al escoger una opción del menú de KANJI, (menú donde se presentan los significados de todos los KANJIS para seleccionar uno).

4) EXAMEN(NUM LECCION): Aleatoriamente se prepara un exámen, es decir, por medi-o de un arreglo se guardan l o s números que se generan aleatoriamente para que en éste orden se presenten los KANJIS dentro de cada exámen, además de que en esta función se selecciona el tipo de exámen a resolver.

5 ) EXAMEN A() : Se lleva a cabo el exámen tipo A, el cual presenta los GNJIS a escala utilizando las funciones que estan en la unidad DIBUJOS.C, y presenta en la parte inferior de la pantalla un conjunto de significados para ir relacionando cada KANJI con su significado, como ya fue explicado anteriormente. En éste tipo de exámen se utiliza la función setviewport() para posicionar el cursor donde se desea bibujar el KANJI y con las variables DX y DY se da el tamaño del KANJI.

13

6) EXAMEN B ( ) : Se lleva a cabo el exámen tipo B, el Cual consiste en relacionar cada KANJI, que se traza a escala utilizando la unidad DIBUJOS.C, con su representación dentro de un paisaje. La realización, de éstos paisajes se detallan a continuación:

La creación de éstos pa.isajes consta de cinco fases:

1)CREACION DE LOS D1BU;JOS: Consta en la realización de los paisajes de cada exámen según la lección que corresponde, representando en forma gráfica el significado de cada KANJI.

2 ) CAPTURA DE LOS DIBUJOS: Una vez logrados l o s dibujos son capturados por medio del digitalizador (scanner) el cual llfotocopian los dibujos en el monitor de la computadora, teniendo la facilidad de salvarlos en archivo de disco en tres formatos distintos, para nuestros fines se utiliza el formato ImPCXgg.

3)DETALLE DE LOS DIBUJOS: Los dibujos son recuperados con el paquete editor de gráficos Paintbrush para su terminado.

Para el uso de dicho paquete es necesario principalmente una PC IBM, PC/XT, PC AT, o una computadora 100% compatible, los archivos del sistema operativo DOS versión 2 o posterior a ésta y un mouse.

Paintbrush tiene varias herramientas, las que se usaron para éste proyecto fueron muy elementales ya que sólo se ocuparon para el terminado de cada paisaje I1scanneadot1 y son: la goma para borrar, la línea para hacer líneas rectas ya sean horizontales o verticales, la curva para hacer cualquier tipo de curva, el texto para escribir, en nuestro c:aso las letras que aparecen en cada paisaje, teniendo la opción de seleccionar el tipo y tamaño de la letra, el borrado de color que es una opción muy útil ya que algunas figuras escanneadas se presentaban un poco manchadas, con ésta opción se le indica que color se quiere borrar de la figura y se borra o si se desea intercambiar un color por otro sólo basta indicarlo, de hecho para borrar se intercambia el color que se desea borrar por el color blanco, Paintbrush tiene una Itpaleta" propios proyecto blanco y

de coloresmuy extensa ya que el usuario puede crear sus colores además de los ya existentes, aunque en el "109 KANJIS EN 10 :LECCIONES" sólo se usaron los colores negro.

14

4)IMPORTACION DE LOS DIBUJOS AL PROGRAMA EN LENGUAJE C: Haciendo uso del programa residente FRIEZE las figuras ya terminadas se ttcongelantt en una sección de la pantalla en archivos de disco, con la facilidad de recuperarlos en el momento que se deseé, siempre y cuando se tenga el monitor en modo grdf ico.

Para cargar FRIEZE basta con cargar Paintbrush y después salirse del paquete o hacer :los siguientes pasos:

1) Teclear type paint.bat, esto da como resultado el siguiente mensaje: FRIEZE EPSONFX P1 10 lIBM 640 200 2 PBrush M lIBM 640 200 2

2 ) Teclear la primer 1í:nea del mensaje: FRIEZE EPSONFX P1 O lIBM 640 200 2

Finalmente con estos. pasos se logra cargar el FRIEZE en la memoria.

Así, cuando se corre el procedimiento salva imagen() (el cual se explica en el siguiente punto) al llegar-a la función !kbhit() esta es una pausa que detiene el procedimiento para usar el FRIEZE, con la tecla Print Screen se activa el FRIEZE apareciendo el siguiente menú:

FRIEZE: Exit PrtSc Load Save Viewport

A continuación se selecciona la opción Load y se indica el nombre del paisaje que se desea salvar en un archivo binario, la extensión del archivo que contiene el paisaje debe ser PCX, esto finalmente presenta el paisaje en la pantalla y finalmente se salva en el archivo binario con las funciones que se explican posteriormente.

La explicación de cada opción del FRIEZE se da brevemente a continuación:

Exit.-Sale del FRIEZE. PrtSc.-Imprime una pantalla de caracter base. Load.- Carga un archivo' de una figura previamente salvada. Save.-Salva la pantalla. Viewport. -Selecciona let porción de la pantalla que se desea

capturar con FRIEZE.

15

5)CARGADO DE LAS FIGURAS CON EL PROGRAMA EN LENGUAJE C: Esta parte representa la primera fase de programación, se creó la función salva imagen() , la c:ual guarda la imagen presente en el monitor (prevramente puesta con el FRIEZE) en memoria principal y la transfiere a un arch.ivo de disco, para su posterior recuperación.

El procedimiento que calrga las imdgenes en archivo de disco es el siguiente:

Variables:

FILE *FP char BITMAP[31320]

/*Crea un archivo binario en disco y carga en este la figura*/

void salva-imagen(char nombre[]) c FP=fopen(nombre,"wbVt) ; /*eJ modo 91wbg1 indica que se abre un*/

/*archivo para escritura en modo binario*/ while (!kbhit()); /*pausa para colocar el paisaje en pantalla*/

g e t i m a g e ( 0 , 0 , g e t m a x x ( ) , g e t m a x y ( ) , B I T M A P ) ;

f close (FP) ;

/*por medio del FRIEZE*/

fwrite(BITMAP,(unsigned)imagesize(O,O,getmaxx(),getmaxy()),l,FP);

1

/*Funcion que presenta el paisaje del archivo binario*/

void presenta(char nombre[]) c cleardevice ( ) ; FP=fopen(nombre,8trb11); /*se abre un archivo de lectura en * /

fgets (BITMAP, (unsigned) imalgesize ( O , O , getmaxx ( ) , getmaxy ( ) ) , FP) ; f close (FP) ; putimage ( O , O , BITMAP, COPY - F'UT) ; closegraph ( ) ;

/*modo binario*/

1

16

Finalmente se mencionan los archivos de ayuda:

Existe un archivo de ayuda el cual tiene una función que va a indicar un mensaje de error si es que se desea leer un archivo que no se encuentra.

Existen además 3 archivos:

AYUDA1.C que explica cada opción del menú principal AYUDA2.C que explica cada opción del menú de exdmen AYUDA3.C que explica la opción KANJIS del menú principal

PARA AGREGAR :MAS LECCIONES Y KANJIS

Para agregar más lecciones primero se deben de dar de alta las lecciones en el menú principal asi como el movimiento del cursor para poder seleccionar las nuevas lecciones, esto se hace en los procedimientos que se encuentran en la unidad de MENUS. Además se debe incrementar el arreglo TOT LEC que se encuentra en la unidad JAPON e indica el número total-de lecciones y se deben definir sus límites, es decir donde empieza la nueva lección y donde termina esto se hace en la unidad LECCI0N.C.

Para agregar más kanjis se incrementa el tamaño del arreglo TOT KANJIS que se encuentra en la unidad JAPON e indica el número total de kanjis y se deben definir en la unidad de DIBUJOS, si es necesario crear nuevas funciones para el trazo de los nuevos kanjis en la unidad de LINEAS y darlos de alta en el menú de kan j is.

Los exámenes kanji sigrlif icado no se pueden cambiar pero el de kanji dibujo s í , sólo basta crear los nuevos paisajes como ya se explizó anteriormente y cambiar los archivos de los paisajes por los nuevos.

A continuación se pmsentan los listados de cada unidad auxiliar ya explicada.

17

* 109 KANJIS EN 10 LECCIONES * /

* UNIDAD DE LINEAS * / * ALMA EDITH MARTINEZ LICONA 86326606 */ * VIDAL LUNA LOPEZ 8632883L2 * /

* LINEA SENCILLA DE (XO, YO) A (X, Y) * / INEAl (int XO, int YO, int X, int Y)

int I; float B, M;

if (XO == X) for (I = YO * DY; I <= Y * DY; I++:) {

line (X0 * DX, YO * DY, X * DX, I); line (X0 * DX + 1, YO * DY, X * DX + 1, I); delay (15) ;

1 else

if (YO == Y) for (I = X0 * DX; I <= X * DX; I++) {

line (X0 * DX, YO * DY, I, Y * DY); delay (15) ;

} else {

M = (float) (YO * DY - Y * DY) / (X0 * DX - X * DX); B = (Y * DY) .- (M * X * DX) ; if (X0 e X)

for (I = X0 * DX; I <= X * DX; I++) { line (X0 * DX, YO * DY, I, M * I + B); delay (15) ;

1 else

for (I = X0 * DX; I >= X * DX; I--) { line (I, M * I + B, X0 * DX, YO * DY); delay (15) ;

1 1 / * LINEA1 * /

* LINEA DOBLE DE (XO, YO) A (X, Y) * / INEA2 (int XO, int YO, int X, int Y)

int I; float B, M;

if (X0 == X) for (I = YO * DY; I <= Y * DY; I++-) {

line (X0 * DX - 1, YO * DY, X0 * DX - 1, I); line (XO * DX, YO * DY, xo * DX, I); line (XO * DX + I, YO * DY, xo *: DX + 1, I); delay (15) ;

1 else

if (YO == Y) for (I = X0 * DX; I <= X * DX; I:++) {

line (X0 * DX, YO * DY, I, YO * DY); line (X0 * DX, YO * DY + 1, I, YO * DY + 1); delay (15) ;

else {

if (X0 < X) for (I = X0 * DX; I <= X * DX; I++) { line (X0 * DX, YO * DY, I, M * I + B); line (X0 * DX + 1, YO * DY, I:, M * I + B + 1); delay (15) ;

1 else

for (I = X0 * DX; I >= X * DX; I--) { line (I, M * I + B, xo * DX, YO * DY); line (I, M * I + B + 1, xo * DX + 1, YO * DY); delay (15) ;

1 1

/ * LINEA2 */ * ELIPSE SENCILLA CENTRO (XO, YO) ENTRE LOS ANGULOS (AO, A ) * / LIPSEl (int XO, int YO, int AO, int A , int X, int Y)

int I;

if (A0 < A) { for (I = AO; I <= A; I++) { ellipse (X0 * DX, YO * DY, AO, I, X * DX, Y * DY); ellipse (X0 * DX, YO * DY, AO, I, X * DX + 1, Y * DY + 1);

1

else { for (I = AO; I >= A; I--) { ellipse (X0 * DX, YO * DY, I, AO, X * DX, Y * DY); ellipse (X0 * DX, YO * DY, I, AO, X * DX + 1, Y * DY + 1);

1 1 / * ELIPSE1 * /

* ELIPSE DOBLE CENTRO (XO, YO) ENTRE LOS ANGULOS (AO, A) */ LIPSE2 (int XO, int YO, int AO, int A, int X, int Y)

int I;

if (A0 < A) { for (I = AO; I <= A; I++) { ellipse (X0 * DX, YO * DY, AO, I, X * DX - 1, Y * DY - 1); ellipse (X0 * DX, YO * DY, AO, I, X * DX, Y * DY); ellipse (X0 * DX, YO * DY, AO, I, X * DX + 1, Y * DY + 1);

1 else { for (I = AO; I >= A; I--) { ellipse (X0 * DX, YO * DY, I, AO, X * DX - 1, Y * DY - 1); ellipse (X0 * DX, YO * DY, I, AO, X * DX, Y * DY); ellipse (X0 * DX, YO * DY, I, AO, X * DX + 1, Y * DY + 1);

1 1 / * ELIPSE2 * /

k DIBUJA UN MARCO ENTRE LOS PUNTOS ( X O , YO) A (X, Y) * / 4RCO (int XO, int YO, int X, int Y)

int I;

gotoxy (XO, YO); printf ( ~ ~ % c l ~ , 218); for (I = X0 + 1; I <= x - 1; I ++) { gotoxy (I, YO); printf ('l%cIl, 1 9 6 ) ;

1

gotoxy ( X , I); p r i n t f (*l%crl I 179); 1 gotoxy ( X , Y); p r i n t f ( l l % c * l I 217); f o r (I = X - 1; I >= xo + 1; I --) { gotoxy (I, Y); p r i n t f ( I 1 % c l l , 196);

gotoxy ( X O , Y); p r i n t f ("%c", 192); f o r (I = Y - 1; I >= YO + 1; I --) { gotoxy (XO, I ) ; p r i n t f ( I I % c l l , 179) ;

1 / * MARCO * / / * 109 KANJIS EN 10 LECCIONES * /

* UNIDAD DE AYUDA */ * ALMA EDITH MARTINEZ LICONA 86326696 */ * VIDAL LUNA LOPEZ 863288:12 * / YUDA ( i n t NUM)

char RENGLON; FILE *FP;

gotoxy (1, 25); swi tch (NUM) {

ca se O : i f ((FP = fopen (llINTR.C1t, l l r l ( ) ) == NULL) { p r i n t f ("FALTA ARCHIVO '1NTR.C ' I t ) ; getch (1 ;

1 break;

ca se 1: i f ( (FP = fopen ("AYUDAl. C" , ttrvt) ) == NULL) { p r i n t f ("FALTA ARCHIVO 'AYUDA1. C ' I t ) ; getch 0 ; >

break; ca se 2 : i f ( (FP = fopen ("AYUDA2. CIl, tlrtl) ) == NULL) {

p r i n t f ("FALTA ARCHIVO 'AYUDA2. C ' I 1 ) ; getch (1 ;

1 break;

c a s e 3 : i f ( (FP = fopen ("AYUDA3. C " , l l r l l ) ) == NULL) { p r i n t f ("FALTA ARCHIVO 'AYUDA3. C ' I f ) ; getch (1 ;

1 break;

1 i f (FP != NULL) {

clrscr ( ) ; RENGLON = g e t c (FP) ; whi l e (RENGLON != EOF) {

putchar (RENGLON) ; RENGLON = g e t c (FP) ;

k f c l o s e (FP) ; getch (1 ;

} / * AYUDA * /

' 109 KANJIS EN 10 LECCIONES */

UNIDAD DE DIBUJOS */

ALMA EDITH MARTINEZ LICONA 86326696 */ VIDAL LUNA LOPEZ 86328812 */

DADO EL NUMERO DE KANJI SE DIBUJA ESTE */ 'BUJA ( int NUM-KANJI)

swi tch (NUM-KANJI) C case O : SOL O ; break; case 1: LUNA O ; break; case 2: ARBOL O ; break; case 3: MONTANA O ; break; case 4: RIO O ; break; case 5: CAMPO-ARROZ O ; break; case 6: HOMBRE O ; break; ,

case 7: BOCA O ; break; case 8: CARRO O ; break; case 9: PUERTA O ; break; case 10: FUEGO O ; break; case 11: AGUA O ; break; case 12: ORO O ; break; case 13: TIERRA O ; break; case 14: NINO O ; break; case 15: MUJER O ; break; case 16: ESTUDIAR O ; break; case 17: VIVIR O; break; case 18: ANTERIOR O ; break; case 19: PRIVADO O ; break; case 20: UNO O ; break; case 21: DOS O ; break; case 22: TRES O ; break; case 23: CUATRO O ; break; case 24: CINCO O ; break; case 25: SEIS O ; break; case 26: SIETE O ; break; case 27: OCHO O ; break; case 28: NUEVE O ; break; case 29: DIEZ O ; break; case 30: CIEN O ; break; case 31: MIL O ; break; case 32: DIEZ-MIL O ; break; case 33: CIRCULO O ; break; case 34: ANO O ; break; case 35: ARRIBA O ; break; case 36: ABAJO O ; break; case 37: EN-MEDIO O ; break; case 38: GRANDE O ; break; case 39: PEQUEN0 O ; break; case 40: RAIZ O; break; case 41: MITAD O ; break; case 42: DIVISION O ; break; case 43: PODER O ; break; case 44: QUE O ; break; case 45: BRILLO O ; break; case 46: DESCANSO O ; break; case 47: CUERPO O ; break; case 48: AMOR O ; break; case 49: MASCULINO O ; break; case 50: MADERA O ; break; case 51: BOSQUE O ; break; case 52: ENTRE O ; break; case 53: CAMPO O ; break; case 54: ROCA O ; break;

case 55: case 56: case 57: case 58: case 59: case 60: case 61: case 62: case 63: case 64: case 65: case 66: case 67: case 68: case 69: case 70: case 71: case 72: case 7 3 : case 74: case 75: case 76: case 77: case 78: case 79: case 80: case 81: case 82: case 83: case 84: case 85: case 86: case 87: case 88: case 89: case 90: case 91: case 92: case 93: case 94: case 95: case 96: case 97: case 98: case 99:

OJO o; break; OIDO O ; break; WINO O ; break; PIERNA O ; break; LLUVIA O; break; BAnBU O; break; ARROZ O ; break; WIRISCO O ; break; PIEDRA O ; break; HILO O ; break; FLOR O ; break; - TE O ; break; CARNE O ; break; MODELO O ; break; LETRA O ; break; COSA O ; break; GANADO (1; break; CABALLO O ; break; PAJAR0 O ; break; PEZ O ; break; NUEVO O ; break; VIEJO O ; break; LARGO O ; break; CORTO 0 ; break; ALTO O ; break; SEGURO O ; break; BAJO O ; break; OSCURO O ; break; MUCHOS O ; break; POCOS (); break; IR O ; break; VENIR O ; break; REGRESAR ();, break; COMER O ; brpak; BEBER O ; break; VER 0 ; break; OIR 0 ; break; LEER O ; break; ESCRIBIR O ; break; HABLAR O ; break; COMPRAR O ; break; ENSENAR O ; break; MANANA O ; break; MEDIO-DIA1 O ; break; NOCHE1 O ; break;

case 100: NOCHE2 O ; break; case 101: TARDE O ; break; case 102: DlRECClON O ; break; case 103: MEDIO-DlA2 O ; break; case 104: ANTES O f break; case 105: DESPUES O ; break; case 106: TODOS 0 ; break; case 107: SEMANA O ; break; case 108: LUZ-DIA O ; break;

1 /* DIBUJA */ ,

LECCION 1 KANJIS lo - 9 */ \ )L o I

(

LINEA2 (2, O, 2, 1 ); LINEA1 (2, o, 10, P 0 ) ; LINEA2 (10, O , 10, 16); LINEA1 (2, 8, 10, 8); LINEA1 (2, 16, 10, 16);

,

LINEA2 (3, O, 3, 8 ) ; ELIPSE2 (2, 8, 360, 270, 1, 8); LINEA1 (3, O, 10, o);

-1NEA1 (3, 4, 10, 4 ) ; ..INEAl (3, 8, 10, 8);

LINEA2 (10, O, 10, 16);

LINEA1 (3, 6, 9, 6); LINEA2 (6, O, 6, 16); ELIPSE~ (3, 6, 360, 270, 3, 8); ELIPSE~ (9, 6, 180, 270, 3, 8 ) ;

NTANA ( )

LINEA2 (6, O, 6, 16); LINEA2 (O, 8, O, 16); LINEA1 ( O , 16, 12, 16); LINEA2 (12, 8, 12, 16);

LINEA2 (2, O, 2, 8 ) ; ELIPSE2 (1, 8, 360, 270, 1, 8); LINEA2 (6, O, 6, 14); LINEA2 (10, O , 10, 16);

HPO-ARROZ ( )

LINEA2 ( O , o, o, 16); LINEA1 ( O , o, 12, 0 ) ; LINEA2 (12, o, 12, 16); LINEA2 (6, O, 6, 16); LINEAl (O, 8, 12, 8 ) ; LINEA1 ( O , 16, 12, 16);

ELIPSE2 (3, 1, 360, 270, 3, 14); ELIPSE2 (9, 1, 180, 270, 3, 14);

LINEA2 ( O , o, o , 16); LINEAl ( O , O, 12, o); LINEA2 (12, O, 12, 16); LINEA1 (O , 16, 12, 16);

,

.

JIVIR 0 ( LINEA1 (2, 7, 4, 5); LINEAl (3, 6, 9 , 6); LINEA2 (6, 1, 6, 16); LINEA1 (3, 11, 9, 11); LINEA1 ( O , 16, 12, 16);

>

ANTERIOR 0 c LINEA1 (2, 5, 4, 3); LlNEAl (3, 4 , 9 , 4); LINEAl (6, O, 6, 8); LINEA1 (1, 8, 11, 8); ELIPSE1 (2, 8, 360, 270, 3, 7); LINEA1 (7, 8, 7, 15); LINEA1 (7, 15, 11, 15);

>

PRIVADO 0

LINEA1 (1, 2, 5, 1); LINEA1 (1, 4, 5 , 4); LINEA1 (3, 3 , 3, 15); LINEAl (1, 12, 3, 7); LINEA1 (3, 7, 5 , 12); LINEA1 (10, 2, 7, 12); LINEA1 (7, 12, 10, 14); LINEAl (10, 13, 10, 15);

1

/* LECCION 3 KANJIS 20 - 34 */

UNO 0 c LINEA2 (O, 8, 12, 8);

>

I

‘RES O

SIETE 0 c LINEA1 (2, 8, 10, 6); LINEAl (5, 1, 5 , 15); LINEA1 ( 5 , 15, 11, 15);

>

OCHO O c ELIPSE2 (2, 1, 360, 270, 3, 14); ELIPSE~ (10, 1, 180, 270, 3, 14);

>

NUEVE O c ELIPSE1 (2, 1, 360, 270, 3, 15); LlNEAl (1, 6, 8, 6); LlNEAl (8, 6, 8, 16); LINEA1 (8, 16, 12, 16);

>

DIEZ 0

LlNEAl (1, 8, 11, 8); LINEA1 (6, 1, 6, 15);

>

,

LINEAl ( O , O, 12, o ) ; LINEA1 (6, 4, 9, 4 ) ; ELIPSE1 (6, 4 , 360, 270, 3, 11); ELIPSE1 (2, O , 360, 270, 4 , 16);

LINEA1-(3, 1, 1, 3); LINEAl (2, 2, 10, 2); LINEA1 (2, 5 , 10, 5); LINEA1 (2, 5 , 2, 8); LINEAl ( O , 8, 12, 8); LINEA1 (6, 1, 6, 16);

' LECCION 4 KANJIS 35 - 44 "/

LINEA2 (6, O, 6, 16); LINEA1 ( O , 16, 12, 16); LINEAl (6, 7, 11, 7 ) ;

{AJO ( 1

LINEA2 (1, 5, 1, 11); LINEA1 (1, 5, 11, 5); LINEA2 (11, 5 , 11, 11);

LINEA2 (6, O, 6, 16); LINEAl (1, 11, 11, 11);

!ANDE 0

LINEA2 (6, O, 6, 7); ELIPSE2 (2, 7, 360, 270, 4, 8);

ELIPSE~ (10, 7, 180, 270, 4, 8); LINEAl (2, 7, 10, 7);

PUENO ( )

LINEAl (6, O, 6, 16); LINEA2 (5, 6, 2, 12); LINEA2 (7, 6, 10, 12);

LIZ 0

LINEAl (3, 6, 9, 6); LINEA2 (6, O, 6, 16); ELIPSE2 (3, 6, 360, 270, ELIPSE2 ( 9 , 6, 180, 270, LINEA1 ( 4 , 15, 8, 15);

TAD 0

LINEA1 (2, 1, 4 , 4 ) ; LINEA1 (10, 1, 8, 4 ) ; LINEA2 (1, 6, 11, 6); LINEA2 (1, 10, 11, 10); LINEA1 (6, O, 6, 16);

VISION 0

LINEA1 ( O , 7, 5, o); LINEA1 (7, O, 12, 7); LINEAl (3, 6, 9, 6); ELIPSE1 (7, 6, 360, 270, ELIPSE1 (3, 6, 360, 270,

X)ER 0

LINEAl (1, 6, 11, 6); ELIPSE1 (8, 6, 360, 270, ELIPSE1 (1, O , 360, 270,

JE 0

LINEA1 (o, 4 , 4 , o ) ; LINEA1 (2 , 2, 2, 15); LINEA1 (3, 2, 11, 2); LINEAl ( 4 , 4, 4, 7); LINEA1 ( 4 , 4, 7, 4 ) ; LINEA1 ( 7 , 4, 7, 7); LINEA1 ( 4 , 7, 7, 7); LINEA1 ( 9 , 2, 9, 15);

3, 8); 3, 8);

2, 9 ) ; 2, 9 ) ;

3,' 9 ) ; 5, 16);

I

I I

: LECCION 5 KANJIS 45 - 54 */ i

IILLO 0 -

SCULI NO ( )

LINEA2 (3, O , 3, 6); LINEA1 (3, o , 9 , 0 ) ; LINEA2 ( 9 , O , 9 , 6); LINEA^ (6, O , 6, 6); LINEAl (3, 3, 9 , 3); LlNEAl (3, 6, 9, 6); LINEAl (2, 8, 10, 8); ELIPSE1 (8, 8, 360, 270, 2, 8) ; ELIPSE~ (3, 6, 360, 270, 3, 10);

LINEAl (1, 6, 5, 6);

ELIPSE~ (1, 6, 360, 270, 2, 7); LINEA2 (3, 2, 3 , 14);

ELIPSE2 ( 5 , 6, 180, 270, 2, 7); LlNEAl (7, 6, 11, 6);

,

i i

LINEA2 ( 9 , 2, 9, 14); ELIPSEí! (7, 6, 360, 270, 2, 7); ELIPSEí! (11, 6, 180. 270, 2, 7);

LlNEAl (4, 2, 8, 2); LINEA,? (6, 1, 6, 8); ELIPSEZ (4, 2, 360, 270, 2, 5); ELIPSE2 (8, 2, 180, 270, 2, 5); LINEAl (1, 10, 5, 10); LINEA2 (3, 9, 3, 16); ELIPSEZ (1, 10, 360, 270, 2, 5); ELIPSE2 (5, 10, 180, 270, 2, 5 ) ; LINEA1 (7, 10, 11. 10); LINEA2 ( 9 , 9 , 9, 16); ELIPSE~ (7, 10, 360, 270, 2, 5); ELIPSE~ (11, 10, 180, 270, 2, 5);

LINEA2 ( 6 , O, 6, 6); LINEA2 (3 , 3, 3, 6); LINEA1 (3, 6, 9, 6); LINEA2 ( 9 , 3, 9, 6); I

LINEAl (2, 8, 10. 8); ELIPSE1 (1, 8, 360, 270, 3, 6); LINEA2 (4, 11, 4, 16); LINEAl (4, 11, 9, 11); LINEA2 (9, 11; 9 , 16); LINEA1 (4, 16, 9, 16);

~

I i

I

i

LECCION 6 KANJIS 55 - 64 */

LINEA2 (3, 1, 3, 7); LINEAl (3, 1, 9, 1); LINEA2 ( 9 , 1, 9, 7); LINEA1 (3, 7, 9, 7); LlNEA2 (6, 7, 6, 13); LINEA1 (6, 9, 9, 9 ) ; ELIPSE1 (2, 7, 360, 270, 1, 8); ELIPSE1 (11, 7, 180, 270, 8, 8 ) ;

LINEA2 ( 3 , 2, 1, 6);

LINEA2 (3, 4, 3 , 14); LINEA2 ( 9 , 2, 7, 6); LINEA1 ( 8 , 4, 11, 4); LINEA2 ( 9 , 4, 9, 14);

LINEA1 (2, 4, 5, 4);

,

LlNEAl (3, 6, 9, 6) ; LINEA2 (6, O, 6, 16); ELIPSE2 (3, 6, 360, 270, ELIPSE2 ( 9 , 6, 180, 270, LINEA1 (3, 3, 5, 5 ) ; LINEAl (7, 5, 9, 3);

3, 8); 3 , 8);

LlNEAl (1, 3, 1, 5); LlNEAl (1, 4, 5, 4 ) ; LINEA1 ( O , 9 , 6, 8);

LINEA1 (8, 1, 6, 5); LINEA2 (3, 1, 3, 15);

LINEA1 (7, 3, 12, 3); LINEA1 (12, 3, 11, 16); ELIPSE1 (6, 3, 360, 270, 2, 6); ELIPSE1 (6, 3, 360, 270, 4, 101;

LINEA1 (3, 2, 1, 6); LINEA1 (2, 4, 11, 4); LlNEAl (O , 9, 12, 9 ) ; LINEA2 (6, O , 6, 16);

3ALLO 0

i

LECCION 8 KANJlS 75 - 84 */

EJO 0

LECCION 9 KANJIS 85 - 96&/

LINEA1 (3, 1, 9, 1); LINEA2 (3, 2, 4 , 5); LINEA2 (9, 2, 8, 5); LINEA1 (2, 6, 10. 6) ; LINEA2 (6, O, 6, 16); ELIPSE~ (3, 6, 360, 270, 3, 8);

LINEA1 (1, 2, 6, o); LlNEAl (6, o , 11, 2); LINEA2 (6 , 1, 6, 2); LINEAl (3, 2, 9 , 2); LINEA2 (9, 2, 9 , 8); LINEAl (3, 5, 9, 5 ) ; LINEA1 (3, 8, 9 , 8); LINEA2 (3, 2, 3, 15); LINEA1 (3, 15, 4, 14); LlNEAl (8, 8, 5 , 11); ELIPSE1 (8, 8, 180, 270, 3, 6);

LINEAl ( O , 2, 3, 0 ) ; LlNEAl (3, o , 6, 2); LINEA2 (3, 1, 3, 2); LINEA1 (1, 2, 5, 2); LINEA2 (5 , 2, 5 , 6); LINEA1 (1, 4 , 5, 4); LINEAl (1, 6, 5 , 6) ; LINEA2 (1, 2, 1, 14); LINEA1 (1, 14, 3, 12); LINEA1 (3, 10, 3 , 14); ELIPSE1 (6, 1, 360, 270. 1; 5);

ELIPSE1 (6, 5 , 360, 270, 3, 10); LINEA1 (7, 3, 11, 3);

ELIPSE1 (12, 5, 180, 270, 3, 10);

,

ER 0

LINEAl (2, 1, 3 , 2); LINEA1 (1, 3, 5, 3 ) ; LINEA1 (2, 6, 4, 6); LINEA1 (2, 9 , 4, 9 ) ; LINEA2 (1, 12, 1, 15); LINEA? (1, 12, 5, 12); LINEA2 ( 5 , 12, 5 , 15); LINEA1 (1, 15, 5 , 15); LINEAl ( 7 , 4, 11, 4); LINEA2 ( 9 , O , 9 , 6); LINEA1 (7, 6, 11, 6 ) ; LINEA2 (6, 8 , 6, 10); LlNEAl (6, 8 , 12, 8 ) ; LINEAl ( 8 , 9 , 6, 15); LINEA2 ( 9 , 9, 9, 15); LlNEAl (9, 15, 12, 15);

LINEA1 ( 3 , 2, 9, 2); LINEA2 ( 9 , 2, 9, 6); LINEAl (1, 4, 11, 4); LINEA1 (3, 6, 9 , 6); LlNEAl (3, 8, 9, 8 ) ; LINEA1 (1, 10. 11, 10); LINEA2 (6, O , 6, 10); LINEA2 ( 3 , 12, 3, 16); LINEA1 (3, 12, 9, 12); LINEA2 ( 9 , 12, 9 , 16); LINEA1 (3, 14, 9, 14); LINEA1 (3, 16, 9 , 16);

MPRAR 0

LECCION 10 KANJIS 97 - 108 */

._

.INEA2 (9, 1, 9, 4 ) ;

.INEAI (3, 4 , 9, 4 ) ; :LIPSEl (1, 1, 360, 270, 2, 8); .INEA1 (8, 5, 11, 9 ) ; .INEA2 (4, 6, 4, 12); .INEA1 (4, 6, 8 , 6); .INEA2 (8, 6, 8, 12); .INEA1 ( 4 , 9, 8, 9); INEAl ( 4 , 12, 8, 12); .INEAl (1, 14, 11, 14);

LINEA1 (2, 6, 10, 6); LINEA2 (6, 2 , 6, 16);

NTES 0

ESPUES 0

LINEA1 ( 4 , 1, o , 5); LINEA1 ( 4 , 3, o , 7); LINEA2 (3, 5, 3, 15); LINEA1 (8, 2, 6, 4 ) ; LINEA1 (6, 4 , 8, 6); LINEAl (10, 4 , 8, 6); LINEAl (5, 6, 11, 6);

ELlPSEl (6, 6, 360, 270, 2, 4 ) ; LlNEAl (10, 5, 12, 7);

LINEA1 (8, 9, 10, 9); ELlPSEl (7, 9 , 360, 270, 3, 7); ELIPSE1 (11, 9 , 180, 270, 3, 7);

LlNEAl (3, o , 1, 2); LINEA1 (2, 1, 11, 1); LINEA2 (1, 3, 1, 15); LINEA1 (1, 15, 12, 15); LINEA1 (1, 3, 11, 3); ELIPSE1 (10, 3, 360, 270, 1, 13); LINEA2 (6, 3, 6, 15); LINEAl (O , 9, 12, 9) ;

EMANA ( )

i

1NTR.C

Usualmente cada kanji tiene dos formas de ser leido: I ) La lectura japonesa o "KUN YOMI" - _

La primera para cuando se usa el kanji como una sola palabra. La segunda para cuando se usa con otro kanji para formar una palabra.

La escritura de los kanjis tiene que seguir algunas reglas:

11) La lectura china o "ON Y O M I "

- Las tAneas horizontales s e trazan de izquierda a dereclha. - Las LAneas verticales se trazan de arriba a abajo. - Si son varias LAneas horizontales estas se dibujan de arriba a

- Si son varias lAneas verticales estas se dibujan de izquierda a - Los cuadros se dibujan en el siguiente orden:

abajo.

derecha.

1) la lAnea izquierda 111) la [Anea derecha 11) La lAnea superior IV) la [Anea inferior

- Si hay una figura dentro de un cuadro, la eltima lAnea en dibujars

- Si hay una linea que pasa atrevez un cuadro esta es la Eltima en es la que cierra el cuadro.

dibujarse. E N T E R

.

109 KANJIS EN 10 LECCIONES */

UNIDAD DE MENUS */

ALMA EDITH MARTINEZ LICONA 86326696 */ VIDAL LUNA LOPEZ 86328812 */

LOS MENUS SOLO ACEPTAN EL MOVIMIENTO CON LAS FLECHAS Y DEPENDIENDO DE LA POSICION QUE SE ENCUENTRE LA SECAL (X, Y) E S LA OPCION QUE SE EJECUTA */

,ar OPCION; It xo, YO, x1, Y1, x2, Y2;

gotoxy (X1, Yl); suitch (X1 + Y1) C ,-

case 42: cprintf (811NTRODUCCION11); break; case 29: cprintf (l8LECCION lii); break; case 30: cprintf ("LECCION 2"); break; case 31: cprintf ("LECCION 3i8); break; case 32: cprintf ("LECCION 4"); break; case 33: cprintf (iiLECCION 5"); break; case 34: cprintf ("LECCION 6"); break; case 35: cprintf (iiLECCION 7"); break; case 36: cprintf ("LECCION 8"); break; case 37: cprintf (ilLECCION 9"); break; case 38: cprintf ("LECCION 10"); break; case 56: cprintf ( iKANJIt8); break; case 57: cprintf (tiSALIR81); break; case 59: cprintf (ITXAMEN las); break; case 60: cprintf (ITXAMEN 211); break; case 61: cprintf ("EXAMEN 3"); break; case 62: cprintf ("EXAMEN 4"); break; case 63: cprintf (YXAMEN 5"); break; case 64: cprintf ('IEXAMEN 6"); break; case 65: cprintf ("EXAMEN 7"); break; case 66: cprintf ("EXAMEN 8"); break; case 67: cprintf ("EXAMEN 9 " ) ; break; case 68: cprintf ("EXAMEN 10"); break;

1 gotoxy (35, 23); /* IMPRIME1 */

* RESTRICCIONES Y MOVIMIENTOS DEL MENU PRINCIPAL */ IDE1 (1

highvideo O ; IMPRIME1 O ; lowvideo O ; do C do C

OPCION = toupper (getch O ) ; ) while (OPCION != O110 && OPCION != 0115 && OPClON != ol¿!o g&

OPClON != 0113 && OPCION != 015 && OPCION != 65); switch (OPCION) C case 65:

x0 = x1; YO = Y1; x1 = o; Y 1 = o; break;

case 0110: if ( Y 1 8) C

IMPRIME1 O ;

I I /

I

suitch (Y11 C case 9: X1 = 34; break; case 19: X1 = 20; break; case 20: X1 = 37; break;

1 Y1 = "Yl; highvideo O ; IMPRIME1 O ; lowvideo O ;

1 else printf (11\7");

break; case 0115:

if (X1 == 20 88 Y1 != 8 88 Y1 != 19 88 Y1 != 20) C IMPRIME1 O; X1 = 50; highvideo O ; IMPRIME1 O ; lowvideo O ;

1 else printf ("\7");

break; case 0120:

if ( Y 1 < 20) C IMPRIME1 O ; suitch (Y11 C case 8: X1 = 20; break; case 18: X1 = 37; break; case 19: X1 = 37; break;

1 Y1 = ++Y1; highvideo O ; IMPRIME1 O ; lowvideo O ;

1 else printf (I8\7l8);

break; case 0113:

if (X1 == 50) C IMPRIME1 O;

highvideo O ; IMPRIME1 O ; Lowvideo O ;

x1 = 20;

1 else printf ("\7");

break; 1

) while (OPCION ! = 015 88 OPCION != 65); * /* PIDE1 */

'* MENU PRINCIPAL */

!ENUro int 1;

,

x1 = 34; Y1 = 8; do C

clrscr O ; MARCO (1, 1, 79, 24); gotoxy (27, 3); printf (88'109 KAUJIS EN 10 LEGIONES"');

gotoxy (37, 5 ) ; printf ("CURSO l9#); gotoxy (34, 8 ) ; printf ("INTROOUCCION"); gotoxy (20, 9 ) ; printf (08LECCION 1 EXAMEN ill); gotoxy (20, 10); printf ("LECCION 2 EXAMEN 2");. gotoxy (20, 11); printf (88LECC10N 3 EXAMEN 3"); gotoxy (20, 12); printf ("LECCION 4 EXAMEN 4 " ) ; gotoxy (20, 13); printf ("LECCION 5 EXAMEN 5"); gotoxy (20, 14); printf ("LECCION 6 EXAMEN 6"); gotoxy (20, 15); printf ("LECCION 7 EXAMEN 7"); gotoxy (20, 16); printf ("LECCION 8 EXAMEN 8") ; gotoxy (20, 17); printf (tlLECCION 9 EXAMEN 9"); gotoxy (20, 18); printf ("LECCION 10 EXAMEN 10"); gotoxy (37, 19); printf (I8KANJIt8); gotoxy (37, 20); printf (ooSALIRB'); gotoxy (3, 23); printf (8aOPCIONES: 'A'yuda ?k %c %c %c ENTER I#, 30, 16, 31, 17); PIDE1 0 ; Cotoxy (Xl, Yl); printf (I' "1; suitch (X1 + Y 1 ) C case O: AYUDA (1); X1 = XO; Y1 = YO; break; case 42: case 29: case 30: case 31: case 32: case 33: case 34: case 35: case 36: case 37: case 38: case 56: case 59: case 60: case 61: case 62: case 63: case 64: case 65: case 66: case 67: case 68:

1

AYUDA ( O ) ; break; DIBUJA-LECCION (O) ; break; DIBUJA-LECCION (1); break; DIBUJA-LECCION (2); break; DIBUJA-LECCION (3); break; DIBOJA-LECCION (4); break; DIBUJA-LECCION (5); break; DIBUJA-LECCION (6); break; DIBUJA-LECCION (7); break; DIBUJA-LECCION ( 8 ) ; break; DIBUJA-LECCION (9); break; MENU2 0 ; break; EXAMEN EXAMEN EXAMEN EXAMEN EXAMEN EXAMEN EXAMEN EXAMEN EXAMEN EXAMEN

1 uhile (X1 + Y1 ! = ) /* MENU1 */

IMPRIME2 (int PAG) < gotoxy (X2, Y2);

(O) ; break; ( 1 1; break; (2); break; (3); break; (4); break; (5); break; (6); break; (7); break; ( 8 ) ; break; (9); break;

57);

I

if (PAC == O 8.g X2 + Y2 == 78) cprintf (8arLISTAD0 2"');

if (PAC == 7 gg X2 + Y2 == 78) etse

cprintf (a8'LISTAD0 l'*n);

i f (X2 + Y2 == 79)

else

else

cprintf ("'MENU PRINCIPAL"');

if (PAC == O 11 X2 + Y2 != 77) I

~

I

cprintf (KANJI C55 * PAC + (19 (X2 - 4) / 27 + Y2 - 3)l.SIGNIfICADO); gotoxy (35, 23);

1 /* IMPRIME2 */ i

/* RESTRICCIONES Y MOVIMIENTOS DEL MENU DE XANJIS */ PIDE2 (int PAG)

highvideo 0 ; IMPRIME2 (PAG); Lowvideo O ; do C do C OPCION = toupper

) while (OPCION I = OPCION !=

switch (OPCION) C case 65: x0 = x2; YO = Y2; x2 = o; Y2 = o; break;

case 0110: if (Y2 > 3) C

(getch O ) ; O110 && OPCION 0113 && OPCION

IMPRIME2 (PAG);

highvideo O ; IMPRIME2 (PAG); lowvideo O ;

Y2 = "Y2;

1 else

. printf ("\7"); break;

case 0115: if (X2 < 58) C IMPRIME2 (PAG); x2 = X2 + 27; highvideo O ; IMPRIME2 (PAC); Lowvideo O ;

1 else printf <"\7");

break; case 0120:

if (Y2 21) C IMPRIME2 (PAG); Y2 = ++Y2; highvideo O ; IMPRIME2 (PAC); lowvideo ();

1 else

break; case 0113:

if (X2 > 4) C

printf ("\7");

IMPRIME2 (PAC); x2 = X2 - 27; highvideo O ; IMPRIME2 (PAG); Louvideo O ;

1 else printf ("\7");

break; 1

) while (OPCION != 015 && ) /* PIDE2 */

OPCION !=

I = 0115 &S OPCION != Oli'o && I = 015 && OPCION != 65);

,

.

65);

/* MENU DONDE APARECEN TODOS LOS KANJIS, PARA ESCOGER UNO Y QUE SE DIBUJE */

2 0

C x2 = 4; Y2 3; do C clrscr 0 ; MARCO (1, 1, 79, 24); gotoxy (2, 3); printf (I8 SOL./.DIA gotoxy (2, 4 ) ; printf (I1 LUNA./.MES gotoxy (2, 5) ; printf (I1 ARBOL gotoxy (2, 6); printf (I1 MONTAEA gotoxy (2, 7); printf (I1 RIO gotoxy (2, 8); printf (I1 CAMPO.DE.ARRO2 gotoxy (2, 9); printf ( I a HOMBRE./.PERSONA gotoxy (2, IO); printf (Ia BOCA gotoxy (2, 11); printf (I1 CARRO gotoxy (2, 12); printf (I1 PUERTA gotoxy (2, 13); printf (I1 FUEGO gotoxy (2, 14); printf (I1 AGUA gotoxy (2, 15); printf ( " ORO./.DINERO./.METAL gotoxy (2, 16); printf (I1 TIERRA./.TERRENO gotoxy (2, 17); printf (It NIEO gotoxy (2, 18); printf (Is MUJER./.FEMENINO gotoxy (2, 19); printf (I1 ESTUDIAR gotoxy (2, 20); printf (I1 VIVIR./.NACER gotoxy (2, 21); printf (I1 ANTERIOR./.PREVIO

PRIVADO UNO DOS TRES CUATRO CINCO SEIS SIETE OCHO NUEVE DIEZ CIEN MIL DIEZ.MIL./.TODO CIRCIJLO./.YEN AEO. ,f. EDAD ARRIBA./.SUPERIOR AEAJO./.INFERIOR EN.MEDIO./.ADENTRO

gotoxy (3, 23); printf (lnOPCIONES: 'A'yuda %c %c %c %c ENTER", 30, 16, 31, 17); PIDE2 ( O ) ; if (X2 + Y2 == O ) C AYUDA (3); x2 = xo; Y2 = YO;

1 else

if (X2 + Y2 < 78) DIBUJA-KANJI (19 * (X2 - 4 ) / 27 + Y2 - 3);

1 while (X2 + Y2 != 78 && X2 + Y2 ! = 79); if (X2 + Y2 == 78) C x2 = 4; Y2 = 3; do C

clrscr O; MARCO (1, 1, 79, 24); gotoxy (2, 3:; printf (I1 OJO PEZ gotoxy (2, 4); printf (I1 OIDO NUE'dO gotoxy (2, 5) ; printf (In MANO VIEJO gotoxy (2, 6); printf ( I ' PIERNA LAR';O gotoxy (2, 7); printf (In LLUVIA COR ro gotoxy (2, 8); printf (I1 BAMBU ALTO./.CARO gotoxy (2, 9 ) ; printf (I1 ARROZ SEtIJRO./.EARATO gotoxy (2, 10); printf (Ii MARISCO EA JO

gotoxy (2, 11); printf (It PIEDRA OSCURO gotoxy (2, 12); printf (I1 HILO MUCHOS gotoxy (2, 13); printf FLOR POCOS gotoxy (2, 14); printf (I1 TE IR gotoxy (2, 15); printf (It CARNE VEAIR gotoxy (2, 16); printf (I1 MODELO./.PATRON REGRESAR gotoxy (2, 17); printf (I1 LETRA./.CARACTER COMER gotoxy (2, 18); printf (I1 COSA BEBER gotoxy (2, 19); printf (I1 GANADO VER1I); gotoxy (2, 20); printf CABALLO o1 I R gotoxy ( 2 , 21); printf PAJAR0 LEIIR gotoxy (3, 23); printf (810PCIONES: 'A'yuda %c %c %c %c ENTER", 30, 16, 31, 17); PIDE2 (1);

GRANDE"); PEPUEEOI~); RAIZ./.0RIGENl1); MITAD"); DIVISION"); PODER./.FUERZAI'); QUE"); BRILLO./.LUZ"); DESCANSO"); CUERPO"); AMOF"); HOMDRE./.MASCULINO1'); MADERA"); BOSPUE./.JUNGLA"); ENTRE./.INTERVALO"); CAMPO.CULTIVAD0"); ROCA" ) ; 'LISTADO 2'"); 'MENU PRINCIPAL'II);

ESCRIBIR1'); HABLAR"); COMPRAR"); ENSEEAR"); MAEANA") ; MEDIO.DIA"); NOChE"); NOCHE":; TAZDE"!; DIRECCION"!; MEDIO.DIA1'); ANTESI'); DESPUES"); TODOS"); SEMANA"); LUZ.DIA");

'LISTADO l''t); 'MENU PRINCIPAL'");

if (X2 + Y 2 == O ) C AYUDA (3); x2 xo; Y2 = Y O ;

> else

if (X2 + Y2 < 77) DIBUJA-KANJI (55 + 19 * (X2 - 4 ) / 27 + Y2 - 3);

> while (X2 + Y2 != 78 &&'X2 + Y2 != 79); > uhile (X2 + Y2 != 79);

MENU2 */

09 KANJIS EN 10 LECCIONES */

NIDAD PRINCIPAL */

LMA EDITH MARTINEZ LICONA 86326696 */ IOAL LUNA LOPEZ a632aa12 *I

clude <conio.h> clude <graphics.h> clude <stdio.h> clude <stdlib.h>

def struct C ar SIGNIFICADO 1251, KUN (251, ON [251; nji;

def struct C t INICIO, FIN; m-Lec;

fine TOT-KANJIS 109 fine TOT-LECCIONES 10

i KANJI [TOT-KANJISI; /* ARREGLO DE DEFINICIONES */ lec LIM-LECCION [TOT-LECCIONESI; /* ARREGLO DE LIMITES */

DX, DY; /* DETERMINAN EN TAMAEO DEL KANJI */

c 1 ude Ilayuda. c" clude 81dibujos.c11 clude llLineas.cgl c 1 ude %enus. c"

ORDEN-EX [161; /* PARA GUARDAR EL EXAMEN */

EL ARCHIVO 'KANJ1S.C' SE LEEN EL SIGNIFICADO Y PRONUNCIACIONES E LOS KANJIS Y SE VAN GUARDANDO EN EL ARREGLO DE DEFINICIONES EL ARCHIVO 'LECC1ON.C' SE LEEN LOS LIMITES DE CADA LECCION Y E VAN GUARDANDO EN EL ARREGLO DE LIMITES */ INICIALIZA (1

t I; LE * F P ;

wvideo 0 ;

for ( I O ; I < TOT-KANJIS; I++) C ((FP fopen (llKANJIS.C1l, llrll)) ! = NULL) C

fscanf (FP, 18%su1, KAN:I [ I 1 .SIGNIFICADO); fscanf (FP, lu%sll, KANJI CII.KUN); fscanf (FP, I8%st8, KANJI [I] .ON);

> fclose (FP); if ((FP = fopen for ( I O ; I fscanf (FP, fscanf (iP,

> fclose (FP); return 1;

1 else C

(blLECCION.C1l, 18r1n)) ! = NULL) C < TOT-LECCIONES; I+-) C % i B 1 , BLIM-LECCION 1 1 1 .INICIO); %W, ZLIM-LECCION [ I 1 .FIN);

printf ("FALTA ARCHIVO 'LECCION.C'l1); return O ;

1

se C printf ("FALTA ARCHIVO 'KANJ1S.C'");

?turn O;

;NICIALIZA */

iUJA UNO A UNO LOS KANJIS DE LA LECCION CON LAS OPCIONES DE IUJARLO OTRA VEZ, REGRESAR AL MENU PRINCIPAL O CONTINUAR */ I-LECCION (int NUM-LECCION)

DRIVER, MODE, I, NUM-KANJI; ' OPCiON;

IER = DETECT; :graph (&DRIVER, BMOOE, " I u ) ;

: getmaxx (1 / 64; : getmaxy 0 / 64; KANJI = LIM-LECCION [NUM-LECCIONl.INICIO;

eardevice (); 3tcolor (15); ltvieuport (O, O, getrnaxx ( 1 , getmaxy (1 , O); jttextxy (22 * DX, 48 * DY, NSiGN!FICADO : ,I);

lttextxy (22 * DX + textwidth (ItSIGNIFICAOO : I , ) , 48 * DY,

::textxy (4 * DX, 56 * DY, 88PRONUNCiACION 'KUN' : I,); lttextxy (4 * DX + textwidth (~'PRONUNCIACION 'KUN' : "), 56 't DY,

lttextxy (34 * DX, 56 * DY, 88PRONUNC1ACION 'ON' : I , ) ;

rttextxy (34 * DX + textwidth (taPRONUNCIACION 'ON' : "), 56 '* DY,

Jttextxy (O, getmaxy ( ) - textheight ("A"), "OPCIONES: D - D!:BUJAR

:ctar.;!e (18 DX, 8 * DY, 46 * DX, 40 * DY); I í

setviewport (18 * DX, E * DY, 46 DX, 40 DY, O); se:cslor (15); for ( I = 2 ; I c= 28 DX - 2; I++)

setcolor (O); setviewport (26 * DX, 16 * DY, 38 * DX, 32 * Di', O ) ; DIBUJA (HUM-KANJI); do C .p

KANJI [NVM-KMJli .SIGNIFICADO);

KAN J I [NUM-KAN J 11 . KUN ;

KANJI [NUM--KANJII .ON);

P - MENU PRINCIPAL S - S?GU?E?ITE KANJI");

Line (I, 2 , I , 32 DY - 2);

OFCION = tou;per (getch O ) ;

i f (OPCION != ID' && ÚPCIGN ! = 'S' && OPCiON != 'P:) printf (81\716);

> uhile (CFCION != 'D' && OPCION ! = 'S' && OPCION != 'P'); bihile (OPC!ON == '0 ' ) ;

#Ale (OPCION == ' S ' && NUM-KANJI <= LIM-LECCION INUM-LECCIONI.FIN); .egrsph (1;

NL'M-KAN J I ;

IBUJA-LECCION */

J.!A L'N KA!iJI DAHCO LAS G P C l C 6 E S DE L'JARL!! OTRA VEZ O REGZESAR AL MENU */ - KANJI (int NUM-KANJI)

DRIVER, MODE, I; OPCICN;

.-.

ER = DETECT; graph (&DRIVER, BMODE, llll);

getrnaxx (1 / 64; getrnaxy 0 / 64; rdevice O ; olor (15); iewport ( O , O , getmaxx O , getmaxy O , O) ;

." A -., ,,, * _., ..^.^. .. ...e...- . ...

ttextxy (22 * DX + textwidth ("SIGNIFICADO : "), 48 * DY, KANJI [NUM-KANJI1 .SIGNIFICADO);

ttextxy (4 * DX, 56 * DY, "PRONUNCIACION 'KUN' : I O ;

ttextxy (4 * DX + textwidth ("PRONUNCIACION 'KUN' : "1, 56 * DY, KAN J I [NUM--KAN J I 1 . KUN ) ;

ttextxy (34 * DX, 56 * DY, '!PRONUNCIACION 'ON' : I t ) ;

ttextxy (34 * DX + textwidth (l'PRONUNCIACION 'ON' : "), 56 * DY,

ttextxy ( O , getmaxy ( ) - textheight ("A"), "OPCIONES: D - DIBUJAR ctangle (18 * DX, 8 * DY, 46 * DX, 40 * DY);

setviewport (18 * DX, 8 * DY, 46 * DX, 40 * DY, O ) ; setcolor (15); for ( 1 = 2; 1 <= 28 * DX - 2; I++)

setcolor (O); jetviewport (26 * DX, 16 * DY, 38 * DX, 32 * DY, O); IiBUJA (NUM-KANJI); do c

KANJI [NUN-KANJI1 .ON);

M - MENU");

c

line (I, 2 , I , 32 * DY - 2);

OPCION = toupper (getch O ) ;

if (OPCION != 'DI && OPCION != 'M') printf (8r\71i);

) while (OPCION != ID' 88 OPCION != 'M'); dhile (OPCION == ID'); xegraph 0 ; DIBUJA-KANJI */

LEATORIAMENTE SE PREFARA UN EXAMEN Y SE ESCOGE JAL DE LOS DOS SE CESEA PRESENTAR */ EN (int NUM-LECCION)

t I, J, K, AUX, NK; 3r OPCION;

= LIM-LECCION [NUM-LECCIONI.FIN - LIM-LECCION [NUM~LECCIONI.INICIO + 1; r ( I = 1; I <= NK; I ++)

IRDEN-EX 1 1 1 = o; = o; ldcmize O ; c : = o; I ++; jo c AUX = rand ( 1 Y. NK; J = O; do C

) while (ORDEN-EX [JI ! = AUX && J < I); if (J == I ) C

J ++;

ORDEN-EX 1 1 1 = AUX; K = 1;

> ) while (K == O ) ; dhile ( I < NK); :CO (15, 8, 65, 20); toxy (16, 9); cprintf ( I4

toxy (16, 10); cprintf ( I t OPCIONES : :OXY (16, 11); cprintf (I1

:OXY (16, 12); cprintf ( I t A - AYUDA :OXY (16, 13); cprintf ( I8

:OXY (16, 14); cprintf ( I ( D - RELACIONAR KANJI - DIBUJO :OXY (16, 15); cprintf (I1

:OXY (16, 16); cprintf (I1 P - MENU PRINCIPAL, :oxy (16, 17); cprintf (I1

toxy (16, 18); cprintf (la S - RELACIONAR KANJI - S!GNIFICADO"); toxy (16, 19); cprintf ( I ' I# ) ;

toxy (29, 10);

OPCION = toupper (getch 0 ) ;

if (OPCION != 'A' 88 OPCION ! = 'DI && OPCION ! = 'PI && OPCIOU ! = ' S ' )

c

printf ("\7"); while (OPCION ! = 'A' 88 OPCION ! = ID' 88 OPCION ! = 'PI&& 0PC::ON ! = ' S ' ) ;

itch (OPCION) C case 'A': AYUDA (2); break;. case 'DI: EXAMEN-D (NUM-LECCION); break; case ' S I : EXAMEN-S (NUM-LECCION); break;

ldow ( O , O, 79, 25); EXAMEN */

ELACIONA EL KANJI CON UN DIBUJO */ EN-D (int NUM-LECCION)

LE *FP; 3r BITMAP [160061; : DRIVER, MODE, I, NK, OPCION, BUENAS;

itch (NUM-LECCION) C :ase O: if ((FP = fopen (8'EXAMEN1.B1t, I1rb")) == NULL) C

printf ("FALTA ARCHIVO 'EXAMEN1 .B t a u ) ;

getch O ; 1 break;

case 1: if ((FP = fopen ("EXAMENZ.B", 81rb11)) == NULL) C printf ("FALTA ARCHIVO 'EXAMEN2.B getch O ;

1 break;

case 2: if ((FP = fopen ("EXAMEN3.B", alrb'o)) == NULL) C printf ("FALTA ARCHIVO 'EXAMEN3.B l l l ) ;

getch O ; 1 break;

:ase 3: if ((FP = fopen ("EXAMEN4.Bt1, 88rb1u)) == NULL) { printf ("FALTA ARCHIVO 'EXAMEN4.B l l l);

getch O ; 1 break;

:ase 4 : if ((FP = fopen ("EXAMENS.B", tlrb")) == NULL) { printf ("FALTA ARCHIVO 'EXAMEN5.B I l l ) ;

getch O ; 1 break;

:ase 5 : if ((FP = fopen (11EXAMEN6.B81, l@rbll)) == NULL) ( printf ("FALTA ARCHIVO 'EXAMEN6.B I l l ) ;

getch O ; > break;

:ase 6: if ((FP = fopen (8uEXAMEL7.Ba1, 1trb4t)) == NULL) C printf ("FALTA ARCHIVO 'EXAMEN7.B 'Ii);

getch o ; 1 break;

:ase 7: if ((FP = fopen (itEXAMEN8.B'1, alrbal)) == NULL) { printf ("FALTA ARCHIVO 'EXAMEN8.B ' I1);

getch O ; 1 break;

:ase 8: if ((FP = fopen ("EXAMEN9.Btt, "rbtl)) == NULL) C printf ("FALTA ARCHIVO 'EXAMEN9.B I t*) ;

getch O; > break;

:ase 9: if ((FP = fopen (tlEXAMENIO.BM, I1rbtt)) == NULL) C printf ("FALTA ARCHIVO 'EXAMEN1O.B " I ) ;

getch O ; 1 break;

(FP != NULL) C 'or ( I O; I < 16006; I++)

'gets (BITMAP, 16006, FP); 'close (FP); WENAS O; IK=LIM-LECCION CNUM-LECCIONI.FIN - LIM-LECCION INUM~LECC1ONI.INICIO + 1; )RIVER = DETECT; initgraph (&DRIVER, &MODE, ""); utirnage ( O , O , BITMAP, COPY-PUT); IX = getrnaxx O / 128; JY = getrnaxy O / 128;

hJ c

BITMAP [ I 1 = o ;

= o;

I ++;

setviewport ( O , getmaxy 0 - 16 * DY, getmaxx O , getmaxy O, O); clearviewport O; outtextxy ( O , O , "KANJI :I1);

outtextxy(textwidth ("KANJI: ")+15*DX, 0,"OPCION P - MENU PRINCIPAL"); setviewport (textwidth ("KANJI : "), getmaxy ( ) - 16 * DY, getmaxx O ,

DIBUJA (LIM-LECCION [NUM-LECCIONI .INICIO + ORDEN-EX [ I 1 1; OPCION = toupper (getch O ) - 65; if (ORDEN-EX I 1 1 == OPCION)

else

getnlaxy O, O ) ;

BUENAS ++;

printf ("\7"); I while ( I < NK && OPCION != 15); ;etviewport ( O , O , getmaxx O, getmaxy O, O ) ; ~uttextxy (100 * DX, getmaxy 0 - textheight ("A"), "CALIFICP.CION : "1; if (BCENAS * 10 / NK > O ) outtextxy (100*DX+textwidth('8CAL!FICAC!ON:'1), getrnaxy O-textheight

(IIAII), KANJI [BUENAS * 10 / NK + 191 .S,IGNIFICADO); :[se outtextxy (lOO*DX+textwidth("CALIFICACION:"), getmaxy 0 - textheight

( I 1 A , l 1 ) , alCERO"); ]etch O ; : 1 osegraph ( 1 ;

EXAMEN-D */

ILACIONA EL KANJI CON SU SIGNIFICADO */ :N-S (int NUM-LECCION)

: DRIVER, MODE, I, NK, XX, YY, OPCION, BUENAS;

iNA5 = o; = LIM-LECCION [NUM-LECCIONI.F!N - LIM-LECCION INUM-LECC1ONI.IN:CIO + 1; 'VER = DETECT; itgraph (&DRIVER, &MODE, 1 8 1 u ) ;

= getmaxx O / 128; getmaxy O / 128;

= getmaxx O / 9; = getmaxy O /9; . ( I = 1; I <= NK; I++) E ;witch ( I ) C case 1: outtextxy ( 1 * XX, 5 * YY, "A ) I n ) ;

outtextxy (1 * XX + 30, 5 * YY,

break;

outtextxy (6 * XX + 30, 5 * YY,

break;

outtextxy ( 1 * XX + 30, 5 * YY + IO,

break;

outtextxy ( 6 * XX + 30, 5 * YY + 10,

break;

outtextxy ( 1 * XX + 30, 5 * YY + 20,

break;

outtextxy (6 * XX + 30, 5 * Y Y + 20,

break;

outtextxy ( I * XX + 30, 5 * YY + 30,

break;

outtextxy ( 6 * XX + 30, 5 * YY + 30,

break;

outtextxy (1 * XX + 30, 5 * YY + 40,

break;

KANJI [LIM-LECCION [NUM-LECCIONI .INICIO + 01 .SIGNIFICADO);

case 2: outtextxy (6 * XX, 5 * YY, I l B )I1);

KANJI ILIM-LECCION INUM-LECCIONl.INICI0 + 1l.SIGNIFICADO);

case 3: outtextxy (1 * XX,. 5 * YY + 10, I1C )I1);

KANJI [LIM-LECCION [NUM-LECCIONI .INICIO + 21 .SIGNIFICADO);

case 4: outtextxy (6 * XX, 5 * YY + 10, I1D )I1);

KANJI [LIM-LECCION [NUM~LECCIONI.INICIO + 31.SIGNIFICADO);

case 5: outtextxy ( 1 * XX, 5 * Y Y + 20, "E )I1);

KANJI ILIM-LECCION INUM~LECCIONI.INICIO + 41.SIGNIFICADO);

case 6: outtextxy (6 * XX, 5 * YY + 20, )I1);

KANJI [LIM-LECCION [NUM-LECCIONI.INICI0 + 5l.SIGNIFICADO);

case 7: outtextxy (1 * XX, 5 * YY + 30, )I1);

KANJI [LIM-LECCION [NUM-LECCIONl.INICI0 + 61.SIGNIFICADO);

case 8: outtextxy (6 * XX, 5 * YY + 30, I1H ) I t ) ;

KANJI [LIM-LECCION INUM~LECCIONI.INICIO + 7l.SIGNIFICADO);

case 9: outtextxy (1 * XX, 5 * YY + 4 0 , "1 ) I1) ;

KANJI CLIM-LECCION INUM-LECCIONI.INICI0 + 8l.SIGNIFICADO);

case 10: outtextxy (6 * XX, 5 * YY + 40, IIJ )I1);

outrextxy (6 * XX + 30, 5 * YY + 40,

break;

outtextxy (1 * XX + 30, 5 * YY + 50,

break;

outtextxy ( 6 * XX + 30, 5 * Y Y + 50,

break;

KANJI [LIM-LECCION [NUM~LECCIONl.INICIO + 9l.SIGNIFICADO);

case 11: outtextxy ( 1 XX, 5 * Y Y + 50, IIK )ll);

KANJI [LIM-LECCION CNUM-LECCIONl.INICI0 + IOl.SIGNIFICAD0);

case 12: outtextxy (6 XX, 5 * Y Y + 5 0 , )I1);

KANJI [LIM-LECCION [NUM~LECCIONI.INICIO + 11I.SIGNIFICADO);

case 13: outtextxy ( 1 * XX, 5 * YY + 60, "M ) I1) ;

outtentxy ( 1 * XX + 30, 5 * Y Y * 60,

break;

outtextxy (6 * XX + 30, 5 * YY + 60,

break;

outtextxy ( 1 * XX + 30, 5 * YY + 70,

break;

KANJI [LIM-LECCION INUM-LECCIONl.INICI0 + 12I.SIGNIFICADO);

case 14: outtextxy (6 * XX, 5 * YY + 60, "N )I1);

KANJI [LIK-LECCION CNUM-LECC!CNI .INICIO + 731 .S!GNIFICADO);

case 15: outtextxy ( 1 * XX, 5 * YY + 70, I1O )I1);

KANJI [LIM-LECCION [NUM-LECCIONI.INIC:O + 14l.S;:GNIFICADO);

>

ttextxy (6 * XX, 5 * YY + 70, I1P ) MENU PRINCIPAL"); = o; c

I ++; switch ( I ) C

case 1: setviewport (2 * XX, 1 * YY, getmaxx O , case 2: setviewport (3 * XX, 1 * YY, getmaxx O , case 3: setviewport (4 * XX, 1 * YY, getmaxx O , case 4: setviewport ( 5 * XX, 1 * YY, getmaxx O , case 5: setviewport ( 6 * XX, 1 * YY, getmaxx O , case 6: setviewport ( 2 * XX, 2 * YY, getmaxx O , case 7: setviewport (3 * XX, 2 * YY, getmaxx O , case 8: setviewport (4 * XX, 2 * YY, getmaxx O , case 9: setviewport ( 5 * XX, 2 * YY, getmaxx (1, case 10: setviewport (6 * XX, 2 * YY, getmaxx O , case 11: setviewport (2 * XX, 3 * YY, getmaxx O , case 12: setviewport (3 * XX, 3 * YY, getmaxx O , case 13: setviewport (4 * XX, 3 * YY, getmaxx O , case 14: setviewport (5 XX, 3 * YY, getmaxx O , case 15: setviewport ( 6 * XX, 3 * YY, getmaxx O ,

)

3IBUJA (LIM-LECCION [NUM-LECCIONl.INICI0 + ORDEN-EX

getmaxy (: 1, O ) ; break; getmaxy O , O ) ; break; getmaxy ( ) , O ) ; break; getmaxy O , O ) ; break; getmaxy O , O); break; getmaxy O , O); break; getmaxy ( ) , O); break; getmaxy O , O ) ; break; getmaxy O , O ) ; break; getmaxy ( ) , O); break; getmaxy O , O ) ; break; getrnaxy (1, O ) ; break; getmaxy O , O ) ; break; getmaxy O , O ) ; break; getmaxy 0 , O ) ; break;

3PCION = toupper if (ORDEN-EX [ I 1

? [ s e BUENAS ++;

printf ("\7"); dhile ( I < NK && :viewport ( O , O, :textxy ( 2 * XX,

(getch 0 ) - 65; == OPCION)

OPCION != 15); getmaxx 0 , getmaxy 0 , O); getmaxy ( ) - textheight ("A"), "CALIFICACION : ");

(BUENAS 10 / NK > O ) Jttextxy (2 * XX + textwidth ("CALIFICACION : ' I ) ,

2tmaxy ( ) - textheight (laA1u), KANJI [BUENAS * 10 / NK + 191.SIGNIFICADO); je wttextxy (2 * XX + textwidth (8TALIFICACION : "1, detmaxy 0 - textheight (fiaA"), 'lCERO"); tch O ; xegraph (1; EXAMEN-S */

(INICIALIZA O == 1 ) C qENU1 0 ; :Lrscr ();

MAIN */