Universidad Politécnica del Estado de Universidad Politécnica del Estado de Universidad Politécnica del Estado de Universidad Politécnica del Estado de MorelosMorelosMorelosMorelos
Implantación en formato Moodle de aplicaciones informáticas para la enseñanza a distancia de la Química en el nivel medio superior
T E S I ST E S I ST E S I ST E S I S
Que para obtener el título de:
INGENIERO EN INFORMÁTICAINGENIERO EN INFORMÁTICAINGENIERO EN INFORMÁTICAINGENIERO EN INFORMÁTICA
P r e s e n t a
HUGO HEREDIA RODRÍGUEZHUGO HEREDIA RODRÍGUEZHUGO HEREDIA RODRÍGUEZHUGO HEREDIA RODRÍGUEZ
Directores de Tesis externos
DR. JOSÉ MARIO ORDOÑEZ PALACIOS DR. JOSÉ MARIO ORDOÑEZ PALACIOS DR. JOSÉ MARIO ORDOÑEZ PALACIOS DR. JOSÉ MARIO ORDOÑEZ PALACIOS SSSSNNNNIIII IIIIIIII
DRA. SELENE LAGUNASDRA. SELENE LAGUNASDRA. SELENE LAGUNASDRA. SELENE LAGUNAS RIVERARIVERARIVERARIVERA
cDRA. EN C. SILVIA MELBI GAONA JIMÉNEZcDRA. EN C. SILVIA MELBI GAONA JIMÉNEZcDRA. EN C. SILVIA MELBI GAONA JIMÉNEZcDRA. EN C. SILVIA MELBI GAONA JIMÉNEZ
Directora de Tesis interna
cDra. en C.cDra. en C.cDra. en C.cDra. en C. SILVIA MELBI GAONA JIMENEZSILVIA MELBI GAONA JIMENEZSILVIA MELBI GAONA JIMENEZSILVIA MELBI GAONA JIMENEZ
Jiutepec, Morelos Febrero de 2011
I
TABLA DE CONTENIDOTABLA DE CONTENIDOTABLA DE CONTENIDOTABLA DE CONTENIDO
LISTA DE FIGURAS .................................................................................................................. IV
LISTA DE TABLAS .................................................................................................................... VI
CAPÍTULO 1. INTRODUCCIÓN ................................................................................................... 1
1.1. Planteamiento de hipótesis ...................................................................................... 1
1.2. Antecedentes ............................................................................................................ 1
1.3. Planteamiento del problema .................................................................................... 2
1.4. Panorama general del proyecto ............................................................................... 2
1.5. Objetivo general ........................................................................................................ 3
1.5.1. Objetivos específicos ........................................................................................ 3
1.6. Justificación .............................................................................................................. 4
1.7. Alcances y limitaciones............................................................................................. 4
1.7.1. Alcances ............................................................................................................ 4
1.7.2. Limitaciones ...................................................................................................... 5
1.8. Organización de la Tesis ........................................................................................... 5
CAPÍTULO 2. MARCO TEÓRICO ................................................................................................. 7
2.1. Modelo de proceso de software ............................................................................... 7
2.1.1. Fases básicas del proceso de software ............................................................ 7
2.2. Metodologías de desarrollo de software .................................................................. 8
2.2.1. Modelo en cascada ........................................................................................... 8
2.2.2. Metodología orientada a objetos para el desarrollo de software ..................... 8
2.3. UML ........................................................................................................................ 12
2.3.1. Estereotipos de UML ....................................................................................... 13
2.4. Herramientas tecnológicas ..................................................................................... 13
2.4.1. Moodle ............................................................................................................ 13
2.4.2. Java ................................................................................................................. 14
2.4.3. Applet Java ...................................................................................................... 15
2.4.4. HTML ............................................................................................................... 15
2.4.5. PHP ................................................................................................................. 15
2.4.6. MySQL ............................................................................................................. 16
2.4.7. Adobe Flash .................................................................................................... 17
II
2.4.8. ActionScript 3 .................................................................................................. 17
2.4.9. GNU GPL ......................................................................................................... 17
CAPÍTULO 3. DISEÑO EXPERIMENTAL Y PRUEBAS DE HIPÓTESIS ......................................... 19
3.1. Contexto del experimento ....................................................................................... 19
3.2. Diseño experimental para Química ........................................................................ 24
CAPÍTULO 4. ANÁLISIS DE REQUISITOS ................................................................................ 29
4.1. Introducción ............................................................................................................ 29
4.1.1. Propósito ......................................................................................................... 29
4.1.2. Ámbito del proyecto ........................................................................................ 29
4.2. Descripción general ................................................................................................ 31
4.2.1. Módulos de las aplicaciones informáticas ...................................................... 31
4.3. Características generales de las aplicaciones informáticas .................................. 32
4.4. Características de Usuarios .................................................................................... 32
4.5. Especificación de requerimientos de las aplicaciones informáticas ...................... 33
4.5.1. Requerimientos funcionales ........................................................................... 33
4.5.2. “Interfaces” Externas ...................................................................................... 56
CAPÍTULO 5. DISEÑO .............................................................................................................. 67
5.1. Configuración electrónica de la tabla periódica ..................................................... 68
5.2. Calculadora de masa molecular y número de moles ............................................. 71
5.3. Crucigrama ............................................................................................................. 75
5.4. Electronegatividad .................................................................................................. 80
5.5. Radio atómico ......................................................................................................... 83
5.6. Partículas atómicas ................................................................................................ 85
5.7. Memorama. Modelos atómicos .............................................................................. 89
5.8. Memorama. Tabla periódica ................................................................................... 93
5.9. Promoción de diplomado mediante correos electrónicos ...................................... 96
CAPÍTULO 6. IMPLEMENTACIÓN ............................................................................................ 99
6.1. Configuración electrónica de la tabla periódica ..................................................... 99
6.2. Calculadora de masa molecular y número de moles ............................................100
6.3. Crucigrama ............................................................................................................101
6.4. Electronegatividad .................................................................................................102
6.5. Radio atómico ........................................................................................................103
III
6.6. Partículas atómicas ...............................................................................................104
6.7. Memorama. Modelos atómicos .............................................................................104
6.8. Memorama. Tabla periódica ..................................................................................105
6.9. Promoción de diplomado mediante correos electrónicos .....................................105
CAPÍTULO 7. PRUEBAS ..........................................................................................................107
7.1. Configuración electrónica de la tabla periódica ....................................................107
7.2. Calculadora de masa molecular y número de moles ............................................108
7.3. Crucigrama ............................................................................................................110
7.4. Electronegatividad .................................................................................................111
7.5. Radio atómico ........................................................................................................112
7.6. Partículas atómicas ...............................................................................................112
7.7. Memorama. Modelos atómicos .............................................................................114
7.8. Memorama. Tabla periódica ..................................................................................115
7.9. Promoción de diplomado mediante correos electrónicos .....................................116
CAPÍTULO 8. IMPLANTACIÓN .................................................................................................118
8.1. Configuración electrónica de la tabla periódica ....................................................118
8.2. Calculadora de masa molecular y número de moles ............................................119
8.3. Crucigrama ............................................................................................................120
8.4. Electronegatividad .................................................................................................121
8.5. Radio atómico ........................................................................................................122
8.6. Partículas atómicas ...............................................................................................123
8.7. Memorama. Modelos atómicos .............................................................................123
8.8. Memorama. Tabla periódica ..................................................................................124
8.9. Promoción de diplomado mediante correos electrónicos .....................................125
CAPÍTULO 9. CONCLUSIONES ...............................................................................................127
9.1. Trabajos futuros.....................................................................................................129
REFERENCIAS BIBLIOGRÁFICAS ...........................................................................................130
ANEXOS .................................................................................................................................132
IV
LISTA DE FIGURASLISTA DE FIGURASLISTA DE FIGURASLISTA DE FIGURAS
Figura 3.2.1 Gráfica comparativa 26
Figura 3.2.2 Mejora porcentual en desempeño de la evaluación final integral 27
Figura 4.5.1 Diagrama de casos de uso: Configuración electrónica de la tabla periódica 34
Figura 4.5.2 Diagrama de casos de uso: Calculadora de masa molecular y número de moles
36
Figura 4.5.3 Diagrama de casos de uso: Crucigrama 39
Figura 4.5.4 Diagrama de casos de uso: Electronegatividad 42
Figura 4.5.5 Diagrama de casos de uso: Radio atómico 44
Figura 4.5.6 Diagrama de casos de uso: Partículas atómicas 46
Figura 4.5.7 Diagrama de casos de uso: Memorama. Modelos Atómicos 49
Figura 4.5.8 Diagrama de casos de uso: Memorama. Tabla Periódica 52
Figura 4.5.9 Casos de uso: Promoción de diplomado mediante correos electrónicos 55
Figura 4.5.10 Estructura de tabla docentes 56
Figura 4.5.11 Interfaz: Configuración electrónica de la tabla periódica 57
Figura 4.5.12 Interfaz: Calculadora de masa molecular y número de moles 58
Figura 4.5.13 Interfaz que permite ingresar número de átomos 59
Figura 4.5.14 Interfaz de advertencia acerca del número de átomos 59
Figura 4.5.15 Interfaz: Crucigrama 60
Figura 4.5.16 Interfaz: Electronegatividad 61
Figura 4.5.17 Interfaz: Radio atómico 62
Figura 4.5.18 Interfaz: Partículas atómicas 62
Figura 4.5.19 Interfaz: Memorama. Modelos atómicos 63
Figura 4.5.20 Interfaz: Memorama. Tabla periódica 64
Figura 4.5.21 Interfaz: Promoción de diplomado mediante correos electrónicos 65
Figura 5.1.1 Diagrama de clases: Configuración electrónica de la tabla periódica 68
Figura 5.1.2 Diagrama de secuencia. Configuración electrónica de la tabla periódica 70
Figura 5.2.1 Diagrama de clases. Calculadora de masa molecular y número de moles 71
Figura 5.2.2 Diagrama de secuencia 1: Calculadora de masa molecular y número de moles
74
Figura 5.2.3 Diagrama de secuencia 2: Calculadora de masa molecular y número de moles
74
Figura 5.2.4 Diagrama de secuencia 3: Calculadora de masa molecular y número de moles
75
Figura 5.3.1 Diagrama de clases: Crucigrama 76
Figura 5.3.2 Diagrama de secuencia 1: Crucigrama 78
Figura 5.3.3 Diagrama de secuencia 2: Crucigrama 78
Figura 5.3.4 Diagrama de secuencia 3: Crucigrama 79
Figura 5.3.5 Diagrama de secuencia 4: Crucigrama 79
Figura 5.4.1 Diagrama de clases: Electronegatividad 80
V
Figura 5.4.2 Diagrama de secuencia: Electronegatividad 82
Figura 5.5.1 Diagrama de clases: Radio atómico 83
Figura 5.5.2 Diagrama de secuencia. Radio atómico 85
Figura 5.6.1 Diagrama de clases. Partículas atómicas 86
Figura 5.6.2 Diagrama de secuencia 1: Partículas atómicas 88
Figura 5.6.3 Diagrama de secuencia 2: Partículas atómicas 88
Figura 5.6.4 Diagrama de secuencia 3: Partículas atómicas 89
Figura 5.7.1 Diagrama de clases: Memorama. Modelos atómicos 89
Figura 5.7.2 Diagrama de secuencia 1: Memorama. Modelos atómicos 92
Figura 5.7.3 Diagrama de secuencia 2: Memorama. Modelos atómicos 92
Figura 5.8.1 Diagrama de clases: Memorama. Tabla periódica 93
Figura 5.8.2 Diagrama de secuencia 1: Memorama. Tabla periódica 95
Figura 5.8.3 Diagrama de secuencia 2: Memorama. Tabla periódica 96
Figura 5.9.1 Diagrama de clases: Promoción de diplomado mediante correos electrónicos 96
Figura 5.9.2 Diagrama de secuencia: Promoción de diplomado mediante correos
electrónicos 98
Figura 6.1.1 Implementación de applet: Configuración electrónica de la tabla periódica 100
Figura 6.2.1 Implementación de applet: Calculadora de masa molecular y número de moles
101
Figura 6.3.1 Implementación de applet: Crucigrama 102
Figura 6.4.1 Implementación de applet: Electronegatividad 103
Figura 6.5.1 Implementación de applet: Radio atómico 103
Figura 6.6.1 Implementación de applet: Partículas atómicas 104
Figura 6.7.1 Implementación de applet: Memorama. Modelos atómicos 104
Figura 6.8.1 Implementación de applet: Memorama. Tabla periódica 105
Figura 6.9.1 Implementación de script: Promoción de diplomado mediante correos
electrónicos 106
Figura 8.1.1 Applet Configuración electrónica de la tabla periódica implantado en
plataforma Moodle 119
Figura 8.2.1 Applet Calculadora de masa molecular y número de moles implantado en
plataforma Moodle 120
Figura 8.3.1 Applet Crucigrama implantado en plataforma Moodle 121
Figura 8.4.1 Applet Electronegatividad implantado en plataforma Moodle 122
Figura 8.5.1 Applet Radio atómico implantado en plataforma Moodle 122
Figura 8.6.1 Applet Partículas atómicas implantado en plataforma Moodle 123
Figura 8.7.1 Applet Memorama. Modelos atómicos implantado en plataforma Moodle 124
Figura 8.8.1 Applet Memorama. Tabla periódica implantado en plataforma Moodle 125
Figura 8.9.1 Script Promoción de diplomado mediante correos electrónicos 126
VI
LISTA DE LISTA DE LISTA DE LISTA DE TABLATABLATABLATABLASSSS
Tabla 1.8.1 Descripción de contenido 5
Tabla 3.2.1: Tabla de resultados de desempeño obtenidos 25
Tabla 3.2.2: Tabla de diferencia porcentual de mejora en el desempeño promedio del grupo
piloto de la evaluación final integral sobre la evaluación diagnóstica 28
Tabla 4.5.1: Requisitos de aplicación Configuración electrónica de la tabla periódica 33
Tabla 4.5.2: Descripción de caso de uso. Seleccionar elemento químico 34
Tabla 4.5.3: Requisitos de applet Calculadora de masa molecular y número de moles 35
Tabla 4.5.4: Descripción de caso de uso. Seleccionar elemento químico 36
Tabla 4.5.5: Descripción de caso de uso. Calcular masa molecular 37
Tabla 4.5.6: Descripción de caso de uso. Calcular número de moles 37
Tabla 4.5.7: Descripción de caso de uso. Validar gramos 38
Tabla 4.5.8: Requisitos de applet Crucigrama 39
Tabla 4.5.9: Descripción de caso de uso. Iniciar juego 40
Tabla 4.5.10: Descripción de caso de uso. Mostrar pregunta 40
Tabla 4.5.11: Descripción de caso de uso. Evaluar respuestas 41
Tabla 4.5.12: Descripción de caso de uso. Mostrar respuestas 41
Tabla 4.5.13: Requisitos de applet Electronegatividad 42
Tabla 4.5.14: Descripción de caso de uso. Seleccionar elemento químico 43
Tabla 4.5.15: Requisitos de applet radio atómico 44
Tabla 4.5.16: Descripción de caso de uso. Seleccionar elemento químico 44
Tabla 4.5.17: Requisitos de applet partículas atómicas 45
Tabla 4.5.18: Descripción de caso de uso. Nuevo elemento 46
Tabla 4.5.19: Descripción de caso de uso. Verificar respuesta 47
Tabla 4.5.20: Descripción de caso de uso. Mostrar ayuda 47
Tabla 4.5.21: Descripción de caso de uso. Mostrar respuesta 48
Tabla 4.5.22: Requisitos de applet. Memorama. Modelos Atómicos 48
Tabla 4.5.23: Descripción de caso de uso. Iniciar juego 49
Tabla 4.5.24: Descripción de caso de uso. Seleccionar carta 50
Tabla 4.5.25: Descripción de caso de uso. Validar pares 50
Tabla 4.5.26: Requisitos de applet. Memorama. Tabla Periódica 51
Tabla 4.5.27: Descripción de caso de uso. Iniciar juego 52
Tabla 4.5.28: Descripción de caso de uso. Seleccionar carta 53
Tabla 4.5.29: Descripción de caso de uso. Validar conjunto de cartas 53
Tabla 4.5.30: Requisitos de script. Promoción de diplomado mediante correos electrónicos
54
Tabla 4.5.31: Descripción de caso de uso. Enviar Correos 55
Tabla 5.1.1: Relación entre Casos de uso, Actores y Clases Borde. Configuración electrónica
de la tabla periódica 69
VII
Tabla 5.1.2: Relación entre Casos de uso y Clases Entidad. Configuración electrónica de la
tabla periódica 69
Tabla 5.1.3: Relación entre Casos de uso y Clases Control. Configuración electrónica de la
tabla periódica 69
Tabla 5.1.4: Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad.
Configuración electrónica de la tabla periódica 70
Tabla 5.2.1: Relación entre Casos de uso, Actores y Clases Borde. Calculadora de masa
molecular y número de moles 72
Tabla 5.2.2: Relación entre Casos de uso y Clases Entidad. Calculadora de masa molecular
y número de moles 72
Tabla 5.2.3: Relación entre Casos de uso y Clases Control. Calculadora de masa molecular y
número de moles 73
Tabla 5.2.4: Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad.
Calculadora de masa molecular y número de moles 73
Tabla 5.3.1: Relación entre Casos de uso, Actores y Clases Borde. Crucigrama 76
Tabla 5.3.2: Relación entre Casos de uso y Clases Entidad: Crucigrama 77
Tabla 5.3.3: Relación entre Casos de uso y Clases Control. Crucigrama 77
Tabla 5.3.4: Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad.
Crucigrama 77
Tabla 5.4.1: Relación entre Casos de uso, Actores y Clases Borde. Electronegatividad 80
Tabla 5.4.2: Relación entre Casos de uso y Clases Entidad. Electronegatividad 81
Tabla 5.4.3: Relación entre Casos de uso y Clases Control. Electronegatividad 81
Tabla 5.4.4: Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad.
Electronegatividad 82
Tabla 5.5.1: Relación entre Casos de uso, Actores y Clases Borde. Radio atómico 83
Tabla 5.5.2: Relación entre Casos de uso y Clases Entidad. Radio Atómico 84
Tabla 5.5.3: Relación entre Casos de uso y Clases Control. Radio atómico 84
Tabla 5.5.4: Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad. Radio
atómico 84
Tabla 5.6.1: Relación entre Casos de uso, Actores y Clases Borde. Partículas atómicas 86
Tabla 5.6.2: Relación entre Casos de uso y Clases Entidad. Partículas atómicas 87
Tabla 5.6.3: Relación entre Casos de uso y Clases Control. Partículas atómicas 87
Tabla 5.6.4: Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad.
Partículas atómicas 87
Tabla 5.7.1: Relación entre Casos de uso, Actores y Clases Borde. Memorama. Modelos
atómicos 90
Tabla 5.7.2: Relación entre Casos de uso y Clases Entidad. Memorama. Modelos atómicos
90
Tabla 5.7.3: Relación entre Casos de uso y Clases Control. Memorama. Modelos atómicos
91
Tabla 5.7.4: Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad.
Memorama. Modelos atómicos 91
VIII
Tabla 5.8.1: Relación entre Casos de uso, Actores y Clases Borde. Memorama. Tabla
periódica 93
Tabla 5.8.2: Relación entre Casos de uso y Clases Entidad. Memorama. Tabla periódica 94
Tabla 5.8.3: Relación entre Casos de uso y Clases Control. Memorama. Tabla periódica 94
Tabla 5.8.4: Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad.
Memorama. Tabla periódica 95
Tabla 5.9.1: Relación entre Casos de uso, Actores y Clases Borde. Promoción de diplomado
mediante correos electrónicos 97
Tabla 5.9.2: Relación entre Casos de uso y Clases Entidad. Promoción de diplomado
mediante correos electrónicos 97
Tabla 5.9.3: Relación entre Casos de uso y Clases Control. Promoción de diplomado
mediante correos electrónicos 97
Tabla 5.9.4: Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad.
Promoción de diplomado mediante correos electrónicos 98
Tabla 7.1.1: Prueba a caso de uso 1. Configuración electrónica de la tabla periódica 107
Tabla 7.2.1: Prueba a caso de uso 1. Calculadora de masa molecular y número de moles
108
Tabla 7.2.2: Prueba 2 a caso de uso 1. Calculadora de masa molecular y número de moles
108
Tabla 7.2.3: Prueba a caso de uso 2. Calculadora de masa molecular y número de moles
109
Tabla 7.2.4: Prueba a caso de uso 3. Calculadora de masa molecular y número de moles
109
Tabla 7.2.5: Prueba a caso de uso 4. Calculadora de masa molecular y número de moles
109
Tabla 7.3.1: Prueba a caso de uso 1. Crucigrama 110
Tabla 7.3.2: Prueba a caso de uso 2. Crucigrama 110
Tabla 7.3.3: Prueba a caso de uso 3. Crucigrama 110
Tabla 7.3.4: Prueba a caso de uso 4. Crucigrama 111
Tabla 7.4.1: Prueba a caso de uso 1. Electronegatividad 111
Tabla 7.5.1: Prueba a caso de uso 1. Radio atómico 112
Tabla 7.6.1: Prueba a caso de uso 1. Partículas atómicas 112
Tabla 7.6.2: Prueba a caso de uso 2. Partículas atómicas 113
Tabla 7.6.3: Prueba a caso de uso 4. Partículas atómicas 113
Tabla 7.6.4: Prueba a caso de uso 3. Partículas atómicas 114
Tabla 7.7.1: Prueba a caso de uso 1. Memorama. Modelos atómicos 114
Tabla 7.7.2: Prueba a caso de uso 2. Memorama. Modelos atómicos 114
Tabla 7.7.3: Prueba a caso de uso 3. Memorama. Modelos atómicos 115
Tabla 7.8.1: Prueba a caso de uso 1. Memorama. Tabla periódica 115
Tabla 7.8.2: Prueba a caso de uso 2. Memorama. Tabla periódica 116
Tabla 7.8.3: Prueba a caso de uso 3. Memorama. Tabla periódica 116
Tabla 7.9.1: Prueba a caso de uso 1. Promoción de diplomado mediante correos
electrónicos 116
IX
Tabla 7.9.2: Prueba a caso de uso 1. Promoción de diplomado mediante correos
electrónicos 117
Tabla 7.9.3: Prueba a caso de uso 1. Promoción de diplomado mediante correos
electrónicos 117
1
CAPÍTULO 1. INTRODUCCIÓNCAPÍTULO 1. INTRODUCCIÓNCAPÍTULO 1. INTRODUCCIÓNCAPÍTULO 1. INTRODUCCIÓN
1.1.1.1.1.1.1.1. Planteamiento de hipótesisPlanteamiento de hipótesisPlanteamiento de hipótesisPlanteamiento de hipótesis
Se plantea una hipótesis nula y una hipótesis alterna que será explicada de manera
detallada en el capítulo 3.
Hipótesis nula Ho: El aprendizaje a través de plataformas tecnológicas en línea
apoyadas con software educativo mejoran las evaluaciones de desempeño
promedio del grupo en al menos 10 puntos porcentuales, en el aprendizaje del
tema de relaciones periódicas en la Química.
Hipótesis alterna Ha: El aprendizaje a través de plataformas tecnológicas en línea
apoyadas con software educativo no mejoran las evaluaciones de desempeño
promedio del grupo en al menos 10 puntos porcentuales, en el aprendizaje del
tema de relaciones periódicas en la Química.
1.2.1.2.1.2.1.2. AntecedentesAntecedentesAntecedentesAntecedentes
El sector educativo en Morelos demanda un programa para la actualización de
docentes del nivel medio superior en las áreas de ciencia, tecnología e innovación.
De esto surge el proyecto “Diseño e implementación de un programa para la
actualización de docentes de nivel medio superior en las áreas de Físico-
Matemáticas y Ciencias Naturales”, financiado por el Fondo Mixto de Morelos, a
través del CONACYT, con clave FM MOR-2009-C01-116163. [1]
Para su realización, se requiere de la participación de personal especializado en
investigación sobre las áreas mencionadas y de asistentes de proyecto que apoyen
la parte técnica; su participación en el proyecto se enriquece con la incorporación
de personal con mayor preparación académica al equipo técnico de trabajo y, por
otra parte, los estudiantes colaboran en un proyecto de investigación científico-
2
tecnológico definido, en el que reciben la experiencia y el entrenamiento sistemático
y metodológico de la investigación científica-tecnológica. [2]
El proyecto general se divide en módulos para su desarrollo, dependiendo del área
de conocimiento a cubrir (Química, Física, Ecología, Matemáticas o Biología). En
este trabajo se detallan las especificaciones para cubrir el área de Química cuyo
objetivo es implantar un diplomado en línea de actualización enfocado a la Química,
el contenido instruccional de dicho curso necesita que se apoye de aplicaciones
informáticas para facilitar la compresión de los temas abordados.
1.3.1.3.1.3.1.3. Planteamiento del problemPlanteamiento del problemPlanteamiento del problemPlanteamiento del problemaaaa
El diseño instruccional desarrollado para el curso de Química, como parte del
proyecto general “Diseño e implementación de un programa para la actualización
de docentes de nivel medio superior en las áreas de Físico-Matemáticas y Ciencias
Naturales”, necesita valerse de herramientas que permitan un aprendizaje de los
contenidos de una manera más interactiva y amigable.
No existen aplicaciones informáticas que puedan apoyar los temas abordados en el
curso de Química, por lo que se requiere del desarrollo de aplicaciones informáticas
para la construcción del diseño instruccional del diplomado en línea, de
actualización en Química, para profesores de nivel bachillerato.
Por otra parte, el proyecto general antes mencionado, necesita que sea
promocionado a través de correos electrónicos, esto porque dicho proyecto nunca
antes ha sido implementado y no es conocido por nadie, siendo necesario darlo a
conocer entre docentes de nivel preparatoria para captar estudiantes.
1.4.1.4.1.4.1.4. Panorama general del Panorama general del Panorama general del Panorama general del proyectoproyectoproyectoproyecto
Como parte del proyecto general (Diseño e implementación de un programa para la
actualización de docentes de nivel medio superior en las áreas de Físico-
3
Matemáticas y Ciencias Naturales), se requiere desarrollar aplicaciones
informáticas para la enseñanza de la Química en la modalidad en línea utilizando la
plataforma tecnológica Moodle. Esto debido a que el programa de actualización
consta de cinco áreas de conocimiento, una de ellas es la Química, que será la línea
guía para el desarrollo del proyecto de la presente Tesis.
El proyecto requiere que se cumplan los siguientes aspectos:
• Se espera que con aplicaciones informáticas simples de utilizar y llamativas,
se pueda elevar el nivel académico de los que tomen el diplomado en
Química.
• Se realizarán las actividades pertinentes para la captación de los docentes
que tomarán el diplomado.
• Se utilizará la plataforma Moodle para la impartición del curso de Química, la
cual contendrá las aplicaciones informáticas desarrolladas y descritas en la
presente Tesis.
• Las aplicaciones informáticas pueden ser apoyadas parcial o totalmente por
código abierto (GNU GPL). Así mismo, el código que se genere será libre en
su uso, modificación y distribución, respetando la licencia mencionada.
1.5.1.5.1.5.1.5. Objetivo generalObjetivo generalObjetivo generalObjetivo general
Desarrollar aplicaciones informáticas que permitan un aprendizaje acerca de
conceptos de Química de una manera interactiva y amigable en la modalidad en
línea, utilizando la plataforma tecnológica Moodle.
Desarrollar una aplicación que permita dar a conocer los diferentes cursos a
potenciales estudiantes de los mismos mediante correos electrónicos.
1.5.1.1.5.1.1.5.1.1.5.1. Objetivos específicosObjetivos específicosObjetivos específicosObjetivos específicos
Elaborar nueve aplicaciones que permitirán:
4
1. Generar y mostrar la configuración electrónica de los elementos de la tabla
periódica e información acerca de los mismos.
2. Crear una calculadora para obtener la masa molecular y el número de moles
de los gramos dados.
3. Desarrollar un crucigrama para facilitar el aprendizaje de conceptos de la
tabla periódica.
4. Creación de gráficas para mostrar el comportamiento de la
electronegatividad en los elementos de la tabla periódica.
5. Generar y desplegar gráficas para observar el radio atómico de los
elementos de la tabla periódica.
6. Permitir al usuario introducir información acerca de un elemento mostrado.
7. Desarrollar un juego de memorama para relacionar información acerca de
modelos atómicos.
8. Elaborar otro juego de memorama para relacionar conceptos de la tabla
periódica.
9. Enviar correos electrónicos de manera masiva.
1.6.1.6.1.6.1.6. JustificaciónJustificaciónJustificaciónJustificación
Con el desarrollo de las aplicaciones informáticas mencionadas en los objetivos
específicos:
• Se podrá tener una mayor comprensión de conceptos de Química.
• Permitirán la impartición del curso de forma más dinámica e interactiva.
• Mediante el envío de correos masivos se promocionará el diplomado de
Química.
1.7.1.7.1.7.1.7. Alcances y limitacionesAlcances y limitacionesAlcances y limitacionesAlcances y limitaciones
1.7.1.1.7.1.1.7.1.1.7.1. AlcancesAlcancesAlcancesAlcances
• Se desarrollarán ocho aplicaciones para el curso de Química.
5
• Se desarrollará una aplicación que permita el envío de correos electrónicos
para promocionar el diplomado.
o La aplicación evitará que los correos enviados a cada uno de los
docentes llegue a su correo electrónico como correo basura o
mensaje no deseado.
1.7.2.1.7.2.1.7.2.1.7.2. LimitacionesLimitacionesLimitacionesLimitaciones
• Se cubrirán conceptos sólo del área de Química.
• Las aplicaciones para el curso de Química sólo podrán ser vistas por
usuarios registrados a este curso.
• Las aplicaciones, para su implantación en el sistema de cursos Moodle,
deberán ser compatibles en su totalidad
1.8.1.8.1.8.1.8. Organización de la Organización de la Organización de la Organización de la TesisTesisTesisTesis
En la siguiente tabla se muestran los diferentes capítulos en que se estructuró este documento dando una breve descripción de su contenido.
Tabla 1.8.1 Descripción de contenido
Nombre del capítuloNombre del capítuloNombre del capítuloNombre del capítulo ContenidoContenidoContenidoContenido
Capítulo 1.
Introducción
Definición de lo que se va a desarrollar, alcances, objetivo y
justificación.
Capítulo 2.
Marco teórico Conceptos para comprender el desarrollo de la tesis.
Capítulo 3.
Diseño experimental y
pruebas de hipótesis
Se plantea y prueba una hipótesis con ayuda de un diseño
experimental.
Capítulo 4.
Análisis de
Requisitos
Muestra el análisis con base en los requerimientos funcionales,
representando las funciones de las aplicaciones informáticas a
desarrollar, utilizando los diagramas de casos de uso.
6
Capítulo 5.
Diseño
Se modela la solución ideal para los requisitos, es decir, la
arquitectura y la lógica del sistema. Representado por diagramas
de clases y de secuencia.
Capítulo 6.
Implementación
Verificación de las aplicaciones desarrolladas comprobando su
correcto funcionamiento en un ambiente local.
Capítulo 7.
Pruebas
Validación de las aplicaciones desarrolladas comprobando el
cumplimiento de los requisitos del cliente, apoyándose de los
casos de uso.
Capítulo 8.
Implantación
Evidencia que el proceso de implantación se realizó
correctamente.
Capítulo 9.
Conclusiones
Se plasman las conclusiones resultantes del desarrollo del
proyecto y los trabajos futuros propuestos.
2.
C
7
CAPCAPCAPCAPÍÍÍÍTULO 2. TULO 2. TULO 2. TULO 2. MARCO TEÓMARCO TEÓMARCO TEÓMARCO TEÓRICORICORICORICO
El desarrollo de las aplicaciones se fundamentó en las bases teóricas y herramientas tecnológicas descritas a continuación.
2.1.2.1.2.1.2.1. Modelo de proceso de software Modelo de proceso de software Modelo de proceso de software Modelo de proceso de software
Un modelo de proceso de software define cómo solucionar la problemática del
desarrollo de sistemas de software. Considera una variedad de aspectos, como el
conjunto de personas, estructuras organizacionales, reglas, políticas, actividades,
componentes de software, metodologías y herramientas utilizadas.
Para desarrollar software se realizan un conjunto de fases o etapas.
2.1.1.2.1.1.2.1.1.2.1.1. Fases básicas del proceso de softwareFases básicas del proceso de softwareFases básicas del proceso de softwareFases básicas del proceso de software
Las actividades básicas del proceso de software, conocidas como el ciclo de vida
del software, son las siguientes:
1) . Requisitos. Requisitos. Requisitos. Requisitos . Permite especificar los aspectos funcionales del sistema.
2) . Análisis. Análisis. Análisis. Análisis. Da al sistema una estructura o arquitectura robusta y extensible
independiente del ambiente de implementación final.
3) . DiseñoDiseñoDiseñoDiseño. Permite adoptar y refinar la arquitectura del sistema y adaptarla al
ambiente de implementación específico.
4) . ImplementaciónImplementaciónImplementaciónImplementación. Permite codificar el sistema.
5) . IntegraciónIntegraciónIntegraciónIntegración. Facilita la combinación de los componentes del sistema.
6) . DocumentaciónDocumentaciónDocumentaciónDocumentación.... Permite describir los diversos aspectos del sistema.
7) . Mantenimiento. Mantenimiento. Mantenimiento. Mantenimiento. Facilita la extensión de la funcionalidad.
8
2.2.2.2.2.2.2.2. Metodologías de desarrollo de softwareMetodologías de desarrollo de softwareMetodologías de desarrollo de softwareMetodologías de desarrollo de software
Las metodologías definen el conjunto de tareas o acciones a realizar para
desarrollar un software. En los siguientes puntos solamente se describen dos de
ellos. [3]
2.2.1.2.2.1.2.2.1.2.2.1. Modelo en cascadaModelo en cascadaModelo en cascadaModelo en cascada
El modelo en cascada tiene un orden riguroso de etapas, cada una de ellas debe
concluirse para pasar a la siguiente. Las etapas de este modelo se detallan a
continuación:
• Análisis de Requerimientos. Se especifica que hará el sistema de manera
detallada mediante consultas con los usuarios.
• Diseño. Se establece una arquitectura completa del sistema. Se identifica y
describen las abstracciones fundamentales del sistema software y sus
relaciones.
• Implementación. Con el diseño propuesto se lleva a cabo el desarrollo del
sistema utilizando uno o varios lenguajes de programación.
• Pruebas. Se comprueba que cada una de las unidades del software cumple
con los requisitos especificados.
• Implantación. Se instala y pone en funcionamiento el software. [4]
2.2.2.2.2.2.2.2.2.2.2.2. Metodología orientada a objetos para el desarrollo de softwareMetodología orientada a objetos para el desarrollo de softwareMetodología orientada a objetos para el desarrollo de softwareMetodología orientada a objetos para el desarrollo de software
Esta metodología enfoca principalmente en el modelado de un sistema en términos
de objetos. En él se identifican inicialmente los objetos del sistema para luego
especificar su comportamiento. Esta metodología generalmente utiliza el lenguaje
UML1 para modelar cada una de las etapas de desarrollo del sistema. [3]
1 UML: acrónimo de Unified Model Language (Lenguaje de Modelado Unificado).
9
2.2.2.1.2.2.2.1.2.2.2.1.2.2.2.1. Principales ePrincipales ePrincipales ePrincipales etapastapastapastapas de la metodología orientada a objetosde la metodología orientada a objetosde la metodología orientada a objetosde la metodología orientada a objetos
• Etapa 1. Descripción del problema
Es un resumen preliminar de necesidades que sirve como punto de partida para
comprender los requisitos del sistema. Se simula una descripción preparada por el
cliente y no debe representar un solución.
• Etapa 2. Modelo de requisitos
Tiene como objetivo delimitar el sistema y capturar la funcionalidad que éste
ofrecerá desde la perspectiva del usuario. Este modelo proyecta lo que el cliente
desea según la percepción del desarrollador. Por ello, es esencial que los clientes lo
comprendan. Este modelo consta de tres modelos: Casos de uso, “Interfaces” y
Dominio del problema.
El modelo de casos de uso describe un sistema en términos de sus distintas formas
de utilización, cada una de las cuales se conoce como un caso de uso. Cada caso
de uso o flujo se compone de una secuencia de eventos iniciada por el usuario.
Dado que los casos de uso describen el sistema a desarrollarse, los cambios en los
requisitos significarán cambios en los casos de uso. En este modelo también se
representan los actores que son cualquier entidad externa que necesite
intercambiar información con el sistema, los actores son las personas reales que
utilizarán el sistema.
La identificación de las clases del dominio del problema, se obtienen
principalmente de algún documento contextual que describa el sistema.
• Etapa 3. Modelo de análisis
El objetivo de esta etapa es comprender y generar una arquitectura de objetos para
el sistema, con base en lo especificado en el modelo de requisitos. Las
arquitecturas se distinguen según la organización de los objetos de acuerdo a su
funcionalidad.
10
Una de las arquitecturas más populares es el de Modelo, Vista, Controlador. La vista
o presentación de la información corresponde a las “interfaces” de usuario. Por otro
lado, el control corresponde a la manipulación de la información a través de
diversas presentaciones. Finalmente, el modelo es el que proporciona acceso a los
repositorios de la información.
• Etapa 4. Modelo de “interfaces”
Describe la presentación de la información entre los actores y el sistema. Especifica
a detalle las características de las distintas “interfaces” del sistema que permitirán
la interacción entre el usuario y el sistema al ejecutar cada uno de los casos de uso.
[3]
2.2.2.2.2.2.2.2.2.2.2.2.2.2.2.2. Fases complementarias de laFases complementarias de laFases complementarias de laFases complementarias de la metodología orientada a objetosmetodología orientada a objetosmetodología orientada a objetosmetodología orientada a objetos
• Etapa 5. Modelo de implementación
En esta etapa se toman los modelos anteriores para generar el código final. Durante
este modelo se adapta al lenguaje de programación y/o la base de datos. Aunque el
diseño de objetos es bastante independiente del lenguaje de programación, todos
los lenguajes tienen sus particularidades, las cuales deben adecuarse durante la
implementación final. Si se cambia el lenguaje de programación, no debe requerirse
el rediseño del sistema.
• Etapa 6. Modelo de pruebas
Probar un producto es relativamente independiente de la metodología de desarrollo
utilizada para construirlo.
Existen diversos tipos de pruebas aplicadas durante el desarrollo del sistema. Por
tal motivo, el modelo de pruebas debe ser planificado con anticipación y de manera
integral junto con el desarrollo del sistema. Las pruebas finales deben tener como
objetivo la certificación de la calidad del producto y no la búsqueda de errores. Se
considera que “evitar defectos” es más importante que “removerlos”.
11
El mal funcionamiento de un sistema puede clasificarse como:
- Falla. Ocurre cuando el sistema no se comporta de manera adecuada.
- Falta. Tiene lugar en el código del programa. La existencia de ésta puede
ocasionar una falla.
- Error. Es una acción humana que provoca que el software contenga una
falta. Un error puede significar una falta, lo cual hace que el sistema falle.
Algunos de los tipos de pruebas son los siguientes:
- Prueba basada en casos de uso. Intenta llevar a cabo pruebas basadas
directamente en la especificación de requisitos. Se utilizan los casos de uso
previamente establecidos y aceptados.
- Prueba de aceptación o de validación. Pretende lograr una revisión final por
parte de la organización que solicitó el sistema durante un periodo de
tiempo; transcurrido éste se toma la decisión de aceptar o rechazar el
producto.
- Pruebas de unidad. Consiste en una prueba estructural (caja blanca), que
requiere conocer el diseño interno de la unidad y una prueba de
especificación (caja negra), basada sólo en la especificación del
comportamiento externamente visible de la unidad.
- Prueba de caja negra. Tiene como propósito verificar las relaciones de
entrada y salida de una unidad. Su objetivo es verificar “qué” hace la unidad,
pero sin averiguar cómo lo hace.
- Prueba de caja blanca. Tiene como propósito verificar que la estructura
interna de la unidad sea correcta. Es deseable cubrir todas las posibles
combinaciones de parámetros, valores de variables y flujos del código, de
manera que todas las instrucciones se ejecuten.
- Pruebas de integración. Después de haber probado todas las unidades,
éstas deben ser integradas en unidades más grandes hasta generar el
sistema completo. El propósito de las pruebas de integración es probar que
las diferentes unidades trabajen juntas de manera apropiada.
12
• Etapa 7. Implantación
Realizadas las actividades anteriores y asegurándose de que han sido validadas, se
procede a la implantación en el ambiente real de trabajo. Aquí se realizan los
ajustes finales para el correcto funcionamiento del sistema a implantar. Se
documentan los errores de implantación y se corrigen. [3]
2.3.2.3.2.3.2.3. UMLUMLUMLUML
Lenguaje de Modelado Unificado (UML), es un lenguaje gráfico para modelar un
sistema de software.
El lenguaje de modelado se vale de notación principalmente gráfica para expresar
diseños de sistemas de software, particularmente de sistemas de software
orientados a objetos. [5]
A continuación se describen solamente algunos de los diagramas proporcionados
por UML para modelar un sistema.
- Diagrama de clasesDiagrama de clasesDiagrama de clasesDiagrama de clases. Sirven para describir los componentes esenciales de la
arquitectura de un sistema. Los diagramas de clases muestran relaciones de
asociación entre clases y no un flujo de datos entre ellas.
- Diagramas de casos de usoDiagramas de casos de usoDiagramas de casos de usoDiagramas de casos de uso. Especifican un sistema en términos de su
funcionalidad respecto al usuario.
- Diagramas de secuenciaDiagramas de secuenciaDiagramas de secuenciaDiagramas de secuencia. Sirven para describir los aspectos dinámicos del
sistema, mostrando el flujo de eventos entre objetos en el tiempo. Describen
los diferentes casos de uso según la interacción entre los objetos de la
arquitectura, por tal razón los diagramas de secuencia utilizan objetos. Cada
objeto en el diagrama es representado con una línea vertical, donde el
tiempo avanza hacia abajo. Este diagrama muestra la secuencia de eventos
que ocurren en el tiempo, los cuales son enviados de un objeto hacia otro.
13
2.3.1.2.3.1.2.3.1.2.3.1. Estereotipos de UMLEstereotipos de UMLEstereotipos de UMLEstereotipos de UML
UML proporciona estereotipos para describir de mejor forma los conceptos en los
diagramas proporcionados.
Un estereotipo representa una distinción de cierto uso, es decir, muestra ciertas
características dentro de un diagrama. Éstos se pueden aplicar a cualquier
elemento del modelado, incluyendo clases, paquetes, relaciones de herencia,
etcétera. [5]
Algunos estereotipos son entidad, borde y control que son utilizados en los
diagramas de secuencia.
- Entidad. Representa a los objetos que guardan información sobre el estado
interno del sistema a corto y largo plazo. Estos objetos corresponden al
dominio del sistema.
- Borde. Muestra objetos que implementan las “interfaces” del sistema con el
mundo externo, corresponde a todos los actores, incluyendo aquellos que no
son humanos, por ejemplo, otros sistemas.
- Control: es para objetos que implementan el comportamiento o control de la
lógica de los casos de uso, especificando cuándo y cómo el sistema cambia
de estado.
2.4.2.4.2.4.2.4. Herramientas tecnológicasHerramientas tecnológicasHerramientas tecnológicasHerramientas tecnológicas
2.4.1.2.4.1.2.4.1.2.4.1. MoodleMoodleMoodleMoodle
Moodle se define como “Sistema de Gestión de Cursos de Código Abierto (Open
Source Course Management System, CMS), conocido también como Sistema de
Gestión del Aprendizaje (Learning Management System, LMS) o como Entorno de
Aprendizaje Virtual (Virtual Learning Environment, VLE)”. [6]
14
Es una plataforma tecnológica que permite crear sitios web dinámicos en línea, con
una vasta cantidad de herramientas que permiten enriquecer la forma de presentar
e intercambiar información para promover el aprendizaje.
Algunas características de Moodle son:
• Es una plataforma en línea que soporta miles de usuarios. Generalmente se
utiliza en pequeños grupos de aprendizaje, su uso no está limitado a grandes
cantidades de usuarios.
• Se puede utilizar como apoyo a la formación presencial o como un medio de
formación en línea.
• Proporciona herramientas que permiten el intercambio de información
alrededor de una materia (foros, wikis, etcétera).
• Permite realizar evaluaciones mediante tareas o cuestionarios y ofrecer
contenidos.
2.4.2.2.4.2.2.4.2.2.4.2. JavaJavaJavaJava
Es un lenguaje de programación de alto nivel, orientado a objetos, que permite
implementar distintos tipos de aplicaciones, desarrollado por Sun Microsystems en
1991. [7]
Es un lenguaje independiente de la plataforma, es decir, el código generado por el
compilador Java puede ser ejecutado en cualquier plataforma (Intel, Motorola,
Sparc) que cuente con la JVM (Java Virtual Machine).
La máquina virtual Java (JVM) es el intérprete del código de bytes generado por un
compilador. Los códigos de bytes son un grupo de instrucciones correspondientes a
un lenguaje máquina, pero no son específicos para algún procesador.
Java permite la creación de applets.
15
2.4.3.2.4.3.2.4.3.2.4.3. AppletAppletAppletApplet JavaJavaJavaJava
Son aplicaciones que se ejecutan en el contexto de otro programa, generalmente
dentro de una página Web de cualquier ordenador, siendo irrelevante el sistema
operativo o arquitectura del procesador debido a las características de Java
mencionadas en la sección anterior.
Un applet no puede ejecutarse de manera independiente, ofrece información básica
y algunos tipos de interacción con el usuario pero de manera limitada.
Para ejecutar un applet Java es necesario tener un navegador Web que soporte la
máquina virtual Java, entre los que se pueden mencionar Microsoft Internet Explorer
o Mozilla Firefox. [8]
2.4.4.2.4.4.2.4.4.2.4.4. HTMLHTMLHTMLHTML
HTML (HyperText Markup) es un lenguaje basado en etiquetas utilizado para crear
páginas Web.
Este lenguaje es un estándar de reconocimiento global y cuyas normas están
definidas por la W3C (World Wide Web Consortium). Al ser un estándar mundial, una
página HTML puede ser visualizada de manera muy similar en cualquier navegador
Web del cualquier sistema operativo. [9]
2.4.5.2.4.5.2.4.5.2.4.5. PHPPHPPHPPHP
PHP es un lenguaje de programación de código abierto especialmente adecuado
para desarrollo Web y que puede estar incrustado en código HTML. Creado en 1994
por Rasmus Lerdorf, cuyo objetivo inicial era hacer un seguimiento de los visitantes
de su página personal.
16
Lerdorf desarrolló este lenguaje con un conjunto de scripts en Perl2 que después
fueron reimplantados en el lenguaje de programación C para obtener mayores
funcionalidades. Publicó el código fuente de sus programas; fue así como empezó a
ser utilizado por diversos usuarios y el código fue mejorado.
Este lenguaje de programación es interpretado del lado del servidor. Los códigos
PHP son embebidos en código HTML y se ejecutan por un intérprete en el servidor
Web antes de mostrar al cliente lo que ha solicitado en código HTML.
Entre las características de PHP se pueden mencionar las siguientes:
• Lenguaje multiplataforma que puede interactuar con más de 20 tipos de
bases de datos.
• Cuenta con funciones de correo electrónico.
• Permite la administración y gestión de diversas bases de datos.
• Tiene funciones de gestión de directorios y ficheros.
Además muchos programadores comparten sus códigos en foros, agregando mayor
funcionalidad al lenguaje. [10]
2.4.6.2.4.6.2.4.6.2.4.6. MySQLMySQLMySQLMySQL
MySQL es un sistema de gestión de bases de datos relacional, multihilo y
multiusuario. Se desarrolla como software libre y fue escrito en una combinación de
C y C++.
Es uno de los gestores de bases de datos más utilizados en el mundo del software
libre debido a su facilidad de uso. [11]
2 Lenguaje de programación con características del lenguaje C.
17
2.4.7.2.4.7.2.4.7.2.4.7. Adobe FlashAdobe FlashAdobe FlashAdobe Flash
Adobe Flash es una aplicación que permite desarrollar contenido interactivo y que al
igual que Java es independiente de la plataforma.
Flash Player es la máquina virtual que se utiliza para ejecutar programas
desarrollados con Flash.
Los programas desarrollados con Flash pueden ser ejecutados dentro de una
página Web o pueden ser reproducidos por algún reproductor Flash. Es común
utilizar archivos Flash para generar animaciones en páginas Web.
Flash fue originalmente desarrollado por una pequeña empresa llamada
FutureWave Software y su nombre original era FutureSplash Animator. En 1996
Macromedia adquirió a FutureWave Software, y renombró a FutureSplash Animator
como Flash 1.0. En el año 2005, Adobe Systems adquiere a Macromedia Flash y es
entonces conocido como Adobe Flash. [12]
2.4.8.2.4.8.2.4.8.2.4.8. ActionScript 3ActionScript 3ActionScript 3ActionScript 3
“ActionScript es el lenguaje de programación para el entorno de tiempo de
ejecución de Adobe Flash Player. Activa, entre otras muchas cosas, la interactividad
y la gestión de datos en el contenido y las aplicaciones de Flash”. [12]
ActionScript 3.0 es un lenguaje de programación orientado a objetos de alto nivel
que utiliza la máquina virtual ActionScript (AVM) para ejecutar el código de bytes
contenidos en los archivos Flash, que tienen una extensión SWF. La AVM es parte
de Flash Player.
2.4.9.2.4.9.2.4.9.2.4.9. GNU GPLGNU GPLGNU GPLGNU GPL
GNU significa GNU No es Unix (GNU is Not Unix), a su vez GPL significa Licencia
Pública General (General Public License), por sus siglas en inglés GNU GPL. Ésta es
18
una licencia creada por Free Software Foundation en 1989, y su fin principal es
proteger la libre distribución, modificación y uso de software.
Se pretende con esta licencia que el software no sea restringido de las libertades
que se ofrecen con la misma. [13]
3. C
a
ítulo 3
19
CAPÍTULO CAPÍTULO CAPÍTULO CAPÍTULO 3333. . . . DISEÑO EXPERIMENTAL Y PRUEBAS DE HIPÓTESISDISEÑO EXPERIMENTAL Y PRUEBAS DE HIPÓTESISDISEÑO EXPERIMENTAL Y PRUEBAS DE HIPÓTESISDISEÑO EXPERIMENTAL Y PRUEBAS DE HIPÓTESIS
3.1.3.1.3.1.3.1. Contexto del experimentoContexto del experimentoContexto del experimentoContexto del experimento
El objetivo del proyecto CONACYT MOR-C01-116163 fue “diseñar un programa de
educación virtual basado en un modelo de competencias, que permita a los
docentes de nivel medio superior del Estado de Morelos actualizarse en las áreas
de físico-matemáticas y de ciencias naturales, a través de 5 cursos o módulos:
matemáticas, física, Química, biología y ecología”
Para lograr esto, dicho programa incorporó diseños instruccionales tales que
permitieran a los docentes de nivel medio superior del Estado de Morelos
actualizarse en las estrategias didácticas para lograr el aprendizaje significativo y
desarrollo de competencias en alumnos de nivel medio superior en las áreas de
físico-matemática y ciencias naturales. Se realizó una prueba piloto que consistió
en:
1) Tener una muestra de 100 profesores de educación media superior del
Estado de Morelos, 20 de cada área de conocimiento. Para el caso de
Química se tuvo al menos 20 profesores.
2) Se realizó una evaluación diagnóstica.
3) Se llevó a cabo un proceso de actualización que tuvo de 6 a 8 módulos con
actividades, juegos, crucigramas, cuestionarios y otras tareas.
4) Se llevó a cabo una evaluación integral final.
La intención principal de este proyecto es potenciar el impacto de la actualización
de docentes, a través del uso de herramientas de Tecnologías de Información,
superando las barreras de las distancias geográficas, incorporando a profesores de
los 32 municipios del Estado de Morelos interactuando con ellos a través de los
diseños instruccionales instalados en la plataforma Moodle y dando tutoría a través
del correo electrónico y teléfono desde mayo de 2010.
20
Otra intención del proyecto es que los esfuerzos que se hacen presencialmente por
actualizar a los docentes no se diluyan y que los materiales, actividades y
estrategias didácticas puedan quedar de manera permanentes y su actualización
sea fácil y sin costos adicionales de impresión de materiales. Cada una de las áreas
de especialidad de las ciencias tuvieron sus propias metodologías y estrategias
didácticas de mayor efectividad. Sin embargo, los aspectos metodológicos que
permitieron la implementación de un diplomado en línea o a distancia
correspondieron al "Diseño Instruccional". La metodología del diseño instruccional
que se utilizó para el diseño de cursos en línea consistió en crear especificaciones
detalladas para el desarrollo, implementación, evaluación, y mantenimiento de
situaciones que pudieran facilitar el aprendizaje de unidades de contenidos, en
diferentes niveles de complejidad. El diseño instruccional incorporó la investigación
y teoría sobre estrategias instruccionales y el proceso de desarrollar e implementar
estas estrategias. El diseño instruccional usó las teorías del aprendizaje y las teorías
instruccionales para asegurar la calidad de la instrucción. Incluyó el análisis de
necesidades de aprendizaje, las metas y el desarrollo materiales y actividades
instruccionales, evaluación del aprendizaje y seguimiento. El clásico enfoque
conductista, ha sido severamente cuestionado por los expertos en didáctica. Éste
enfoque largamente utilizado, está completamente alejado de lo que la sociedad
actualmente requiere de sus individuos, esto es, sujetos que sean capaces de
participar activamente en su proceso de aprendizaje, desde la planificación,
aplicación y evaluación del mismo fomentando un aprendizaje autónomo. Este
cuestionamiento del conductismo, ha conducido a la búsqueda de otros enfoques
más amplios que consideran el aprendizaje como un proceso holístico del individuo
en la construcción y desarrollo de sus estructuras cognitivas. Entre esos enfoques
ha surgido el constructivismo como concepción educativa de la edad de la
información. Un ambiente de aprendizaje constructivista en línea es el lugar en
donde los participantes manejan recursos de información, materiales impresos y
visuales; y herramientas tales como, programas de procesamiento, correo
electrónico, instrumentos de búsqueda, etc. que permiten la construcción de
soluciones significativas a diversos problemas. Este enfoque ha marcado el
surgimiento de un gran interés por las aplicaciones del constructivismo en el diseño
21
de ambientes de aprendizaje porque presupone una activación de los estudiantes
diferente a la generada por la pre-especificación absoluta de estrategias,
substituyéndola por una provisión de herramientas y recursos en forma flexible, y en
función de las necesidades del que aprende.
Un ambiente para educación en línea requiere los siguientes elementos para su
configuración:
1) Enfatizar la instrucción centrada en el que aprende, permitiéndole al estudiante
participar tanto en la determinación de sus necesidades u objetivos de aprendizaje
y en el cómo resolverlos, lo que significa darle "voz" al estudiante.
2) Proveer ambientes de aprendizaje complejo que incorporen tareas auténticas;
que posean relevancia y utilidad en el mundo real, ya que son las que permitirán
que el estudiante se "apropie" del conocimiento.
3) Proveer múltiples perspectivas y otras formas de presentación que le permita a
los que aprenden examinar argumentos desde diversos ángulos. Así el estudiante
puede desarrollar un pensamiento crítico y reflexivo.
4) Ofrecer mecanismos de evaluación que profundicen este proceso reflexivo.
5) Permitir alto grado de interactividad y velocidad de respuestas entre el estudiante
y el tutor al poder intercambiar respuestas personales. Adicionalmente la
interactividad se refuerza por el hecho de que el estudiante también puede
interactuar con sus compañeros, dondequiera que éstos se encuentren.
6) En el ambiente de clases en línea, el estudiante aprende no sólo a través de su
propio trabajo sino del de sus compañeros, por lo que este ambiente propicia un
verdadero trabajo colaborativo, ya que enfatiza más en las fortalezas del grupo que
en el esfuerzo individual. Los estudiantes se involucran en interacciones de
naturaleza cognitiva, a través de explicaciones sobre el estudio de un caso y
discusión de un tópico, argumentando su posición, justificando sus puntos de vista,
así como planteando sus reacciones frente a posiciones de sus pares.
22
7) A través del uso de la comunicación asíncrona, existe un amplio margen de
tiempo para que el estudiante reflexione y prepare sus respuestas. Ello es
particularmente ventajoso para quienes tienen limitaciones en su expresión oral.
8) Permiten el acceso a posibilidades educativas a personas con impedimentos
físicos, culturales o raciales, quienes muchas veces no son atendidos con
suficiencia en las clases presenciales.
9) Promueven un enfoque centrado en el que aprende. Aún si el tutor o quien
administra el curso insistiera en un fuerte control del ambiente de aprendizaje, ello
sería muy difícil, debido a la libertad que existe entre los estudiantes, aparte de que
"dictar una clase" en el contexto "en línea" sería casi imposible,
10) El rol del docente está más orientado a ser líder en discusiones, organizar
actividades "en línea" y proveer retroalimentación sobre las asignaciones y
evaluaciones.
11) El contexto social en el que se dan los aprendizajes a través de actividades "en
línea" juega un papel preponderante, ya que debido a la intensa interacción que se
promueve entre los estudiantes, los participantes pueden conocerse entre ellos,
inclusive en detalles de su vida personal y profesional, por lo que la dinámica social
llega a jugar un papel más allá de los límites de un curso.
12) Estimulan un aprendizaje autónomo, entendido desde la autoplanificación, auto
organización y auto evaluación de los aprendizajes.
Por otro lado, los maestros que se actualizaron por medio del programa mejoraron
sus habilidades en tecnología informática y en el uso de una plataforma informática
para la gestión del propio aprendizaje.
Los impactos cuantitativos esperados del proyecto fueron:
1) 100 profesores de nivel bachillerato capacitados en el uso de herramientas
tecnológicas (20 de matemáticas, 20 de física, etc), con el potencial de amplificar el
mercado meta sin limitaciones de carácter tecnológico.
23
2) 1 sistema básico de alto rendimiento y confiabilidad para un modelo de
educación en línea de la UPEMOR que al menos puede tener una vida útil de 4 o 5
años.
3) Reducción significativa en costos de transporte y por lo tanto en la actualización
de docentes de nivel medio superior de cualquier parte del estado.
4) 1 oferta de diplomado flexible adaptable a los horarios personales de los
docentes
5) 5 diseños instruccionales en formato electrónico que pueden ser accedidos
desde cualquier parte del estado o desde cualquier punto con acceso a Internet
6) 2 repositorios confiables y de alta capacidad para materiales didácticos,
ejercicios, exámenes de entrenamiento, prácticas, etc., uno en la plataforma
Moodle y otro en la plataforma Web.
Respecto al impacto Científico del proyecto, en el mediano plazo se esperó mejorar
la habilidad científico-didáctica en matemáticas y ciencias naturales, de los
docentes de educación media superior. Esto lo estamos midiendo a través del
indicador de evaluación de los cursos de actualización, en términos de la
percepción de los docentes participantes sobre el grado de mejora en su propio
aprendizaje en las áreas de físico-matemáticas y ciencias naturales, y de las
técnicas didácticas correspondientes.
En relación al impacto Tecnológico se consideró mejorar la habilidad en el uso de la
tecnología informática de los docentes de educación media superior. Esto se está
midiendo a través del indicador “Número de profesores de educación media
superior que participaron en programa de actualización, que demostraron
habilitados en el uso de plataforma tecnológica para la gestión del propio
aprendizaje”.
24
3.2.3.2.3.2.3.2. Diseño experimental pDiseño experimental pDiseño experimental pDiseño experimental para ara ara ara QuímicaQuímicaQuímicaQuímica
El diseño de experimentos es la aplicación del método científico para generar
conocimiento de un sistema o proceso. En un diseño experimental se realiza la
planeación del conjunto de pruebas experimentales y se hace análisis estadístico
para obtener conclusiones válidas y objetivas. Para el caso particular de Química,
los elementos del diseño experimental fueron :
1) Unidad experimental:Unidad experimental:Unidad experimental:Unidad experimental: Grupo de 28 docentes de nivel medio superior de
diferentes subsistemas y municipios del curso de Relaciones PRelaciones PRelaciones PRelaciones Períodicas eríodicas eríodicas eríodicas
perteneciente a perteneciente a perteneciente a perteneciente a QuímicaQuímicaQuímicaQuímica en la plataforma Web Moodle.
2) HipótesisHipótesisHipótesisHipótesis nula Ho:nula Ho:nula Ho:nula Ho: El aprendizaje a través de plataformas tecnológicas en
línea apoyadas con software educativo mejoranmejoranmejoranmejoran las evaluaciones de
desempeño promedio del grupo en al menos 10 puntos porcentuales, en el
aprendizaje del tema de relaciones periódicas en la Química.
3) Hipótesis alterna Ha:Hipótesis alterna Ha:Hipótesis alterna Ha:Hipótesis alterna Ha: El aprendizaje a través de plataformas tecnológicas en
línea apoyadas con software educativo nononono mejoranmejoranmejoranmejoran las evaluaciones de
desempeño promedio del grupo en al menos 10 puntos porcentuales, en el
aprendizaje del tema de relaciones periódicas en la Química.
4) Variables a medir :Variables a medir :Variables a medir :Variables a medir : Las variables a medir fueron :
4.1 Desempeño obtenido en la evaluación diagnóstica en línea en una
escala de 0 a 100, individual y promedio del grupo.
4.2 Desempeño obtenido en la evaluación final integral en línea en una
escala de 0 a 100, individual y promedio del grupo
4.3 Diferencia porcentual individual y promedio del grupo entre la evaluación
diagnóstica y la evaluación final integral en línea en una escala de 0 a 100,
como un porcentaje relativo.
25
Cabe señalar que las evaluaciones de las actividades fueron consideradas
para efectos de medir el proceso, sin embargo, como equipo de investigación
se consideró que las mediciones realmente objetivas a contrastar eran la
evaluación final integral contra la evaluación diagnóstica.
Los resultados obtenidos se muestran en las siguientes gráficas.
Tabla 3.2.1: Tabla de resultados de desempeño obtenidos
No. X Y1 Y2
1 Participante 1 76 84
2 Participante 2 80 88
3 Participante 3 0 88
4 Participante 4 88 88
5 Participante 5 72 92
6 Participante 6 88 92
7 Participante 7 80 92
8 Participante 8 84 96
9 Participante 9 92 96
10 Participante 10 80 96
11 Participante 11 88 96
12 Participante 12 84 96
13 Participante 13 86.8 76
14 Participante 14 94.4 84
15 Participante 15 92 88
16 Participante 16 98 88
17 Participante 17 76 88
18 Participante 18 76 88
19 Participante 19 84 88
20 Participante 20 44 92
21 Participante 21 83.6 92
22 Participante 22 76 92
23 Participante 23 88 92
24 Participante 24 92 96
25 Participante 25 84 96
26 Participante 26 88 96
27 Participante 27 98.4 96
28 Participante 28 98.8 100
Promedio 81.14 91.29
Desviación estándar 19.13 5.11
26
Variables
Variable independienteVariable independienteVariable independienteVariable independiente
X=X=X=X= No. de expediente del docente actualizado
Variables dependientesVariables dependientesVariables dependientesVariables dependientes
Y1=Y1=Y1=Y1= Desempeño individual obtenido en la evaluación diagnóstica
Y2=Y2=Y2=Y2= Desempeño individual obtenido en la evaluación integral final
Los resultados obtenidos fueron :
Figura 3.2.1 Gráfica comparativa
La línea de rombos muestra los resultados individuales del desempeño de la
evaluación diagnóstica en línea. La línea de cuadros muestra los resultados del
desempeño de la evaluación final integral en línea de cada uno de los 28 docentes
estudiados en el área de Química. A partir de la gráfica se puede observar que en la
27
mayor parte de los casos el desempeño obtenido en la evaluación final integral en
línea está por encima de la evaluación diágnóstica en línea. El promedio del grupo
obtenido en la evaluación diagnóstica en línea es de 81.14/100 y el promedio del
grupo obtenido en la evaluación final integral en línea es de 91.29/100. La
diferencia es una mejora de 10.14/100 puntos o de 10.14%. Lo cual comprueba la
validez de la hipótesis nula. Inclusive, se tiene una desviación estándar de la
muestra para el caso de la evaluación diagnóstica en línea de 19.13/100, mientras
que la desviación estándar para la muestra en el caso de la evaluación final
integral en línea de 5.11/100. Es decir, no solamente se tiene una mejora en el
desempeño superior al 10%, sino que se reduce la variabilidad en el desempeño en
un 374%, para de ser 19.3 a 5.11. Esto indica que después de haberse llevado a
cabo el proceso de actualización con todas las actividades y ejercicios diseñados
para la actualización de los docentes de nivel medio superior, el grupo se homologó
en más de un 350%. Se puede observar que la gráfica azul muestra una reducción
significativa en la variabilidad con respecto a la gráfica roja.
Figura 3.2.2 Mejora porcentual en desempeño de la evaluación final integral
sobre la evaluación diagnóstica.
28
Tabla 3.2.2: Tabla de diferencia porcentual de mejora en el desempeño promedio del grupo piloto de la evaluación final integral sobre la evaluación diagnóstica
4. C
No. X
Diferencia
porcentual
1 Participante 1 8
2 Participante 2 8
3 Participante 3 88
4 Participante 4 0
5 Participante 5 20
6 Participante 6 4
7 Participante 7 12
8 Participante 8 12
9 Participante 9 4
10 Participante 10 16
11 Participante 11 8
12 Participante 12 12
13 Participante 13 -10.8
14 Participante 14 -10.4
15 Participante 15 -4
16 Participante 16 -10
17 Participante 17 12
18 Participante 18 12
19 Participante 19 4
20 Participante 20 48
21 Participante 21 8.4
22 Participante 22 16
23 Participante 23 4
24 Participante 24 4
25 Participante 25 12
26 Participante 26 8
27 Participante 27 -2.4
28 Participante 28 1.2
Promedio 10.14
29
CAPÍTULO 4CAPÍTULO 4CAPÍTULO 4CAPÍTULO 4. . . . ANÁLISIS DE ANÁLISIS DE ANÁLISIS DE ANÁLISIS DE REQUISITOSREQUISITOSREQUISITOSREQUISITOS
4.1.4.1.4.1.4.1. IntroducciónIntroducciónIntroducciónIntroducción
Este capítulo muestra la especificación de requerimientos para las ocho
aplicaciones que son parte del diplomado de Química, así como la aplicación que
permitirá publicitar los diferentes diplomados ofrecidos por el proyecto general.
En esta etapa se utilizó el estándar IEEE 830-1998. [14]
4.1.1.4.1.1.4.1.1.4.1.1. PropósitoPropósitoPropósitoPropósito
La presente especificación de requerimientos puntualiza lo realizado en las diversas
aplicaciones.
Son ocho aplicaciones que se detallan para el diplomado de Química y una más que
apoya al proyecto general.
4.1.2.4.1.2.4.1.2.4.1.2. Ámbito del proyectoÁmbito del proyectoÁmbito del proyectoÁmbito del proyecto
Del proyecto “Diseño e implementación de un programa para la actualización de
docentes de nivel medio superior en las áreas de Físico-Matemáticas y Ciencias
Naturales” se desprende el subproyecto “Implantación en formato Moodle de
aplicaciones informáticas para la enseñanza a distancia de la Química en el nivel
medio superior” para el que se desarrollarán 9 aplicaciones. A continuación se
describe brevemente cada una de ellas y posteriormente se especifican los
requerimientos considerados para su implementación.
• Las ocho aplicaciones para el curso de Química son:
1. Configuración electrónica de la tabla Periódica. Mostrará la configuración
electrónica de cada elemento de la tabla periódica y su información general,
30
relacionando cada elemento con una figura que represente su uso más
importante o que indique en dónde está presente.
2. Calculadora de masa molecular y número de moles. Calculadora que dada
una fórmula Química podrá obtener la masa molecular y el número de moles
de acuerdo a los gramos dados, facilitando este proceso manual.
3. Crucigrama. Mostrará preguntas relacionadas a la tabla periódica y una
cuadrícula que permitirá responder las preguntas.
4. Electronegatividad. Permitirá ver el comportamiento de la electronegatividad
en los elementos de la tabla periódica, indicando su variación con respecto a
los grupos y períodos.
5. Radio atómico. Mostrará el comportamiento de manera gráfica del radio
atómico en los elementos de la tabla periódica.
6. Partículas atómicas. Creará interacción con el usuario mostrándole un
elemento de la tabla periódica, con su número atómico, número másico y
carga eléctrica, para que el usuario ingrese los datos que se le soliciten. La
interacción con el usuario permitirá que él pueda deducir, a partir de la
información dada, como están conformadas las partículas atómicas de ese
elemento.
7. Memorama. Modelos atómicos. Mostrará un clásico juego que permitirá
formar parejas de cartas que se correspondan.
8. Memorama. Tabla Periódica. Clásico juego que permitirá encontrar un grupo
de tres cartas.
Las ocho aplicaciones mencionadas tienen como propósito principal facilitar la
comprensión de conceptos relacionados a la Química y/o recordar otros conceptos
de esa misma área mediante juegos o imágenes.
• La aplicación para el proyecto general será:
9. Promoción de diplomado mediante correos electrónicos. El curso de
Química, al igual que los otros cursos que forman parte del proyecto general,
necesitan ser publicitados mediante correos electrónicos. Esta aplicación
facilitará este proceso.
31
4.2.4.2.4.2.4.2. Descripción gDescripción gDescripción gDescripción generaleneraleneraleneral
Las ocho aplicaciones que se desarrollarán para el curso de Química buscan
facilitar el aprendizaje, estarán en la plataforma Web Moodle. Dichas aplicaciones
podrán ser vistas por cualquier persona que esté debidamente inscrito en el curso.
La aplicación que permitirá el envío de correos será utilizada por los encargados de
publicitar el curso, no se encontrará dicha aplicación en la plataforma Moodle.
4.2.1.4.2.1.4.2.1.4.2.1. MóMóMóMódulosdulosdulosdulos dededede las aplicacioneslas aplicacioneslas aplicacioneslas aplicaciones informáticasinformáticasinformáticasinformáticas
La plataforma Web Moodle contendrá el curso de Química, dicho curso se compone
de un conjunto de información: actividades y secciones, entre otras cosas, que fue
determinado por el desarrollador de contenidos.
Las aplicaciones informáticas que estarán dentro del curso, formarán parte de
alguno de los temas abordados, siendo esto determinado por el encargado del
curso.
Las aplicaciones desarrolladas podrán ser vistas o utilizadas, según el caso, en
cualquier momento, pero para poder acceder a éstas, es necesario registrarse
previamente en el curso.
a) “Interfaces” de la Plataforma Web Moodle
Existen diversas “interfaces” dentro de la plataforma Moodle que permiten
realizar una gran cantidad de actividades. Es oportuno mencionar para la
presente tesis la siguiente interfaz:
• Módulo crear contenidos
o Editar página Web.- Interfaz que permite crear una página
Web, quedando dicha página contenida en la plataforma Web
Moodle.
La interfaz aquí mencionada permitirá mostrar las aplicaciones que se
desarrollarán para el curso.
b) “Interfaces” de Comunicación
32
Es necesario para el acceso al curso de Química una conexión a Internet, el
protocolo de comunicación es htttps3, implicando este hecho realizar
algunas configuraciones dentro del navegador Web utilizado.
El software a utilizar es Java y Adobe Flash como motor principal para animaciones
multimedia (applets). Se utilizará la plataforma Moodle para montar los cursos a la
Web y los applets en dichos cursos.
Los applets a desarrollar formarán el contenido multimedia con el que los alumnos
puedan interactuar. Los applets servirán como un medio didáctico.
PHP y MySQL serán utilizados para el desarrollo de la aplicación de envío de
correos, siendo entonces un script.
4.3.4.3.4.3.4.3. Características generales deCaracterísticas generales deCaracterísticas generales deCaracterísticas generales de laslaslaslas aplicacionesaplicacionesaplicacionesaplicaciones informáticasinformáticasinformáticasinformáticas
Las ocho aplicaciones informáticas presentarán una forma interactiva y dinámica.
Cada aplicación se desarrollará con el objetivo de facilitar el aprendizaje de algún
concepto de Química.
La novena aplicación informática permitirá el envío de correos para publicitar el
curso de Química, facilitando esta tarea. El envío de correos se hará de manera
individual, es decir, cada uno de los correos será específico para un usuario
evitando así que el correo llegue a su destino como “Spam” 4.
4.4.4.4.4.4.4.4. Características de UCaracterísticas de UCaracterísticas de UCaracterísticas de Usuariossuariossuariossuarios
Los usuarios que utilizarán las ocho aplicaciones del curso de Química serán
docentes de preparatoria.
La aplicación para el envío de correos será utilizado por personas capacitadas en
tecnologías de la información. 3 Protocolo seguro de HTTP que es un protocolo de transferencia de hipertexto. 4 Correo basura o mensaje basura.
33
4.5.4.5.4.5.4.5. Especificación de requerimientosEspecificación de requerimientosEspecificación de requerimientosEspecificación de requerimientos de las de las de las de las aplicaciones informáticasaplicaciones informáticasaplicaciones informáticasaplicaciones informáticas
A continuación se especifican de manera detallada los requerimientos de las nueve
aplicaciones informáticas.
4.5.1.4.5.1.4.5.1.4.5.1. Requerimientos funcionalesRequerimientos funcionalesRequerimientos funcionalesRequerimientos funcionales
Se detallan los requerimientos especificados para cada una de las aplicaciones que
se desarrollarán.
4.5.1.1.4.5.1.1.4.5.1.1.4.5.1.1. Configuración Configuración Configuración Configuración electrónicaelectrónicaelectrónicaelectrónica de la tabla periódicade la tabla periódicade la tabla periódicade la tabla periódica
Requerimiento general: Desarrollar un applet que permita observar la configuración
electrónica de cada elemento de la tabla periódica e información general del
mismo, permitiendo relacionar cada elemento con una figura que represente su uso
más importante o que indique en dónde está presente.
Justificación: Facilitar la comprensión de cómo están ordenados los electrones,
considerando el número cuántico principal y el subnivel de energía, así como
mostrar la información principal de cada elemento.
Requisitos específicos:
Tabla 4.5.1: Requisitos de aplicación Configuración electrónica de la tabla periódica
Requisito Descripción
A1-R1 La aplicación mostrará la siguiente información correspondiente al
elemento seleccionado de la tabla periódica que será presentada:
• Nombre del elemento
• Número atómico
• Peso atómico
• Radio atómico
A1-R2 La aplicación deberá mostrar la configuración electrónica del elemento
34
seleccionado con una imagen que señale:
• Número cuántico principal
• Subnivel de energía
• Ordenamiento de los electrones, considerando el principio de
exclusión de Pauli
A1-R3 Cada elemento deberá incluir una imagen que represente su uso más
importante o dónde está presente.
Modelo de Casos de uso:
Figura 4.5.1 Diagrama de casos de uso: Configuración electrónica de la tabla periódica
Tabla 4.5.2: Descripción de caso de uso. Seleccionar elemento químico
Caso de uso Seleccionar elemento químico. CU-A1-01
Actores Alumno
Tipo Básico
Propósito Interactuar con el usuario mostrando la tabla periódica y sus elementos
como seleccionables, se verá información del elemento seleccionado.
Resumen El alumno selecciona un elemento de la tabla periódicay observa
información del elemento seleccionado así como su configuración
electrónica.
Precondiciones Tener instalada la JVM y acceso a la información del diplomado de
Química en Moodle.
Flujo principal 1. El alumno da “clic” en algún elemento químico
2. El applet muestra la configuración electrónica del elemento
seleccionado (A1-R2)
35
3. El applet muestra la información del elemento seleccionado (A1-R1)
Excepciones E1. El applet no se visualiza.
- Actualizar el navegador Web
- Verificar tener instalada la JVM recomendada en el diplomado
4.5.1.2.4.5.1.2.4.5.1.2.4.5.1.2. Calculadora de masa molecular y número de molesCalculadora de masa molecular y número de molesCalculadora de masa molecular y número de molesCalculadora de masa molecular y número de moles
Requerimiento general: Desarrollar un applet que permita crear una calculadora
que dada una fórmula Química obtenga la masa molecular y el número de moles de
acuerdo a los gramos dados.
Justificación: El proceso de calcular el número de moles y masa molecular es
tedioso y tardado.
Requisitos específicos:
Tabla 4.5.3: Requisitos de applet Calculadora de masa molecular y número de moles
Requisito Descripción
A2-R1 El applet mostrará los elementos químicos permitiendo seleccionarlos para
crear una fórmula Química.
A2-R2 El elemento seleccionado permitirá que se le asigne un número, para
indicar cuántos átomos de ese elemento se utilizarán.
A2-R3 El applet permitirá calcular la masa molecular de la fórmula Química
proporcionada, con la siguiente fórmula:
Masamolecular = masaatomicaElement�
���o�
A2-R4 El applet indicará el número de moles contenidos en una masa dada (en
gramos), después de haberse calculado el peso molecular, con la siguiente
fórmula:
n=gr / MM, donde
n= numero de moles, gr= son los gramos que se necesitan, MM= masa
molecular o peso molecular.
36
Modelo de Casos de uso:
Figura 4.5.2 Diagrama de casos de uso: Calculadora de masa molecular y número de moles
Tabla 4.5.4: Descripción de caso de uso. Seleccionar elemento químico
Caso de uso Seleccionar elemento químico. CU- A2-01
Actores Alumno.
Tipo Básico.
Propósito Dar interacción con el usuario mostrando la tabla periódica y sus
elementos como seleccionables para poder ingresar una fórmula
Química.
Resumen El alumno selecciona un elemento de la tabla periódica.
Precondiciones Tener instalada la JVM y acceso a la información del diplomado de
Química en Moodle.
Flujo principal 1. El alumno da “clic” en algún elemento químico
2. El applet solicita el número de átomos requeridos
3. El alumno ingresa el número de átomos requeridos del elemento
37
4. El applet muestra el elemento seleccionado con el número de átomos
Subflujos S1. El alumno no se ingresa un número de átomos
- El applet alerta que el número por defecto será 1
Excepciones E1. No es posible la selección de elemento químico o el applet no se
visualiza.
- Actualizar el navegador Web
- Verificar tener instalada la JVM recomendada en el diplomado
Tabla 4.5.5: Descripción de caso de uso. Calcular masa molecular
Caso de uso Calcular masa molecular. CU- A2-02
Actores Alumno.
Tipo Básico.
Propósito Calcular la masa molecular de la fórmula química ingresada.
Resumen Muestra el cálculo de la masa molecular.
Precondiciones Haber ingresado una fórmula química o al menos un elemento de la
tabla periódica.
Flujo principal 1. El alumno da “clic” en botón MM (masa molecular)
2. El applet muestra el cálculo de la masa molecular de la fórmula dada
Excepciones E1. No se obtiene un resultado al presionar el botón de masa molecular.
- Actualizar el navegador Web
- Verificar tener instalada la JVM recomendada en el diplomado
Tabla 4.5.6: Descripción de caso de uso. Calcular número de moles
Caso de uso Calcular número de moles CU- A2-03
Actores Alumno.
Tipo Básico.
Propósito Calcular el número de moles, de acuerdo a los gramos ingresados y la
masa molecular de la fórmula química.
Resumen Muestra el cálculo del número de moles.
Precondiciones Debe de haberse calculado la masa molecular de la fórmula química y
haberse ingresado el número de gramos.
Flujo principal 1. El alumno da “clic” en botón Moles
38
2. El applet muestra el cálculo del número de moles
Excepciones E1. No se obtiene un resultado al presionar el botón de moles.
- Actualizar el navegador Web
- Verificar tener instalada la JVM recomendada en el diplomado
Tabla 4.5.7: Descripción de caso de uso. Validar gramos
Caso de uso Validar gramos CU- A2-04
Actores Alumno
Tipo Inclusión
Propósito Validar que el número de gramos ingresado es correcto.
Resumen Determina si el número de gramos fue ingresado, de ser así, verifica que
sea correcto el formato.
Precondiciones Debe de haberse dado “clic” en botón moles.
Flujo principal 1. El applet evalúa que se haya ingresado el número de moles
2. El applet verifica que el número de moles esté en un formato
adecuado
Subflujos S1. El número de gramos no fue ingresado
- El applet alerta que el número de gramos es incorrecto
S2. El número de gramos presenta un formato inválido
- El applet alerta que el número de gramos es incorrecto
Excepciones
4.5.1.3.4.5.1.3.4.5.1.3.4.5.1.3. CrucigramaCrucigramaCrucigramaCrucigrama
Requerimiento general: Desarrollar un crucigrama que muestre preguntas
relacionadas a la tabla periódica.
Justificación: Facilitar al usuario recordar ciertos conceptos de la tabla periódica.
39
Requisitos específicos:
Tabla 4.5.8: Requisitos de applet Crucigrama
Requisito Descripción
A3-R1 El applet mostrará el área de juego, con una clásica cuadrícula para poner
las respuestas.
A3-R2 El applet permitirá iniciar el juego en cualquier momento y desplazarse por
las preguntas.
A3-R3 El applet evaluará cada una de las respuestas e indicará en qué pregunta
existe un error y cuáles están bien.
A3-R4 El applet permitirá visualizar las respuestas si así lo decide el usuario.
Modelo de Casos de uso:
Figura 4.5.3 Diagrama de casos de uso: Crucigrama
40
Tabla 4.5.9: Descripción de caso de uso. Iniciar juego
Caso de uso Iniciar juego. CU- A3-01
Actores Alumno.
Tipo Básico.
Propósito Iniciar el juego mostrando la primera pregunta y limpiando el área de
juego.
Resumen El alumno inicia el juego, la cuadrícula del crucigrama se limpia y se
muestra la primera pregunta.
Precondiciones Tener instalada la JVM y acceso a la información del diplomado de
Química en Moodle.
Flujo principal 1. El alumno da “clic” en botón iniciar juego
2. El applet limpia la cuadrícula del crucigrama
3. El applet muestra la primera pregunta
Excepciones E1. No es posible visualizar el applet o el botón no responde.
- Actualizar el navegador Web
- Verificar tener instalada la JVM recomendada en el diplomado
Tabla 4.5.10: Descripción de caso de uso. Mostrar pregunta
Caso de uso Mostrar pregunta CU- A3-02
Actores Alumno.
Tipo Básico.
Propósito Mostrar la pregunta a ser resuelta.
Resumen Muestra la pregunta siguiente o anterior según se seleccione, para
resolverse.
Precondiciones Debe haberse iniciado el juego.
Flujo principal 1. El alumno da “clic” en el botón siguiente pregunta
2. El applet muestra la pregunta
Subflujos S1. El alumno da “clic” en el botón anterior
- El applet muestra la pregunta previamente vista.
Excepciones E1. No es posible visualizar el applet o el botón mostrar pregunta no
responde.
- Actualizar el navegador Web
41
- Verificar tener instalada la JVM recomendada en el diplomado
Tabla 4.5.11: Descripción de caso de uso. Evaluar respuestas
Caso de uso Evaluar respuestas. CU- A3-03
Actores Alumno.
Tipo Básico.
Propósito Mostrar las respuestas correctas e incorrectas.
Resumen Muestra las repuestas correctas e incorrectas.
Precondiciones Debe haberse iniciado el juego.
Flujo principal 1. El alumno da “clic” en el botón aceptar
2. El applet colorea las respuestas correctas de verde y de rojo las
incorrectas
3. El applet envía un mensaje indicando el número de aciertos y errores
Excepciones E1. No es posible visualizar el applet o no es posible evaluar las
respuestas.
- Actualizar el navegador Web
- Verificar tener instalada la JVM recomendada en el diplomado
Tabla 4.5.12: Descripción de caso de uso. Mostrar respuestas
Caso de uso Mostrar respuestas. CU- A3-04
Actores Alumno.
Tipo Básico.
Propósito Mostrar las respuestas.
Resumen Muestra las repuestas del crucigrama.
Precondiciones Debe haberse iniciado el juego.
Flujo principal 1. El alumno da “clic” en el botón ver respuestas
2. El applet muestra las respuestas en un campo de texto
Excepciones E1. No es posible visualizar el applet o visualizar respuestas.
- Actualizar el navegador Web
- Verificar tener instalada la JVM recomendada en el diplomado
42
4.5.1.4.4.5.1.4.4.5.1.4.4.5.1.4. ElectronegatividadElectronegatividadElectronegatividadElectronegatividad
Requerimiento general: Desarrollar un applet que permita mostrar el
comportamiento de la electronegatividad de los elementos de la tabla periódica,
indicando su variación con respecto a los grupos y períodos.
Justificación: El visualizar cómo es que aumenta o disminuye la electronegatividad
en los diferentes grupos y períodos de la tabla periódica ayudará a conceptualizar
de mejor manera este tema.
Requisitos específicos:
Tabla 4.5.13: Requisitos de applet Electronegatividad
Requisito Descripción
A4-R1 El applet mostrará la tabla periódica con la posibilidad de seleccionar cada
uno de sus elementos.
A4-R2 El applet mostrará el valor numérico de la electronegatividad del elemento
seleccionado.
A4-R3 El applet graficará el grupo y el período del elemento que se haya
seleccionado, con los valores de la electronegatividad.
Modelo de Casos de uso:
Figura 4.5.4 Diagrama de casos de uso: Electronegatividad
43
Tabla 4.5.14: Descripción de caso de uso. Seleccionar elemento químico
Caso de uso Seleccionar elemento químico. CU- A4-01
Actores Alumno.
Tipo Básico.
Propósito Dar interacción con el usuario mostrando la tabla periódica y sus
elementos como seleccionables, graficando la electronegatividad.
Resumen El alumno selecciona un elemento de la tabla periódica y observa
gráficamente la electronegatividad.
Precondiciones Tener instalada la JVM y acceso a la información del curso de Química en
Moodle.
Flujo principal 1. El alumno da “clic” en algún elemento químico
2. El applet muestra el valor de electronegatividad del elemento
seleccionado
3. El applet grafica la electronegatividad del grupo y período del elemento
seleccionado
Excepciones E1. No es posible la selección de un elemento químico o visualizar el
applet.
- Actualizar el navegador Web
- Verificar tener instalada la JVM recomendada en el diplomado
4.5.1.5.4.5.1.5.4.5.1.5.4.5.1.5. Radio Radio Radio Radio aaaatómicotómicotómicotómico
Requerimiento general: Desarrollar un applet que muestre gráficamente el
comportamiento del radio atómico de los elementos de la tabla periódica.
Justificación: El visualizar cómo es que aumenta o disminuye el radio atómico en los
diferentes grupos y períodos de la tabla periódica ayudará a conceptualizar de
mejor manera este tema.
44
Requisitos específicos:
Tabla 4.5.15: Requisitos de applet radio atómico
Requisito Descripción
A5-R1 El applet mostrará la tabla periódica con la posibilidad de seleccionar cada
uno de sus elementos.
A5-R2 El applet mostrará el valor numérico del radio atómico del elemento
seleccionado.
A5-R3 El applet graficará el grupo y el período del elemento que se haya
seleccionado, con los valores del radio atómico.
Modelo de Casos de uso:
Figura 4.5.5 Diagrama de casos de uso: Radio atómico
Tabla 4.5.16: Descripción de caso de uso. Seleccionar elemento químico
Caso de uso Seleccionar elemento químico. CU- A5-01
Actores Alumno.
Tipo Básico.
Propósito Dar interacción con el alumno mostrando la tabla periódica y sus
elementos como seleccionables, graficando el radio atómico.
Resumen El alumno selecciona un elemento de la tabla periódica y observa una
gráfica del radio atómico.
Precondiciones Tener instalada la JVM y acceso a la información del curso de Química en
Moodle
Flujo principal 1. El alumno da “clic” en algún elemento químico
2. El applet muestra el valor numérico del radio atómico del elemento
45
seleccionado
3. El applet gráfica el radio atómico del grupo y período del elemento
seleccionado
Excepciones E1. No es posible la selección de un elemento químico o visualizar el
applet.
- Actualizar el navegador Web
- Verificar tener instalada la JVM recomendada en el diplomado
4.5.1.6.4.5.1.6.4.5.1.6.4.5.1.6. Partículas atómicasPartículas atómicasPartículas atómicasPartículas atómicas
Requerimiento general: Desarrollar un applet que interactúe con el usuario
solicitando llenar los datos correspondientes al elemento mostrado.
Justificación: La interacción con el usuario permitirá que él pueda deducir, a partir
de cierta información dada, cómo están conformadas las partículas atómicas de ese
elemento y así fortalecer sus conocimientos.
Requisitos específicos:
Tabla 4.5.17: Requisitos de applet partículas atómicas
Requisito Descripción
A6-R1 El applet mostrará un elemento de la tabla periódica con los siguientes
datos:
• Número atómico
• Número másico
• Carga eléctrica (en caso necesario)
No se mostrará a que pertenece cada uno de los datos.
A6-R2 El applet permitirá que el usuario ingrese los siguientes datos:
• Número atómico
• Número másico
• Protones
• Neutrones
• Electrones
A6-R3 El applet verificará que los datos ingresados sean correctos e indicará en
46
caso incorrecto en que dato existe un error. Después de dos intentos se
mostrarán las respuestas.
A6-R4 El applet mostrará diversos elementos que serán parte de una plantilla.
A6-R5 El applet contendrá un apartado de ayuda para explicar cómo es el llenado
correcto de los datos solicitados, sin dar las respuestas.
Modelo de Casos de uso:
Figura 4.5.6 Diagrama de casos de uso: Partículas atómicas
Tabla 4.5.18: Descripción de caso de uso. Nuevo elemento
Caso de uso Nuevo elemento. CU- A6-01
Actores Alumno.
Tipo Básico.
Propósito Mostrar un nuevo elemento.
Resumen Muestra un nuevo elemento.
Precondiciones Tener instalado flash y acceso a la información del diplomado de
Química.
Flujo principal 1. El alumno da “clic” en el botón Nuevo
2. El applet muestra un nuevo elemento con sus respectivos datos (A6-
47
R1)
Excepciones E1. No es posible la visualización del nuevo elemento o del applet.
- Actualizar el navegador Web
- Verificar tener instalado Flash Player recomendado en el curso.
Tabla 4.5.19: Descripción de caso de uso. Verificar respuesta
Caso de uso Verificar respuesta. CU- A6-02
Actores Alumno.
Tipo Básico.
Propósito Evaluar respuestas de usuario.
Resumen Indica las respuestas correctas e incorrectas.
Precondiciones Haber ingresado las respuestas.
Flujo principal 1. El alumno da“clic” en botón comprobar
2. El applet muestra mensaje de correcto
Subflujos S1. El applet no muestra mensaje de correcto
- El applet muestra los campos donde el alumno tuvo error, marcándolos
de color rojo.
Excepciones E1. No muestra mensaje de correcto o no se indican errores.
- Actualizar el navegador Web
- Verificar tener instalado Flash Player recomendado en el curso.
Tabla 4.5.20: Descripción de caso de uso. Mostrar ayuda
Caso de uso Mostrar ayuda. CU-A6-03
Actores Alumno.
Tipo Básico.
Propósito Explicar cómo es el correcto llenado de los datos solicitados.
Resumen Muestra explicación acerca de cómo se deben llenar los datos
solicitados.
Precondiciones Tener instalado Flash y acceso a la información del diplomado de
Química.
Flujo principal 1. El alumno da “clic” en botón Ayuda
2. El applet muestra explicación acerca del correcto llenado de los datos
48
solicitados
Excepciones E1. No se visualiza la ayuda.
- Actualizar el navegador Web
- Verificar tener instalada Flash Player recomendado en el curso.
Tabla 4.5.21: Descripción de caso de uso. Mostrar respuesta
Caso de uso Mostrar respuesta. CU- A6-04
Actores Alumno.
Tipo Extendido.
Propósito Mostrar las respuestas.
Resumen Muestra las respuestas del elemento que se muestra.
Precondiciones Haber dado “clic” más de dos veces en botón comprobar sin acertar
todas las respuestas.
Flujo principal 1. El applet muestra las respuestas del elemento mostrado (A6-R2)
Excepciones E1. No se visualizan las respuestas.
- Actualizar el navegador Web
- Verificar tener instalado Flash Player recomendado en el curso.
4.5.1.7.4.5.1.7.4.5.1.7.4.5.1.7. Memorama. Modelos Memorama. Modelos Memorama. Modelos Memorama. Modelos AtómicoAtómicoAtómicoAtómicossss
Requerimiento general: Desarrollar un memorama que permita relacionar la
información de los modelos atómicos propuestos más conocidos.
Justificación: La interacción mediante un clásico juego permitirá recordar los
diferentes modelos atómicos propuestos.
Requisitos específicos:
Tabla 4.5.22: Requisitos de applet. Memorama. Modelos Atómicos
Requisito Descripción
A7-R1 El applet mostrará una cuadrícula de 4 por 5, con todas las cartas del
juego ocultas.
A7-R2 El applet ordenará de manera aleatoria las cartas.
49
A7-R3 El applet permitirá la selección de cada una de las cartas mostrando lo que
ocultan.
A7-R4 El applet permitirá hacer pares de cartas en caso de que la segunda carta
mostrada corresponda con la primera carta.
Los pares que existirán son:
• Personaje – Año
• Estructura (imagen de modelo atómico) – Características
En caso de no acertar al par de cartas, se ocultarán nuevamente
A7-R5 El applet tendrá un tiempo límite de 10 minutos y será posible iniciarlo en
cualquier momento.
El applet se iniciará en automático al abrir la página que lo contiene.
Modelo de Casos de uso:
Figura 4.5.7 Diagrama de casos de uso: Memorama. Modelos Atómicos
Tabla 4.5.23: Descripción de caso de uso. Iniciar juego
Caso de uso Iniciar juego. CU- A7-01
Actores Alumno.
Tipo Básico.
Propósito Iniciar el juego ocultando las cartas en un orden aleatorio y reiniciando el
50
tiempo.
Resumen Oculta las cartas de juego en el tablero en un orden aleatorio y reinicia
tiempo.
Precondiciones Tener instalado Flash y acceso a la información del diplomado de
Química.
Flujo principal 1. El alumno da “clic” en el botón Iniciar
2. El applet oculta las cartas que estén visibles
3. El applet reinicia el tiempo mostrándose como 0:00
4. El applet ordena las cartas de manera aleatoria y ocultas
Excepciones E1. No es posible la visualización del applet.
- Actualizar el navegador Web
- Verificar tener instalado Flash Player recomendado en el curso.
Tabla 4.5.24: Descripción de caso de uso. Seleccionar carta
Caso de uso Seleccionar carta. CU- A7-02
Actores Alumno.
Tipo Básico.
Propósito Permitir al usuario interactuar con el tablero de juego.
Resumen Las cartas del tablero permiten ser seleccionadas y se muestran.
Precondiciones Tener instalado flash y acceso a la información del diplomado de
Química.
Flujo principal 1. El alumno da “clic” en carta
2. El applet muestra la carta seleccionada
Excepciones E1. No se puede muestra alguna carta
- Actualizar el navegador Web
- Verificar tener instalado Flash Player recomendado en el curso.
Tabla 4.5.25: Descripción de caso de uso. Validar pares
Caso de uso Validar pares. CU- A7-03
Actores Alumno.
Tipo Extendido.
Propósito Validar que se haga el par correcto de cartas.
51
Resumen Valida que las cartas mostradas hagan par para dejarlas visibles o en
caso contrario ocultarlas nuevamente.
Precondiciones Haber seleccionado al menos una carta.
Flujo principal 1. El applet valida que el par de cartas mostrados sea correcto
2. El applet deja las dos cartas visibles
Subflujos S1. El par de cartas mostrados no es correcto
- El applet oculta las dos cartas
Excepciones E1. No se visualizan las cartas.
- Actualizar el navegador Web
- Verificar tener instalado Flash Player recomendado en el curso.
4.5.1.8.4.5.1.8.4.5.1.8.4.5.1.8. Memorama. Tabla Memorama. Tabla Memorama. Tabla Memorama. Tabla pppperiódicaeriódicaeriódicaeriódica
Requerimiento general: Desarrollar un memorama que permita relacionar la
información de personajes con sus contribuciones al desarrollo de la actual tabla
periódica.
Justificación: La interacción mediante un clásico juego permitirá recordar diferentes
conceptos relacionados a la historia de la tabla periódica.
Requisitos específicos:
Tabla 4.5.26: Requisitos de applet. Memorama. Tabla Periódica
Requisito Descripción
A8-R1 El applet mostrará dos cuadrículas de 3 por 6, con todas las cartas del
juego ocultas.
La primer cuadrícula corresponde al área de juego.
La segunda cuadrícula mostrará los conjuntos de cartas encontradas de
manera acertada.
A8-R2 El applet ordenará de manera aleatoria las cartas.
A8-R3 El applet permitirá la selección de cada una de las cartas mostrando lo que
ocultan.
A8-R4 El applet permitirá relacionar las cartas de la siguiente forma:
• Henning – P – cerillo (imagen)
52
• Dobereiner – Ca,Ba,Sr – Ley de las tríadas
• Beguyer de Chancourtois – Tabla helicoidal – Tornillo telúrico
• Newlands – Ley de las Octavas (imagen) – 1863
• Mendeleiev – Masas atómicas – Tabla periódica
• Ramsey – Grupo cero (imagen) – Ne
En caso de no acertar al conjunto de cartas, se ocultarán nuevamente
A8-R5 El applet tendrá un tiempo límite de 10 minutos y será posible iniciarlo en
cualquier momento.
El applet se iniciará en automático al abrir la página que lo contiene.
Modelo de Casos de uso:
Figura 4.5.8 Diagrama de casos de uso: Memorama. Tabla Periódica
Tabla 4.5.27: Descripción de caso de uso. Iniciar juego
Caso de uso Iniciar juego. CU- A8-01
Actores Alumno.
Tipo Básico.
Propósito Ocultar cartas en un orden aleatorio y reiniciar tiempo.
Resumen Oculta las cartas de juego en los dos tableros y reiniciar tiempo.
Precondiciones Tener instalado Flash y acceso a la información del diplomado de
Química.
Flujo principal 1. El alumno “clic” en el botón Iniciar
53
2. El applet oculta las cartas que estén visibles
3. El applet reinicia el tiempo a 0:00
4. El applet ordena las cartas de manera aleatoria y ocultas
Excepciones E1. No es posible la visualización del applet.
- Actualizar el navegador Web
- Verificar tener instalado Flash Player recomendado en el curso.
Tabla 4.5.28: Descripción de caso de uso. Seleccionar carta
Caso de uso Seleccionar carta. CU- A8-02
Actores Alumno.
Tipo Básico.
Propósito Permitir al usuario interactuar con el tablero de juego.
Resumen Las cartas del primer tablero permiten ser seleccionadas y se muestran.
Precondiciones Tener instalado Flash y acceso a la información del diplomado de
Química.
Flujo principal 1. El alumno da “clic” en carta
2. El applet muestra la carta seleccionada
Excepciones E1. No se puede seleccionar alguna carta
- Actualizar el navegador Web
- Verificar tener instalado Flash Player recomendado en el curso
Tabla 4.5.29: Descripción de caso de uso. Validar conjunto de cartas
Caso de uso Validar conjunto de cartas. CU- A8-03
Actores Alumno.
Tipo Extendido.
Propósito Validar que se haga el conjunto correcto de cartas.
Resumen Valida que las cartas mostradas hagan el conjunto adecuado para
dejarlas visibles o en caso contrario ocultarlas nuevamente.
Precondiciones Haber seleccionado al menos dos cartas.
Flujo principal 1. El applet valida que el conjunto de cartas mostrados sea correcto
2. El applet deja las tres cartas visibles en los dos tableros
Subflujos S1. El conjunto de cartas mostrados no es correcto
54
- El applet oculta las cartas del primer tablero
- El segundo tablero no muestra el conjunto de cartas incorrecto
Excepciones E1. No se visualizan las cartas.
- Actualizar el navegador Web
- Verificar tener instalado Flash Player recomendado en el curso.
4.5.1.9.4.5.1.9.4.5.1.9.4.5.1.9. PromoPromoPromoPromoción de diplomado mediante correos electrónicosción de diplomado mediante correos electrónicosción de diplomado mediante correos electrónicosción de diplomado mediante correos electrónicos
Requerimiento general: Desarrollar un script que permita enviar correos de manera
masiva y que llegué a su correspondiente destinatario sin ser detectado como
“Spam”.
Justificación: El envío individual a cada uno de los correos de los docentes es un
proceso que consume mucho tiempo.
Requisitos específicos:
Tabla 4.5.30: Requisitos de script. Promoción de diplomado mediante correos electrónicos
Requisito Descripción
S1-R1 El script permitirá que dado un número de correos cualquiera, se les envíe
la convocatoria del diplomado en línea.
S1-R2 El correo enviado no debe llegar a la bandeja de entrada del destinatario
como “Spam”, esto se hace enviando correos de manera individual, un
destinatario a la vez.
S1-R3 El archivo de entrada será un archivo *.txt que contenga todos los correos,
que seguirá el siguiente formato:
Correo electrónico (1 tabulación) enviado (1 tabulación) respondido
Correo electrónico (1 tabulación) enviado (1 tabulación) respondido
.
.
.
S1-R3.1. Se debe dejar un espacio de tabulación entre cada columna.
S1-R3.2. Enviado podrá tener un valor de 1, para indicar que se envío o 0
55
en caso contrario.
S1-R3.3. Respondido podrá tener un valor de 1 para indicar que se
respondió o 0 en caso contrario.
S1-R3.4. El archivo deberá ser nombrado como entrada.txt
S1-R4 No se debe reenviar el correo a alguien que ya respondió al mismo, ni
saturar de correos a alguna persona.
Modelo de Casos de uso:
Figura 4.5.9 Casos de uso: Promoción de diplomado mediante correos electrónicos
Tabla 4.5.31: Descripción de caso de uso. Enviar Correos
Caso de uso Enviar Correos. CU-S1-01
Actores Becario.
Tipo Básico.
Propósito Verifica los datos de entrada del archivo y el envío de correos.
Resumen Verifica que los datos del archivo de entrada estén en el formato correcto
y el envío de los correos.
Precondiciones Debe existir el archivo de entrada (entrada.txt) y residir en la carpeta
donde está el proyecto.
Flujo principal 1. El administrador da “clic” en el botón comenzar envío
2. El script obtiene los datos del archivo entrada.txt
3. El script inserta los datos en la base de datos
4. El script verifica el correcto envío de los correos electrónicos.
Excepciones E1. No se insertan los registros en la base de datos.
- Verificar que el archivo de entrada existe en la carpeta local del
proyecto
56
- Verificar que el archivo de entrada sigue las especificaciones
indicadas (S1-R3)
E2. Mensaje de error en algún correo
- Verificar que el correo sea correcto
E3. No se envían los correos.
- Verificar conexión a Internet
- Actualizar página y volver a intentar
Se estructuró la tabla mostrada en la imagen 4.5.10 para almacenar los correos
electrónicos de los diversos docentes a los que se les promocionaría el diplomado.
Estructura tabla docentes
Figura 4.5.10 Estructura de tabla docentes
4.5.2.4.5.2.4.5.2.4.5.2. ““““InterfacesInterfacesInterfacesInterfaces”””” EEEExternasxternasxternasxternas
Descripción detallada de las entradas para las diferentes aplicaciones, y las salidas
de las mismas.
4.5.2.1.4.5.2.1.4.5.2.1.4.5.2.1. ““““InterfacesInterfacesInterfacesInterfaces”””” de Usuariode Usuariode Usuariode Usuario
Se muestran modelos propuestos de cómo se verán las “interfaces” de las
diferentes aplicaciones, no siendo específicos en colores o detalles que se dejan sin
observar.
57
4.5.2.1.1.4.5.2.1.1.4.5.2.1.1.4.5.2.1.1. Configuración electrónica de la tabla periódicaConfiguración electrónica de la tabla periódicaConfiguración electrónica de la tabla periódicaConfiguración electrónica de la tabla periódica
La siguiente interfaz es la que permitirá al usuario interactuar con la aplicación
informática que llamamos configuración electrónica de la tabla periódica.
Figura 4.5.11 Interfaz: Configuración electrónica de la tabla periódica
Cada uno de los elementos de la tabla periódica podrá ser seleccionado por el
usuario, haciendo un “clic” sobre él.
El elemento seleccionado mostrará en la parte superior derecha:
• Nombre del elemento
• Número atómico
• Peso atómico
• Radio atómico
En la parte inferior derecha se modificará la imagen mostrada a la configuración
electrónica del elemento.
Cada elemento tendrá una imagen representativa del mismo y un color de recuadro
que lo agrupe de acuerdo a los períodos y grupos de la tabla periódica.
Se mostrarán los diferentes bloques que conforman la tabla periódica, grupos y
períodos, como se ve en la imagen 4.5.11.
58
4.5.2.1.2.4.5.2.1.2.4.5.2.1.2.4.5.2.1.2. Calculadora de masa molecular y número de molesCalculadora de masa molecular y número de molesCalculadora de masa molecular y número de molesCalculadora de masa molecular y número de moles
Las partes que formarán parte de manera visual de la calculadora de masa
molecular y número de moles se muestra a continuación.
Figura 4.5.12 Interfaz: Calculadora de masa molecular y número de moles
Se enlista una descripción de cada una de las partes:
Elementos. Muestra elementos de la tabla periódica que podrán elegirse y cuando
eso suceda se mostrará el cuadro de diálogo mostrado en la figura 4.5.13. Ese
cuadro de diálogo permite especificar cuántos átomos se necesitan para ese
elemento, y en caso de no especificarse se muestra el cuadro de diálogo mostrado
en la figura 4.5.14 que advierte que el número que se tomará es uno.
Fórmula. Cualquier elemento que sea seleccionado se mostrará en este campo de
texto.
Masa molecular. Campo de texto que mostrará el resultado de la masa molecular
de la fórmula ingresada.
Gramos. Campo de texto que permite ingresar los gramos requeridos de la fórmula
ingresada.
59
Número de moles. Campo de texto que muestra el cálculo del número de moles de
acuerdo a los gramos dados.
Masa Molecular. Botón que calcula la masa molecular de la fórmula ingresada y
muestra el resultado en el campo correspondiente.
Moles. Botón que permite el cálculo del número de moles de los gramos dados, en
caso de no existir un valor de gramos o fue incorrectamente ingresado, se muestra
un mensaje de advertencia.
Limpiar. Limpia los campos de texto: masa molecular, gramos, número de moles y
fórmula.
Figura 4.5.13 Interfaz que permite ingresar número de átomos
Figura 4.5.14 Interfaz de advertencia acerca del número de átomos
4.5.2.1.3.4.5.2.1.3.4.5.2.1.3.4.5.2.1.3. CrucigramaCrucigramaCrucigramaCrucigrama
La interfaz de la aplicación Crucigrama se muestra a continuación:
60
Figura 4.5.15 Interfaz: Crucigrama
La cuadrícula que se mostrará será siempre la misma, al igual que las preguntas.
El botón iniciar mostrará la primera pregunta en la parte inferior, en el área que dice
“Preguntas, mensajes”, también limpiará la cuadrícula del crucigrama en caso de
ser necesario.
Los botones siguiente y anterior permitirán desplazarse a través de las diferentes
preguntas, siendo mostrada una pregunta a la vez. Cada pregunta tendrá un
número que identificará en dónde debe ir la respuesta, además indicará si la
respuesta debe estar de manera vertical u horizontal.
El botón Aceptar evaluará las respuestas del usuario, coloreando de color rojo las
incorrectas y de color verde las correctas, también se indicará en el campo de texto
“Preguntas, mensajes” el número de preguntas correctas e incorrectas.
El botón “Respuestas” mostrará la solución del crucigrama en el área “Preguntas,
mensajes”.
4.5.2.1.4.4.5.2.1.4.4.5.2.1.4.4.5.2.1.4. ElectronegatividadElectronegatividadElectronegatividadElectronegatividad
La interfaz de la aplicación nombrada como electronegatividad se muestra y detalla.
61
Figura 4.5.16 Interfaz: Electronegatividad
Se mostrará en pantalla una tabla periódica con los diferentes elementos como
seleccionables.
La selección de algún elemento hará que se grafique:
• La electronegatividad de los elementos con respecto al período en la parte
inferior de la tabla.
• La electronegatividad de los elementos con respecto al grupo en la parte
posterior derecha.
4.5.2.1.5.4.5.2.1.5.4.5.2.1.5.4.5.2.1.5. Radio Radio Radio Radio aaaatómicotómicotómicotómico
Al igual que la aplicación anterior se pretende mostrar el radio atómico de los
elementos con respecto a grupos y períodos detallándose la interfaz gráfica.
62
Figura 4.5.17 Interfaz: Radio atómico
Se mostrará una tabla periódica con sus elementos como seleccionables.
La selección de un elemento graficará:
• El radio atómico de los elementos del grupo.
• El radio atómico de los elementos del período.
4.5.2.1.6.4.5.2.1.6.4.5.2.1.6.4.5.2.1.6. Partículas atómicasPartículas atómicasPartículas atómicasPartículas atómicas
La aplicación “Partículas atómicas” tendrá la siguiente interfaz:
Figura 4.5.18 Interfaz: Partículas atómicas
El área mencionada como “Elemento”, mostrará un elemento de la tabla periódica
previamente definido con ciertos datos.
63
El botón “Nuevo” mostrará un nuevo elemento; los elementos como se mencionó
son parte de una plantilla que no cambiará.
Se mostrará en la parte superior derecha un conjunto de campos de texto que le
permitirán al usuario ingresar diversos datos, los cuales tendrán que corresponder
al: número atómico, número másico, protones, neutrones y electrones, del elemento
mostrado.
El botón “Comprobar” indicará si los datos ingresados son correctos, se colorearán
de color rojo los campos incorrectos y seguirán siendo blancos los campos con
respuestas correctas. Un mensaje de correcto será mostrado debajo de estos
campos de texto, en caso de tener todo correcto, o incorrecto en caso contrario.
El botón “Ayuda” contendrá una explicación acerca del llenado de los datos, esta
explicación será un campo de texto que estará en el área “Elemento”.
4.5.2.1.7.4.5.2.1.7.4.5.2.1.7.4.5.2.1.7. Memorama. Modelos Memorama. Modelos Memorama. Modelos Memorama. Modelos atómicoatómicoatómicoatómicossss
La interfaz para la aplicación “Memorama. Modelos atómicos” (figura 4.5.19) se
detalla a continuación.
Figura 4.5.19 Interfaz: Memorama. Modelos atómicos
64
La interfaz se compone por un botón que permite el inicio del juego, un campo de
texto que muestra el tiempo de juego y un tablero de juego.
El tablero de juego es un conjunto de 20 rectángulos, distribuidos como se ve en la
figura 4.5.19.
4.5.2.1.8.4.5.2.1.8.4.5.2.1.8.4.5.2.1.8. Memorama. Tabla Memorama. Tabla Memorama. Tabla Memorama. Tabla periódicaperiódicaperiódicaperiódica
La aplicación “Memorama. Tabla periódica” presentará la siguiente interfaz:
Figura 4.5.20 Interfaz: Memorama. Tabla periódica
La interfaz presentará un botón de inicio de juego, un campo de texto que mostrará
el tiempo de juego y dos tableros, el primero es el área de juego y el segundo es el
que muestra los conjuntos de cartas encontrados.
El tablero de juego se compone de 18 cartas distribuidas como se muestra en la
figura 4.5.20.
4.5.2.1.9.4.5.2.1.9.4.5.2.1.9.4.5.2.1.9. Promoción de Promoción de Promoción de Promoción de diplomado mediante correos electrónicosdiplomado mediante correos electrónicosdiplomado mediante correos electrónicosdiplomado mediante correos electrónicos
La interfaz para esta aplicación se basará en el cartel que es utilizado para
publicitar los diferentes diplomados y que se muestra a continuación.
65
Figura 4.5.21 Interfaz: Promoción de diplomado mediante correos electrónicos
La interfaz tendrá un botón que permitirá el comienzo de envío de correos.
Al finalizar el envío de correos se mostrará información acerca de los envíos
correctos e incorrectos en texto plano.
4.5.2.2.4.5.2.2.4.5.2.2.4.5.2.2. ““““InterfacesInterfacesInterfacesInterfaces”””” SoftwareSoftwareSoftwareSoftware
Será necesario contar con la JVM de java para la visualización de las siguientes
aplicaciones:
• Configuración electrónica de la tabla periódica
Enviar
66
• Calculadora de masa molecular y número de moles
• Crucigrama
• Electronegatividad
• Radio atómico
Para la visualización de las siguientes aplicaciones será necesario Flash Player:
• Partículas atómicas
• Memorama. Modelos atómicos
• Memorama. Tabla Periódica
Será necesario un servidor que soporte PHP y MySQL para la ejecución del script
“Promoción de diplomado mediante correos electrónicos”.
5.
67
CAPÍTULO CAPÍTULO CAPÍTULO CAPÍTULO 5555. DISEÑO. DISEÑO. DISEÑO. DISEÑO
Se adopta y refina la arquitectura del sistema y adapta al ambiente de
implementación específico.
En el modelo del dominio del problema se utilizaron diversas figuras para los
diagramas de clases, se describen de manera breve:
• El círculo indica que se trata de una clase borde, una interfaz.
• Un rectángulo es una clase que divide en tres niveles la información que
contiene, el primer nivel tiene el nombre de la clase, el segundo nivel los
atributos y el último nivel los métodos.
• La línea sólida indica asociación entre clases en donde los tipos de
asociación se puede dar de la siguiente forma:
o 1…* Uno a muchos.
o 0…* Cero a muchos.
o 1…1 Uno a uno.
o *…* Muchos a muchos.
• La línea punteada indica dependencia. [15]
En el modelo de análisis se utilizaron las descritas figuras para los diagramas de
secuencia:
• Línea de vida de un objeto. Es una línea vertical punteada con una imagen
de encabezado.
• Activación. Rectángulo sobre la línea de vida de un objeto que indica cuando
ese objeto está ejecutando alguna operación.
• Monigote. Indica un actor que interactúa con el sistema.
• Mensaje. Línea sólida dirigida desde el objeto que solicita alguna operación
hacia el objeto que la ejecutará.
• Respuesta. Línea segmentada desde el lugar de la respuesta.
68
• Objetos. Imagenes en la parte superior del diagrama que funcionan como
encabezados para sus líneas de vida, se clasifican en tres tipos: borde,
entidad y control. [16]
5.1.5.1.5.1.5.1. Configuración electrónica de la tabla Configuración electrónica de la tabla Configuración electrónica de la tabla Configuración electrónica de la tabla periódicaperiódicaperiódicaperiódica
Modelo del Dominio del problema:
Figura 5.1.1 Diagrama de clases: Configuración electrónica de la tabla periódica
Diccionario de clases:
- Elemento:Elemento:Elemento:Elemento: Es un componente de la tabla periódica, que puede ser seleccionado
por el usuario, el cual muestra información respecto a él.
- Configuración Electrónica:Configuración Electrónica:Configuración Electrónica:Configuración Electrónica: Muestra la configuración electrónica del elemento
seleccionado.
Modelo de análisis:
Clases borde: Tabla Periódica
69
Tabla 5.1.1: Relación entre Casos de uso, Actores y Clases Borde. Configuración electrónica de la tabla periódica
Relación entre Casos de uso, Actores y Clases Borde
Caso de uso Actores Clases Borde
Seleccionar elemento
químico
Alumno Tabla Periódica
Mostrar configuración
electrónica
Mostrar información
Clases Entidad: Configuración Electrónica, Elemento
Tabla 5.1.2: Relación entre Casos de uso y Clases Entidad. Configuración electrónica de la tabla periódica
Relación entre Casos de uso y Clases Entidad
Caso de uso Clases Entidad
Seleccionar elemento
químico
Mostrar configuración
electrónica
Configuración electrónica
Mostrar información Elemento
Clases Control: busca Elemento
Tabla 5.1.3: Relación entre Casos de uso y Clases Control. Configuración electrónica de la tabla periódica
Relación entre Casos de uso y Clases Control
Caso de uso Clases control
Seleccionar elemento
químico
busca Elemento
Mostrar configuración
electrónica
busca Elemento
Mostrar información busca Elemento
70
Clases según Casos de uso:
Tabla 5.1.4: Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad. Configuración electrónica de la tabla periódica
Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad
Caso de uso Actores Clases
Seleccionar elemento
químico
Alumno Tabla periódica, busca Elemento
Mostrar configuración
electrónica
Alumno Configuración electrónica, busca Elemento
Mostrar información Alumno Elemento, busca Elemento
Diagrama de secuencia:
Figura 5.1.2 Diagrama de secuencia. Configuración electrónica de la tabla periódica
71
5.2.5.2.5.2.5.2. Calculadora de masa molecular y número de molesCalculadora de masa molecular y número de molesCalculadora de masa molecular y número de molesCalculadora de masa molecular y número de moles
Modelo del Dominio del problema:
Clases:
Figura 5.2.1 Diagrama de clases. Calculadora de masa molecular y número de moles
Diccionario de clases:
- ElementoElementoElementoElemento: Es un componente de la calculadora, que puede ser seleccionado
por el usuario.
- Formula:Formula:Formula:Formula: Es un conjunto de elementos seleccionados, a la que se le pretende
hacer el cálculo.
- MasaMolecular:MasaMolecular:MasaMolecular:MasaMolecular: Realiza el cálculo de la masa molecular de la fórmula Química
ingresada.
- Moles:Moles:Moles:Moles: Realiza el cálculo del número de moles de acuerdo a la fórmula Química
ingresada y al número de gramos.
72
Modelo de análisis:
Clases borde: Calculadora
Tabla 5.2.1: Relación entre Casos de uso, Actores y Clases Borde. Calculadora de masa molecular y número de moles
Relación entre Casos de uso, Actores y Clases Borde
Caso de uso Actores Clases Borde
Seleccionar elemento
químico
Alumno Calculadora
Calcular masa
molecular
Alumno Calculadora
Calcular número de
moles
Alumno Calculadora
Crear fórmula
Validar gramos
Clases Entidad: Elemento, Masa Molecular, Moles
Tabla 5.2.2: Relación entre Casos de uso y Clases Entidad. Calculadora de masa molecular y número de moles
Relación entre Casos de uso y Clases Entidad
Caso de uso Clases Entidad
Seleccionar elemento
químico
Calcular masa
molecular
Masa Molecular
Calcular número de
moles
Moles
Crear fórmula Elemento
Validar gramos
73
Clases Control: Formula, Calcula MasaMolecular, Calcula Moles
Tabla 5.2.3: Relación entre Casos de uso y Clases Control. Calculadora de masa molecular y número de moles
Relación entre Casos de uso y Clases Control
Caso de uso Clases control
Seleccionar elemento
químico
Formula
Calcular masa
molecular
Calcula MasaMolecular
Calcular número de
moles
Calcula Moles
Crear fórmula Formula
Validar gramos Calcula Moles
Clases según Casos de uso:
Tabla 5.2.4: Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad. Calculadora de masa molecular y número de moles
Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad
Caso de uso Actores Clases
Seleccionar elemento
químico
Alumno Calculadora, Formula
Calcular masa
molecular
Alumno MasaMolecular, Calculadora, Calcula
MasaMolecular
Calcular número de
moles
Alumno Moles, Calculadora, Calcula Moles
Crear fórmula Formula
Validar gramos Calcula Moles
74
Diagramas de secuencia:
Figura 5.2.2 Diagrama de secuencia 1: Calculadora de masa molecular y número de moles
Figura 5.2.3 Diagrama de secuencia 2: Calculadora de masa molecular y número de moles
75
Figura 5.2.4 Diagrama de secuencia 3: Calculadora de masa molecular y número de moles
5.3.5.3.5.3.5.3. CCCCrucigramarucigramarucigramarucigrama
Modelo del Dominio del problema:
Clases:
76
Figura 5.3.1 Diagrama de clases: Crucigrama
Diccionario de clases:
- Pregunta:Pregunta:Pregunta:Pregunta: Muestra las preguntas que serán resueltas dentro del crucigrama
- Respuestas:Respuestas:Respuestas:Respuestas: Contiene las respuestas que deben coincidir a las preguntas y
muestra las respuestas.
- Evaluación:Evaluación:Evaluación:Evaluación: Verifica que la pregunta corresponda a su respuesta.
Modelo de análisis:
Clases borde: Crucigrama.
Tabla 5.3.1: Relación entre Casos de uso, Actores y Clases Borde. Crucigrama
Relación entre Casos de uso, Actores y Clases Borde
Caso de uso Actores Clases Borde
Iniciar juego Alumno Crucigrama
Mostrar pregunta Alumno Crucigrama
Evaluar respuestas
Mostrar respuestas Alumno Crucigrama
77
Clases Entidad: Pregunta, Respuestas.
Tabla 5.3.2: Relación entre Casos de uso y Clases Entidad: Crucigrama
Relación entre Casos de uso y Clases Entidad
Caso de uso Clases Entidad
Iniciar juego
Mostrar pregunta Pregunta
Evaluar respuestas
Mostrar respuestas Respuestas
Clases Control: busca Pregunta, Evaluación.
Tabla 5.3.3: Relación entre Casos de uso y Clases Control. Crucigrama
Relación entre Casos de uso y Clases Control
Caso de uso Clases control
Iniciar juego busca Pregunta
Mostrar pregunta busca Pregunta
Evaluar respuestas Evaluación
Mostrar respuestas Evaluación
Clases según Casos de uso:
Tabla 5.3.4: Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad. Crucigrama
Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad
Caso de uso Actores Clases
Iniciar juego Alumno Crucigrama, busca Pregunta
Mostrar pregunta Alumno Crucigrama, Pregunta, busca Pregunta
Evaluar respuestas Evaluación
Mostrar respuestas Alumno Crucigrama, Respuestas, Evaluación
78
Diagramas de secuencia:
Figura 5.3.2 Diagrama de secuencia 1: Crucigrama
Figura 5.3.3 Diagrama de secuencia 2: Crucigrama
79
Figura 5.3.4 Diagrama de secuencia 3: Crucigrama
Figura 5.3.5 Diagrama de secuencia 4: Crucigrama
80
5.4.5.4.5.4.5.4. ElectronegatividadElectronegatividadElectronegatividadElectronegatividad
Modelo del Dominio del problema:
Clases:
Figura 5.4.1 Diagrama de clases: Electronegatividad
Diccionario de clases:
- Elemento:Elemento:Elemento:Elemento: Es un componente de la tabla periódica, que puede ser seleccionado
por el alumnos, al cual mostrará su valor de electronegatividad.
- Electronegatividad:Electronegatividad:Electronegatividad:Electronegatividad: Muestra la electronegatividad del grupo y período del
elemento seleccionado gráficamente.
Modelo de análisis:
Clases borde: Tabla Periódica
Tabla 5.4.1: Relación entre Casos de uso, Actores y Clases Borde. Electronegatividad
Relación entre Casos de uso, Actores y Clases Borde
Caso de uso Actores Clases Borde
Seleccionar elemento
químico
Alumno Tabla Periódica
Mostrar
81
electronegatividad
Graficar
electronegatividad
Clases Entidad: Elemento, Electronegatividad
Tabla 5.4.2: Relación entre Casos de uso y Clases Entidad. Electronegatividad
Relación entre Casos de uso y Clases Entidad
Caso de uso Clases Entidad
Seleccionar elemento
químico
Mostrar
electronegatividad
Elemento
Graficar
electronegatividad
Electronegatividad
Clases Control: busca Elemento
Tabla 5.4.3: Relación entre Casos de uso y Clases Control. Electronegatividad
Relación entre Casos de uso y Clases Control
Caso de uso Clases control
Seleccionar elemento
químico
busca Elemento
Mostrar
electronegatividad
busca Elemento
Graficar
electronegatividad
busca Elemento
82
Clases según Casos de uso:
Tabla 5.4.4: Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad. Electronegatividad
Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad
Caso de uso Actores Clases
Seleccionar elemento
químico
Alumno Tabla Periódica, busca Elemento
Mostrar configuración
electrónica
Alumno Elemento, busca Elemento
Mostrar información Alumno Electronegatividad, busca Elemento
Diagramas de secuencia:
Figura 5.4.2 Diagrama de secuencia: Electronegatividad
83
5.5.5.5.5.5.5.5. Radio Radio Radio Radio aaaatómicotómicotómicotómico
Modelo del Dominio del problema:
Clases:
Figura 5.5.1 Diagrama de clases: Radio atómico
Diccionario de clases:
- Elemento:Elemento:Elemento:Elemento: Es un componente de la tabla periódica, que puede ser seleccionado
por el usuario, el cual mostrará su valor de radio atómico.
- Radio Radio Radio Radio aaaatómicotómicotómicotómico:::: Muestra gráficamente el radio atómico del grupo y período del
elemento seleccionado.
Modelo de análisis:
Clases borde: Tabla Periódica
Tabla 5.5.1: Relación entre Casos de uso, Actores y Clases Borde. Radio atómico
Relación entre Casos de uso, Actores y Clases Borde
Caso de uso Actores Clases Borde
Seleccionar elemento
químico
Alumno Tabla Periódica
Mostrar Radio atómico
Graficar Radio atómico
84
Clases Entidad: Elemento, Radio atómico.
Tabla 5.5.2: Relación entre Casos de uso y Clases Entidad. Radio Atómico
Relación entre Casos de uso y Clases Entidad
Caso de uso Clases Entidad
Seleccionar elemento
químico
Mostrar Radio atómico Elemento
Graficar Radio atómico Radio atómico
Clases Control: busca Elemento
Tabla 5.5.3: Relación entre Casos de uso y Clases Control. Radio atómico
Relación entre Casos de uso y Clases Control
Caso de uso Clases control
Seleccionar elemento
químico
busca Elemento
Mostrar Radio atómico busca Elemento
Graficar Radio atómico busca Elemento
Clases según Casos de uso:
Tabla 5.5.4: Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad. Radio atómico
Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad
Caso de uso Actores Clases
Seleccionar elemento
químico
Alumno Tabla Periódica, busca Elemento
Mostrar configuración
electrónica
Alumno Elemento, busca Elemento
Mostrar información Alumno Radio atómico, busca Elemento
85
Diagramas de secuencia:
Figura 5.5.2 Diagrama de secuencia. Radio atómico
5.6.5.6.5.6.5.6. Partículas atómicasPartículas atómicasPartículas atómicasPartículas atómicas
Modelo del Dominio del problema:
Clases:
86
Figura 5.6.1 Diagrama de clases. Partículas atómicas
Diccionario de clases:
- Elemento:Elemento:Elemento:Elemento: Muestra un elemento con su número atómico, número másico y
carga eléctrica.
- Verificaelemento:Verificaelemento:Verificaelemento:Verificaelemento: Muestra el resultado de la validación de los datos ingresados
por el usuario, indicando en donde se equivoco y un mensaje de correcto en
caso contrario.
- Ayuda:Ayuda:Ayuda:Ayuda: Muestra una explicación de cómo se debe hacer el correcto llenado de
los datos solicitados.
Modelo de análisis:
Clases borde: GUI
Tabla 5.6.1: Relación entre Casos de uso, Actores y Clases Borde. Partículas atómicas
Relación entre Casos de uso, Actores y Clases Borde
Caso de uso Actores Clases Borde
Nuevo elemento Alumno GUI
Verificar respuesta Alumno GUI
Mostrar ayuda Alumno GUI
Mostrar respuesta Alumno GUI
87
Clases Entidad: Elemento, Ayuda.
Tabla 5.6.2: Relación entre Casos de uso y Clases Entidad. Partículas atómicas
Relación entre Casos de uso y Clases Entidad
Caso de uso Clases Entidad
Nuevo elemento Elemento
Verificar respuesta
Mostrar ayuda Ayuda
Mostrar respuesta
Clases Control: Verificaelemento, Buscar
Tabla 5.6.3: Relación entre Casos de uso y Clases Control. Partículas atómicas
Relación entre Casos de uso y Clases Control
Caso de uso Clases control
Nuevo elemento Buscar
Verificar respuesta Verificaelemento
Mostrar ayuda Buscar
Mostrar respuesta Verificaelemento
Clases según Casos de uso:
Tabla 5.6.4: Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad. Partículas atómicas
Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad
Caso de uso Actores Clases
Nuevo elemento Alumno GUI, Elemento, Buscar
Verificar respuesta Alumno GUI, Verificaelemento
Mostrar ayuda Alumno GUI, Ayuda, Buscar
Mostrar respuesta Alumno GUI, Verificaelemento
88
Diagramas de secuencia:
Figura 5.6.2 Diagrama de secuencia 1: Partículas atómicas
Figura 5.6.3 Diagrama de secuencia 2: Partículas atómicas
89
Figura 5.6.4 Diagrama de secuencia 3: Partículas atómicas
5.7.5.7.5.7.5.7. MemoramaMemoramaMemoramaMemorama. Modelos . Modelos . Modelos . Modelos atómicoatómicoatómicoatómicossss
Modelo del Dominio del problema:
Clases:
Figura 5.7.1 Diagrama de clases: Memorama. Modelos atómicos
90
Diccionario de clases:
- Tiempo:Tiempo:Tiempo:Tiempo: Lleva el control de tiempo establecido a 10 minutos, alertando cuándo
se termina.
- Cartas:Cartas:Cartas:Cartas: Muestra la carta seleccionada y mantiene un orden aleatorio de cartas
cada que se inicia el juego.
- Pares:Pares:Pares:Pares: Valida que el par de cartas mostrados sea correcto y deja las cartas
visibles en caso de serlo, de lo contrario las oculta.
Modelo de análisis:
Clases borde: Memorama
Tabla 5.7.1: Relación entre Casos de uso, Actores y Clases Borde. Memorama. Modelos atómicos
Relación entre Casos de uso, Actores y Clases Borde
Caso de uso Actores Clases Borde
Iniciar juego Alumno Memorama
Seleccionar carta Alumno Memorama
Reiniciar tiempo
Ordenar
aleatoriamente
Mostrar carta
Validar pares
Clases Entidad: Cartas, Tiempo
Tabla 5.7.2: Relación entre Casos de uso y Clases Entidad. Memorama. Modelos atómicos
Relación entre Casos de uso y Clases Entidad
Caso de uso Clases Entidad
Iniciar juego
Seleccionar carta
Reiniciar tiempo Tiempo
Ordenar
aleatoriamente
91
Mostrar carta Cartas
Validar pares
Clases Control: Pares, Iniciar
Tabla 5.7.3: Relación entre Casos de uso y Clases Control. Memorama. Modelos atómicos
Relación entre Casos de uso y Clases Control
Caso de uso Clases control
Iniciar juego Iniciar
Seleccionar carta Pares
Reiniciar tiempo Iniciar
Ordenar
aleatoriamente
Iniciar
Mostrar carta Pares
Validar pares Pares
Clases según Casos de uso:
Tabla 5.7.4: Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad. Memorama. Modelos atómicos
Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad
Caso de uso Actores Clases
Iniciar juego Alumno Memorama, Iniciar
Seleccionar carta Alumno Memorama, Pares
Reiniciar tiempo Tiempo, Iniciar
Ordenar
aleatoriamente
Iniciar
Mostrar carta Cartas, Pares
Validar pares Pares
92
Diagramas de secuencia:
Figura 5.7.2 Diagrama de secuencia 1: Memorama. Modelos atómicos
Figura 5.7.3 Diagrama de secuencia 2: Memorama. Modelos atómicos
93
5.8.5.8.5.8.5.8. Memorama. Tabla periódicaMemorama. Tabla periódicaMemorama. Tabla periódicaMemorama. Tabla periódica
Modelo del Dominio del problema:
Clases:
Figura 5.8.1 Diagrama de clases: Memorama. Tabla periódica
Diccionario de clases:
- Tiempo:Tiempo:Tiempo:Tiempo: Lleva el control de tiempo establecido a 10 minutos, alertando cuando
se termina.
- Cartas:Cartas:Cartas:Cartas: Muestra la carta seleccionada y mantiene un orden aleatorio de cartas
cada que se inicia el juego.
- Conjunto:Conjunto:Conjunto:Conjunto: Valida que el conjunto de cartas mostrados sea correcto y deja las
cartas visibles en caso de serlo, de lo contrario las oculta.
Modelo de análisis:
Clases borde: Memorama
Tabla 5.8.1: Relación entre Casos de uso, Actores y Clases Borde. Memorama. Tabla periódica
Relación entre Casos de uso, Actores y Clases Borde
Caso de uso Actores Clases Borde
Iniciar juego Alumno Memorama
Seleccionar carta Alumno Memorama
94
Reiniciar tiempo
Ordenar
aleatoriamente
Mostrar carta
Validar conjunto de
cartas
Clases Entidad: Cartas, Tiempo.
Tabla 5.8.2: Relación entre Casos de uso y Clases Entidad. Memorama. Tabla periódica
Relación entre Casos de uso y Clases Entidad
Caso de uso Clases Entidad
Iniciar juego
Seleccionar carta
Reiniciar tiempo Tiempo
Ordenar
aleatoriamente
Mostrar carta Cartas
Validar conjunto de
cartas
Clases Control: Conjunto, Iniciar
Tabla 5.8.3: Relación entre Casos de uso y Clases Control. Memorama. Tabla periódica
Relación entre Casos de uso y Clases Control
Caso de uso Clases control
Iniciar juego Iniciar
Seleccionar carta Conjunto
Reiniciar tiempo Iniciar
Ordenar
aleatoriamente
Iniciar
Mostrar carta Conjunto
95
Validar conjunto de
cartas
Conjunto
Clases según Casos de uso:
Tabla 5.8.4: Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad. Memorama. Tabla periódica
Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad
Caso de uso Actores Clases
Iniciar juego Alumno Memorama, Iniciar
Seleccionar carta Alumno Memorama, Conjunto
Reiniciar tiempo Tiempo, Iniciar
Ordenar
aleatoriamente
Iniciar
Mostrar carta Cartas, Conjunto
Validar conjunto de
cartas
Conjunto
Diagramas de secuencia:
Figura 5.8.2 Diagrama de secuencia 1: Memorama. Tabla periódica
96
Figura 5.8.3 Diagrama de secuencia 2: Memorama. Tabla periódica
5.9.5.9.5.9.5.9. Promoción de diplomado mediante correos electrónicosPromoción de diplomado mediante correos electrónicosPromoción de diplomado mediante correos electrónicosPromoción de diplomado mediante correos electrónicos
Modelo del Dominio del problema:
Clases:
Figura 5.9.1 Diagrama de clases: Promoción de diplomado mediante correos electrónicos
97
Diccionario de clases:
- EnviarCorreos:EnviarCorreos:EnviarCorreos:EnviarCorreos: Se encarga del envío de correos, envía correos de manera
individual.
- ValidarCorreos: ValidarCorreos: ValidarCorreos: ValidarCorreos: Verifica que los correos estén en un formato adecuado y sean
enviados.
Modelo de análisis:
Clases borde: GUI
Tabla 5.9.1: Relación entre Casos de uso, Actores y Clases Borde. Promoción de diplomado mediante correos electrónicos
Relación entre Casos de uso, Actores y Clases Borde
Caso de uso Actores Clases Borde
Enviar correo Becario GUI
Validar archivo de
entrada
Clases Entidad: Enviar Correos
Tabla 5.9.2: Relación entre Casos de uso y Clases Entidad. Promoción de diplomado mediante correos electrónicos
Relación entre Casos de uso y Clases Entidad
Caso de uso Clases Entidad
Enviar correo Enviar Correos
Validar archivo de
entrada
Clases Control: Validar correos
Tabla 5.9.3: Relación entre Casos de uso y Clases Control. Promoción de diplomado mediante correos electrónicos
Relación entre Casos de uso y Clases Control
Caso de uso Clases control
98
Enviar correo Validar correos
Validar archivo de
entrada
Validar correos
Clases según Casos de uso:
Tabla 5.9.4: Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad. Promoción de diplomado mediante correos electrónicos
Relación entre Casos de uso, Actores y Clases Borde, Control y Entidad
Caso de uso Actores Clases
Enviar correo Becario GUI, Validar correos
Validar archivo de
entrada
Validar correos
Diagramas de secuencia:
Figura 5.9.2 Diagrama de secuencia: Promoción de diplomado mediante correos electrónicos
6. C
99
CAPÍTULO CAPÍTULO CAPÍTULO CAPÍTULO 6666. IMPLEMENTACIÓN. IMPLEMENTACIÓN. IMPLEMENTACIÓN. IMPLEMENTACIÓN
Se detalla la implementación de cada una de las aplicaciones mencionadas en los
requisitos.
Para la implementación de cada uno de los applets se tomaron en cuenta aspectos
de usabilidad descritos por la ISO 20282:
• Se identificó la meta principal de cada aplicación.
• Las características de usuario, previamente definidas en los requisitos,
fueron tomadas en cuenta buscando una operación de las aplicaciones que
fuera natural para los usuarios.
• Se revisó que cada una de las aplicaciones, una vez terminadas, cumplieran
con la facilidad de operación de acuerdo a las características de los
usuarios. [17]
Los códigos de las aplicaciones que se mencionarán en el presente capítulo se
encuentran en el anexo de la presente tesis.
6.1.6.1.6.1.6.1. Configuración electrónica de la tabla Configuración electrónica de la tabla Configuración electrónica de la tabla Configuración electrónica de la tabla periódicaperiódicaperiódicaperiódica
El primer applet mencionado fue desarrollado en Java, se ve en la figura 6.1.1 la
interfaz gráfica de dicho applet ejecutado de manera local mediante Appletviewer5.
5 Aplicación que permite ver en funcionamiento applets, sin necesidad de la utilización de un navegador
Web
100
Figura 6.1.1 Implementación de applet: Configuración electrónica de la tabla periódica
6.2.6.2.6.2.6.2. Calculadora de masa molecular y número de molesCalculadora de masa molecular y número de molesCalculadora de masa molecular y número de molesCalculadora de masa molecular y número de moles
El applet calculadora de masa molecular y número de moles fue implementado
también en Java, se muestra la interfaz gráfica del applet en la figura 6.2.1
101
Figura 6.2.1 Implementación de applet: Calculadora de masa molecular y número de moles
6.3.6.3.6.3.6.3. CrucigramaCrucigramaCrucigramaCrucigrama
Applet desarrollado en Java y ejecutado de manera local, mostrándose la interfaz en la figura 6.3.1.
102
Figura 6.3.1 Implementación de applet: Crucigrama
6.4.6.4.6.4.6.4. ElectronegatividadElectronegatividadElectronegatividadElectronegatividad
La interfaz implementada del applet Electronegatividad se muestra en la figura
6.4.1, el applet fue desarrollado en Java.
103
Figura 6.4.1 Implementación de applet: Electronegatividad
6.5.6.5.6.5.6.5. Radio Radio Radio Radio aaaatómicotómicotómicotómico
El applet radio atómico desarrollado en Java se muestra en la figura 6.5.1
Figura 6.5.1 Implementación de applet: Radio atómico
104
6.6.6.6.6.6.6.6. Partículas atómicasPartículas atómicasPartículas atómicasPartículas atómicas
Applet partículas atómicas desarrollado con Adobe Flash se muestra en la figura
6.6.1, se muestra la ejecución local.
Figura 6.6.1 Implementación de applet: Partículas atómicas
6.7.6.7.6.7.6.7. Memorama. Modelos Memorama. Modelos Memorama. Modelos Memorama. Modelos atómicoatómicoatómicoatómicossss
El applet Memorama. Modelos atómicos se desarrollo en Adobe Flash, se muestra
la ejecución local de la aplicación en la figura 6.7.1.
Figura 6.7.1 Implementación de applet: Memorama. Modelos atómicos
105
6.8.6.8.6.8.6.8. Memorama. Tabla pMemorama. Tabla pMemorama. Tabla pMemorama. Tabla periódicaeriódicaeriódicaeriódica
Se muestra en la figura 6.8.1 la implementación del applet Memorama. Tabla
periódica, el desarrollo del applet fue en Adobe Flash.
Figura 6.8.1 Implementación de applet: Memorama. Tabla periódica
6.9.6.9.6.9.6.9. Promoción de diplomado mediante correos electrónicosPromoción de diplomado mediante correos electrónicosPromoción de diplomado mediante correos electrónicosPromoción de diplomado mediante correos electrónicos
La figura 6.9.1 muestra el script que permite el envío de correos electrónicos, la
interfaz HTML mostrada en la imagen es la que es enviada a los diversos correos
electrónicos.
106
Figura 6.9.1 Implementación de script: Promoción de diplomado mediante correos electrónicos
7.
107
CAPÍTULO CAPÍTULO CAPÍTULO CAPÍTULO 7777. PRUEBAS. PRUEBAS. PRUEBAS. PRUEBAS
Cada una de las aplicaciones será probada con datos de entrada y se espera que la
salida sea la deseada, se utilizarán pruebas de caja negra en su mayor parte. Estas
pruebas observan el comportamiento indicado de cada aplicación desde una
perspectiva de usuario final, es decir, se pretende que con ciertas acciones se dé
cierto resultado y no importa cómo se hace esto de manera interna.
Pruebas de caja blanca, o de comportamiento interno también serán realizadas
pero en menor medida, se hará así porque las aplicaciones desarrolladas no
demandan este tipo de pruebas, al ser estas aplicaciones simples de
funcionamiento.
Se utilizarán los casos de uso definidos en la etapa de requisitos para realizar las
pruebas.
El tipo de prueba que se realizará es de unidad, es decir, se pretende probar que los
fragmentos individuales (unidades) de cada aplicación cumplen las especificaciones
detalladas en los requisitos y tienen el comportamiento esperado.
7.1.7.1.7.1.7.1. Configuración electrónica de la tabla periódicaConfiguración electrónica de la tabla periódicaConfiguración electrónica de la tabla periódicaConfiguración electrónica de la tabla periódica
Tabla 7.1.1: Prueba a caso de uso 1. Configuración electrónica de la tabla periódica
Prueba Tipo Subtipo Caso de uso
A1-P1 Unitaria Caja negra CU-A1-01
Descripción El alumno selecciona un elemento de la tabla periódica.
Resultado esperado El elemento se debe seleccionar y mostrar su configuración
electrónica e información acerca del mismo.
Resultado obtenido El elemento se seleccionó al hacer clic sobre él, se mostró la
información acerca del elemento y su configuración electrónica.
Acciones correctivas Ninguna.
Resultado después de
corregir
No aplica.
108
7.2.7.2.7.2.7.2. Calculadora de masa molecular y número de molesCalculadora de masa molecular y número de molesCalculadora de masa molecular y número de molesCalculadora de masa molecular y número de moles
Tabla 7.2.1: Prueba a caso de uso 1. Calculadora de masa molecular y número de moles
Prueba Tipo Subtipo Caso de uso
A2-P1 Unitaria Caja negra CU-A2-01
Descripción El alumno selecciona un elemento de la tabla periódica.
Resultado esperado El elemento se debe seleccionar y mostrar un cuadro de diálogo, los
datos ingresados se muestran creando una fórmula.
Resultado obtenido El elemento se seleccionó al hacer clic sobre él, mostró el cuadro
de diálogo emergente para ingresar el número de átomos
requeridos, los datos ingresados se muestran en un campo de
texto.
Acciones correctivas Ninguna.
Resultado después de
corregir
No aplica.
Tabla 7.2.2: Prueba 2 a caso de uso 1. Calculadora de masa molecular y número de moles
Prueba Tipo Subtipo Caso de uso
A2-P2 Unitaria Caja blanca CU-A2-01
Descripción El alumno selecciona un elemento de la tabla periódica, no ingresa un
valor correcto en número de átomos.
Resultado esperado El elemento se debe seleccionar y mostrar un cuadro de diálogo, al
no validarse el valor ingresado en el cuadro de diálogo debe
marcar un átomo de ese elemento.
Resultado obtenido El elemento se seleccionó al hacer clic sobre él, mostró el cuadro
de diálogo emergente para ingresar el número de átomos
requeridos, envió mensaje de formato inválido y asignó un átomo
de ese elemento.
Acciones correctivas Ninguna.
Resultado después de
corregir
No aplica.
109
Tabla 7.2.3: Prueba a caso de uso 2. Calculadora de masa molecular y número de moles
Prueba Tipo Subtipo Caso de uso
A2-P3 Unitaria Caja negra CU-A2-02
Descripción El alumno podrá ver el cálculo de la masa molecular.
Resultado esperado Se debe calcular la masa molecular y ser mostrada al usuario.
Resultado obtenido El cálculo correcto de la masa molecular es mostrado al usuario.
Acciones correctivas Ninguna
Resultado después de
corregir
No aplica.
Tabla 7.2.4: Prueba a caso de uso 3. Calculadora de masa molecular y número de moles
Prueba Tipo Subtipo Caso de uso
A2-P4 Unitaria Caja negra CU-A2-03
Descripción El alumno podrá observar el cálculo del número de moles.
Resultado esperado Se debe calcular el número de moles y mostrarse al usuario.
Resultado obtenido El cálculo correcto del número de moles de acuerdo a los datos
proporcionados es mostrado.
Acciones correctivas Ninguna
Resultado después de
corregir
No aplica.
Tabla 7.2.5: Prueba a caso de uso 4. Calculadora de masa molecular y número de moles
Prueba Tipo Subtipo Caso de uso
A2-P5 Unitaria Caja blanca CU-A2-04
Descripción Se alerta al usuario que el número de gramos no fue ingresado o está en
un formato inválido.
Resultado esperado Validación del número de gramos y mensaje de advertencia en caso
incorrecto.
Resultado obtenido Se envía un mensaje de alerta indicando que el número de gramos
es incorrecto cuando no se ingresa un número.
Acciones correctivas Ninguna
Resultado después de No aplica.
110
corregir
7.3.7.3.7.3.7.3. CrucigramaCrucigramaCrucigramaCrucigrama
Tabla 7.3.1: Prueba a caso de uso 1. Crucigrama
Prueba Tipo Subtipo Caso de uso
A3-P1 Unitaria Caja negra CU-A3-01
Descripción El alumno podrá iniciar el juego.
Resultado esperado La cuadrícula del área de juego queda limpia, y la primera pregunta
es mostrada.
Resultado obtenido El área de juego se limpió y la primera pregunta se muestra.
Acciones correctivas Ninguna.
Resultado después de
corregir
No aplica.
Tabla 7.3.2: Prueba a caso de uso 2. Crucigrama
Prueba Tipo Subtipo Caso de uso
A3-P2 Unitaria Caja negra CU-A3-02
Descripción El alumno podrá ver una nueva pregunta.
Resultado esperado Se debe mostrar una pregunta, la siguiente o anterior según se
elija.
Resultado obtenido Una pregunta diferente a la actual es mostrada.
Acciones correctivas Ninguna.
Resultado después de
corregir
No aplica.
Tabla 7.3.3: Prueba a caso de uso 3. Crucigrama
Prueba Tipo Subtipo Caso de uso
A3-P3 Unitaria Caja negra CU-A3-03
Descripción El alumno podrá ver el resultado de sus respuestas.
Resultado esperado Se deben mostrar las respuestas correctas e incorrectas dentro del
111
crucigrama.
Resultado obtenido Las respuestas correctas e incorrectas se muestran, mostrando en
color rojo las respuestas incorrectas y verde las correctas.
Acciones correctivas Ninguna.
Resultado después de
corregir
No aplica.
Tabla 7.3.4: Prueba a caso de uso 4. Crucigrama
Prueba Tipo Subtipo Caso de uso
A3-P4 Unitaria Caja negra CU-A3-04
Descripción El alumno podrá visualizar las respuestas a cada una de las preguntas del
crucigrama.
Resultado esperado Se deben mostrar las respuestas.
Resultado obtenido Las respuestas son mostradas al usuario.
Acciones correctivas Ninguna.
Resultado después de
corregir
No aplica.
7.4.7.4.7.4.7.4. ElectronegatividadElectronegatividadElectronegatividadElectronegatividad
Tabla 7.4.1: Prueba a caso de uso 1. Electronegatividad
Prueba Tipo Subtipo Caso de uso
A4-P1 Unitaria Caja negra CU-A4-01
Descripción El alumno podrá seleccionar un elemento químico de la tabla periódica
mostrada.
Resultado esperado El elemento se debe seleccionar.
Se visualizará el valor numérico de la electronegatividad del
elemento seleccionado.
Se visualizará gráficamente la electronegatividad del grupo y
período del elemento seleccionado.
Resultado obtenido El elemento se selecciona.
El valor numérico de la electronegatividad del elemento
112
seleccionado se visualiza.
Se visualiza gráficamente la electronegatividad del grupo y período
del elemento seleccionado.
Acciones correctivas Ninguna.
Resultado después de
corregir
No aplica.
7.5.7.5.7.5.7.5. Radio Radio Radio Radio aaaatómicotómicotómicotómico
Tabla 7.5.1: Prueba a caso de uso 1. Radio atómico
Prueba Tipo Subtipo Caso de uso
A5-P1 Unitaria Caja negra CU-A5-01
Descripción El alumno podrá seleccionar un elemento químico de la tabla periódica
mostrada.
Resultado esperado El elemento se debe seleccionar.
Se visualizará el valor numérico del radio atómico del elemento
seleccionado.
Se visualizará gráficamente el radio atómico del grupo y período del
elemento seleccionado.
Resultado obtenido El elemento se seleccionó.
El valor numérico del radio atómico del elemento seleccionado se
visualiza.
Se visualiza gráficamente el radio atómico del grupo y período del
elemento seleccionado.
Acciones correctivas Ninguna.
Resultado después de
corregir
No aplica.
7.6.7.6.7.6.7.6. Partículas atómicasPartículas atómicasPartículas atómicasPartículas atómicas
Tabla 7.6.1: Prueba a caso de uso 1. Partículas atómicas
Prueba Tipo Subtipo Caso de uso
A6-P1 Unitaria Caja negra CU-A6-01
113
Descripción El alumno podrá visualizar un nuevo elemento.
Resultado esperado Un nuevo elemento deberá ser mostrado con su información
correspondiente (A6-R1).
Resultado obtenido Un nuevo elemento es mostrado.
Acciones correctivas Ninguna.
Resultado después de
corregir
No aplica.
Tabla 7.6.2: Prueba a caso de uso 2. Partículas atómicas
Prueba Tipo Subtipo Caso de uso
A6-P2 Unitaria Caja negra CU-A6-02
Descripción El alumno podrá verificar sus respuestas.
Resultado esperado Las respuestas del usuario son verificadas y se muestran aciertos y
errores.
Resultado obtenido Las respuestas incorrectas son resaltadas de color rojo, en caso
contrario un mensaje de correcto es mostrado.
Acciones correctivas Ninguna.
Resultado después de
corregir
No aplica.
Tabla 7.6.3: Prueba a caso de uso 4. Partículas atómicas
Prueba Tipo Subtipo Caso de uso
A6-P3 Unitaria Caja blanca CU-A6-04
Descripción Se mostrarán las respuestas correctas después de dos intentos erróneos
por parte del usuario.
Resultado esperado Las respuestas correctas serán mostradas después de dos intentos
por parte del usuario.
Resultado obtenido Las respuestas correctas son mostradas después de dos intentos
por parte del usuario.
Acciones correctivas Ninguna.
Resultado después de
corregir
No aplica.
114
Tabla 7.6.4: Prueba a caso de uso 3. Partículas atómicas
Prueba Tipo Subtipo Caso de uso
A6-P4 Unitaria Caja negra CU-A6-03
Descripción El alumno podrá visualizar una explicación acerca del correcto llenado de
los datos solicitados.
Resultado esperado Se mostrará la ayuda.
Resultado obtenido La ayuda se muestra.
Acciones correctivas Ninguna.
Resultado después de
corregir
No aplica.
7.7.7.7.7.7.7.7. Memorama. Modelos Memorama. Modelos Memorama. Modelos Memorama. Modelos atómicoatómicoatómicoatómicossss
Tabla 7.7.1: Prueba a caso de uso 1. Memorama. Modelos atómicos
Prueba Tipo Subtipo Caso de uso
A7-P1 Unitaria Caja negra CU-A7-01
Descripción El alumno verá que las cartas mostradas se ocultan y el tiempo se reinicia.
Resultado esperado Las cartas que estén visibles se ocultarán, las cartas se ordenan de
manera aleatoria y el tiempo se reinicia.
Resultado obtenido Las cartas visibles se ocultan.
El tiempo se reinició a 0:00.
Las cartas se ordenan de manera aleatoria en el tablero.
Acciones correctivas Ninguna.
Resultado después de
corregir
No aplica.
Tabla 7.7.2: Prueba a caso de uso 2. Memorama. Modelos atómicos
Prueba Tipo Subtipo Caso de uso
A7-P2 Unitaria Caja negra CU-A7-02
Descripción El alumno puede ver la carta seleccionada.
Resultado esperado La carta seleccionada se mostrará.
Resultado obtenido La carta seleccionada se muestra.
115
Acciones correctivas Ninguna.
Resultado después de
corregir
No aplica.
Tabla 7.7.3: Prueba a caso de uso 3. Memorama. Modelos atómicos
Prueba Tipo Subtipo Caso de uso
A7-P3 Unitaria Caja negra CU-A7-03
Descripción Se valida que el par de cartas mostrado sea correcto.
Resultado esperado El par de cartas validadas quedarán visibles o se volverán a ocultar
en caso de no cumplir el orden de pares (A7-R4).
Resultado obtenido Las cartas quedan visibles cuando se hace un par correcto y se
ocultan en caso contrario.
Acciones correctivas Ninguna.
Resultado después de
corregir
No aplica.
7.8.7.8.7.8.7.8. Memorama. Tabla periódicaMemorama. Tabla periódicaMemorama. Tabla periódicaMemorama. Tabla periódica
Tabla 7.8.1: Prueba a caso de uso 1. Memorama. Tabla periódica
Prueba Tipo Subtipo Caso de uso
A8-P1 Unitaria Caja negra CU-A8-01
Descripción El alumno verá que las cartas mostradas se ocultan en los dos tableros y
el tiempo se reinicia.
Resultado esperado Las cartas que estén visibles se ocultarán en los dos tableros.
El tiempo se reiniciará a 0:00.
Las cartas se ordenarán de manera aleatoria en el tablero del área
de juego.
Resultado obtenido Las cartas visibles se ocultan en los 2 tableros.
El tiempo se reinició a 0:00.
Las cartas se ordenaron de manera aleatoria en el tablero del área
de juego.
Acciones correctivas Ninguna.
116
Resultado después de
corregir
No aplica.
Tabla 7.8.2: Prueba a caso de uso 2. Memorama. Tabla periódica
Prueba Tipo Subtipo Caso de uso
A8-P2 Unitaria Caja negra CU-A8-02
Descripción El alumno puede ver la carta seleccionada.
Resultado esperado La carta seleccionada se mostrará.
Resultado obtenido La carta seleccionada se muestra.
Acciones correctivas Ninguna.
Resultado después de
corregir
No aplica.
Tabla 7.8.3: Prueba a caso de uso 3. Memorama. Tabla periódica
Prueba Tipo Subtipo Caso de uso
A8-P3 Unitaria Caja negra CU-A8-03
Descripción Se valida que el conjunto de cartas mostrado sea correcto.
Resultado esperado El par de cartas validadas quedarán visibles o se volverán a ocultar
en caso de no cumplir el orden de conjunto (A8-R4).
Resultado obtenido Las cartas quedan visibles cuando se hace un conjunto correcto y
se ocultan en caso contrario.
Acciones correctivas Ninguna.
Resultado después de
corregir
No aplica.
7.9.7.9.7.9.7.9. Promoción de diplomado mediante correos Promoción de diplomado mediante correos Promoción de diplomado mediante correos Promoción de diplomado mediante correos electrónicoselectrónicoselectrónicoselectrónicos
Tabla 7.9.1: Prueba a caso de uso 1. Promoción de diplomado mediante correos electrónicos
Prueba Tipo Subtipo Caso de uso
S1-P1 Unitaria Caja negra CU-S1-01
Descripción El becario podrá enviar los correos.
117
Resultado esperado Se enviarán los correos.
Resultado obtenido Los correos para promocionar la convocatoria son enviados.
Acciones correctivas Ninguna.
Resultado después de
corregir
No aplica.
Tabla 7.9.2: Prueba a caso de uso 1. Promoción de diplomado mediante correos electrónicos
Prueba Tipo Subtipo Caso de uso
S1-P2 Unitaria Caja blanca CU-S1-01
Descripción El archivo de entrada es validado e insertado en la base de datos.
Resultado esperado Los registros del archivo entrada.txt serán insertados en la base de
datos.
Resultado obtenido Los registros del archivo entrada.txt son insertados en la base de
datos.
Acciones correctivas Ninguna.
Resultado después de
corregir
No aplica.
Tabla 7.9.3: Prueba a caso de uso 1. Promoción de diplomado mediante correos electrónicos
Prueba Tipo Subtipo Caso de uso
S1-P3 Unitaria Caja blanca CU-S1-01
Descripción Los correos que no llegan a su destino muestran mensaje de error.
Resultado esperado Los correos que no pudieran llegar a su destino, envían mensaje de
error.
Resultado obtenido Los mensajes de error de los correos que no llegaron a su destino
son mostrados.
Acciones correctivas Ninguna.
Resultado después de
corregir
No aplica.
8.
118
CAPÍTULO CAPÍTULO CAPÍTULO CAPÍTULO 8888. IMPLANTACIÓN. IMPLANTACIÓN. IMPLANTACIÓN. IMPLANTACIÓN
Los ocho applets desarrollados fueron incrustados en páginas HTML que se
implantaron dentro de la plataforma tecnológica Moodle, cada una de estas páginas
HTML fueron nombradas como index y guardadas dentro de las carpetas
correspondientes a cada applet y específicadas en este capítulo.
Dentro de la plataforma Web Moodle en la parte que permite subir archivos se
crearon las diversas carpetas que contienen los archivos necesarios para cada una
de las aplicaciones, se mencionará que carpetas fueron generadas para cada
aplicación.
8.1.8.1.8.1.8.1. Configuración electrónica de la tabla periódicaConfiguración electrónica de la tabla periódicaConfiguración electrónica de la tabla periódicaConfiguración electrónica de la tabla periódica
Se creó la carpeta nombrada como TablaP, la cual contiene las siguientes carpetas:
• Imágenes. Contiene las imágenes de cada uno de los elementos de la tabla
periódica.
• Classes. Tiene las clases para la ejecución del applet.
La figura 8.1.1 muestra el applet implantado dentro de la plataforma.
119
Figura 8.1.1 Applet Configuración electrónica de la tabla periódica implantado en plataforma Moodle
8.2.8.2.8.2.8.2. Calculadora de masa molecular y número de molesCalculadora de masa molecular y número de molesCalculadora de masa molecular y número de molesCalculadora de masa molecular y número de moles
La carpeta Calculadora fue creada para almacenar el applet Calculadora de masa
molecular y número de moles, una subcarpeta nombrada como Classes tiene los
archivos para la ejecución del applet.
120
Figura 8.2.1 Applet Calculadora de masa molecular y número de moles implantado en plataforma Moodle
8.3.8.3.8.3.8.3. CrucigramaCrucigramaCrucigramaCrucigrama
La carpeta Crucigrama dentro de Moodle contiene la carpeta Classes donde están
los archivos para la ejecución del applet.
121
Figura 8.3.1 Applet Crucigrama implantado en plataforma Moodle
8.4.8.4.8.4.8.4. ElectronegatividadElectronegatividadElectronegatividadElectronegatividad
Una carpeta nombrada electronegatividad contiene la subcarpeta classes que
contiene los archivos para la ejecución del applet.
122
Figura 8.4.1 Applet Electronegatividad implantado en plataforma Moodle
8.5.8.5.8.5.8.5. Radio Radio Radio Radio aaaatómicotómicotómicotómico
La carpeta Radio atómico dentro de Moodle contiene la sub carpeta classes que
tiene los archivos necesarios para la ejecución de este applet.
Figura 8.5.1 Applet Radio atómico implantado en plataforma Moodle
123
8.6.8.6.8.6.8.6. Partículas atómicasPartículas atómicasPartículas atómicasPartículas atómicas
Una carpeta llamada Appletcap3 dentro de los archivos de Moodle contiene el
archivo Configuración2.swf.
Figura 8.6.1 Applet Partículas atómicas implantado en plataforma Moodle
8.7.8.7.8.7.8.7. Memorama. Modelos Memorama. Modelos Memorama. Modelos Memorama. Modelos atómicoatómicoatómicoatómicossss
Una carpeta nombrada como Memorama contiene el archivo Memorama.swf. Las
instrucciones de juego de este applet son mostradas en la parte derecha de la
página mostrada en la figura 8.7.1.
124
Figura 8.7.1 Applet Memorama. Modelos atómicos implantado en plataforma Moodle
8.8.8.8.8.8.8.8. Memorama. Tabla periódicaMemorama. Tabla periódicaMemorama. Tabla periódicaMemorama. Tabla periódica
La carpeta Memorama_2 contiene el archivo Memoramac4.swf. Las instrucciones
de juego del applet son mostradas a la derecha de la página mostrada en la figura
8.8.1.
125
Figura 8.8.1 Applet Memorama. Tabla periódica implantado en plataforma Moodle
8.9.8.9.8.9.8.9. Promoción de Promoción de Promoción de Promoción de diplomado mediante correos electrónicosdiplomado mediante correos electrónicosdiplomado mediante correos electrónicosdiplomado mediante correos electrónicos
La base de datos Moodle y la tabla Rmoodle fueron creadas con Mysql, la carpeta
fomix dentro del servidor contiene una página nombrada como index.html que
permite el envío de correos, la figura 8.9.1 muestra la página index.html.
126
Figura 8.9.1 Script Promoción de diplomado mediante correos electrónicos
9. 5
127
CAPÍTULO CAPÍTULO CAPÍTULO CAPÍTULO 9999. CONCLUSIONES. CONCLUSIONES. CONCLUSIONES. CONCLUSIONES
El desarrollo de las ocho aplicaciones informáticas para el curso de Química implicó
envolverse en diversos conceptos relacionados, en particular, a las relaciones
periódicas y a la Química en general.
Cada una de las aplicaciones conllevó un reto para su elaboración, siendo muy
importante la comunicación que existió con el cliente que solicitó dichas
aplicaciones. No sólo fue necesario detallar los requerimientos, se necesito además
que el cliente explicará ciertos conceptos de Química para poder comprender los
requerimientos que se detallaban.
Para el proceso de desarrollo de los ocho applets fue necesario envolverse en
lenguajes de programación tales como Java o Adobe Flash, dichos lenguajes
proporcionan elementos que permiten enriquecer las aplicaciones, el buen uso de
éstas, auxiliándose de la documentación que existe sobre las mismas lleva a crear
applets atractivos y dinámicos.
El uso de Java y Adobe Flash permite realizar trabajos estéticos e interactivos que
sería casi imposible de hacer con lenguaje HTML puro o aún apoyado en otro
lenguaje de programación. El hecho de tener la potencia de estos lenguajes de
programación incrustados dentro de una página Web permite enriquecer la forma
de presentar información e interactuar con el usuario. Java y Adobe Flash además
permiten un rápido desarrollo de las aplicaciones, siendo estos lenguajes
orientados a objetos muy comunes, con la posibilidad de adaptar clases o códigos
que se comparten en foros de Internet o en la documentación de estos lenguajes un
factor importante a considerar, debido a que este proyecto conllevó un rápido
desarrollo de las aplicaciones.
La plataforma Web Moodle permite entre otras cosas, enlazar páginas Web y subir
archivos, la combinación de estos elementos subiendo las clases de las
aplicaciones Java y los archivos SWF generados por Adobe Flash y generando las
páginas necesarias para incrustar los applets ha permitido crear una atractiva
herramienta para presentar diversos conceptos de Química, sobre todo permitiendo
128
un alto grado de interacción con el usuario, haciendo la labor de aprendizaje un
proceso llamativo y entretenido.
Cada uno de los applets desarrollados utilizó diversas herramientas de los
lenguajes de programación mencionados buscando la mejor presentación y
facilidad de uso, se utilizaron estándares de usabilidad para definir la mejor
presentación de cada uno de los applets.
Se tiene con cada uno de los applets desarrollados un curso de Química
enriquecido y por lo tanto más atractivo.
El applet Configuración Electrónica de la Tabla periódica permitirá asimilar de mejor
manera este concepto mediante imágenes y gráficos de los elementos, el usuario
de la aplicación podrá observar una imagen representativa de cada elemento y los
podrá seleccionar observando mediante una imagen la configuración electrónica del
elemento.
Los applets Electronegatividad y Radio atómico permitirán ver cómo es el
comportamiento de estas características dentro de los elementos de la tabla
periódica, facilitando recordar estos conceptos.
Los applets Crucigrama y Memoramas permitirán recordar diversos conceptos de
Química de una manera dinámica y amigable, los diversos conceptos que tratan
estos applets suelen ser difíciles de recordar.
El applet Calculadora de masa molecular y número de moles faciltará la tarea de
tener que hacer estos cálculos de manera manual.
El applet Partículas atómicas interactuará con el usuario permitiéndole aprender el
correcto llenado de los datos que se le piden.
El desarrollo del script para el envío de correos requirió el uso del lenguaje de
programación PHP y el gestor de base de datos MySQL, la combinación de estas
herramientas permite un fácil desarrollo de una aplicación como la descrita, al ser
129
este lenguaje muy conocido y documentado y el gestor de base de datos robusto, lo
suficiente para las necesidades de este script.
Este script para el envío de correos facilita la tarea de hacer manualmente este
proceso, ahorrando tiempo y energías y además cumpliendo su objetivo de
promocionar los diferentes diplomados.
9.1.9.1.9.1.9.1. Trabajos futurosTrabajos futurosTrabajos futurosTrabajos futuros
Las nueve aplicaciones informáticas han cumplido su propósito de acuerdo a los
requerimientos especificados.
Los ocho applets que forman parte del diplomado de Química tienen características
muy particulares, por lo que mencionar posibles mejoras no es factible, sin
embargo, al ser el diplomado de Química muy amplio en la información que
presenta, es posible el desarrollo de más applets que puedan cumplir otros
propósitos específicos y bien definidos para abordar los diversos temas de manera
más dinámica.
El script que permite el envío de correos puede ser mejorado en diversos aspectos,
entre los que se puede mencionar:
• Una interfaz amigable que permita la administración de los correos
electrónicos, que estos no sean cargados desde un archivo de texto.
• Modificar de una manera simple el mensaje a enviar y no a nivel de
código HTML.
130
REFERENCIAS BIBLIREFERENCIAS BIBLIREFERENCIAS BIBLIREFERENCIAS BIBLIOGRÁFICASOGRÁFICASOGRÁFICASOGRÁFICAS
[1] CONACYT-UPEMOR. (2009). Oficio CCYTEM-DPP/315/2009. Cuernavaca:
CECYTEM.
[2] CONACYT-FOMIX. (2009). Manual para la administración de proyectos. DF:
CONACYT.
[3] Weitzenfeld, A. (2005). Ingeniería de Software orientada a objetos con UML. Java
e Internet. México: Thomson.
[4] Sommerville, Ian (2005). Ingeniería del Software. Madrid: Pearson Educación,
S.A.
[5] Rumbaugh, J., Jacobson, I., & Booch, G. (2000). El Lenguaje Unificado de
Modelado. Manual de referencia. Madrid: Pearson Educación, S.A.
[6] Moodle. Moodle.org: Acerca de. Recuperado el 20 de septiembre de 2010, de
Moodle.org: http://moodle.org/about/
[7] Ceballos, F. J. (2004). Java 2 Curso de programación. Madrid: Alfaomega Ra-Ma.
[8] Ceballos, F. J. (2007). Java 2 Interfaces gráficas y aplicaciones para Internet 2da
Ed. Madrid: Alfaomega Ra-Ma.
[9] Libros web. Introducción a XHTML. Recuperado el 20 de septiembre de 2010, de
Librosweb.es: http://www.librosweb.es/xhtml/index.html
[10] Cobo, Á., & Gómez, P. (2010). PHP y MySQL- Tecnologías para el desarrollo de
aplicaciones Web.
[11] MySQL AB. (2005). MySQL Reference Manual. MySQL AB.
[12] Adobe Systems Incorporated. (2007). Programación con ActionScript 3. San
José: Adobe Systems Incorporated.
131
[13] GNU Proyect. The GNU Operating System. Recuperado el 20 de septiembre de
2010, de http://www.gnu.org/
[14] The Institute of Electrical and Electronics Engineers, Inc. (1998). IEEE
Recommended Practice for Software Requirements Specifications. New York:
Institute of Electrical and Electronics Engineers, Inc.
[15] Tutorial de UML. Modelo de Clases. Recuperado el 5 de febrero de 2011, de
http://www.dcc.uchile.cl/~psalinas/uml/modelo.html
[16] Tutorial de UML. Diagramas de Secuencia. Recuperado el 5 de febrero de
2011, de http://www.scribd.com/doc/15493687/DIAGRAMAS-DE-SECUENCIA
[17] USERFOCUS. Measuring the usability of everyday products. Recuperado el 20
de enero de 2011, de http://www.userfocus.co.uk/articles/ISO20282.html
132
ANEXOSANEXOSANEXOSANEXOS
Códigos
CONFIGURACIÓN ELECTRÓNICA DE LA TABLA PERIÓDICA
package tabla; import java.applet.Applet; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Image; import java.awt.event.MouseEvent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JTextArea; /** * * @author Hugo */ public class TablaP extends Applet{ JLabel titulo2; JTextArea datos; int x= 5, y= 55; Image img[]; Image cargas; Elemento elemento[]; Spin spin[]; static int h=0,p=0; JFrame fFrame; @Override public void init(){ h=0; p=0; this.setLayout ( null ); cargas = getImage( getDocumentBase(), "Imagenes//niveles.png" ); titulo2=new JLabel(); titulo2.setLocation(850,395); titulo2.setSize(140,20); titulo2.setBorder(null); titulo2.setText("Configuración Electrónica"); titulo2.setFont(new Font("Default",1,11)); this.add(titulo2); datos=new JTextArea(); datos.setLocation(950,50); datos.setSize(300,150); datos.setBorder(null); datos.setEditable(false); datos.setText(""); datos.setFont(new Font("Default",1,15)); datos.setVisible(false); this.add(datos); spin = new Spin[112]; dibujarspin();
133
elemento = new Elemento[112]; img = new Image[112]; for(int i=0;i<112;i++){ String imagen= String.valueOf(i+1); img[i] = getImage( getDocumentBase(), "Imagenes\\Botones\\"+imagen+".png" ); } for(int i = 0; i < 7; i++){ elemento[h]=new Elemento(this,x,y,48,48,img[h],new Color(0,0,0)); this.add(elemento[h]); h++; y=y+50; } y=105; for(int i = 0; i < 6; i++){ elemento[h]=new Elemento(this,55,y,48,48,img[h],new Color(0,0,0)); this.add(elemento[h]); h++; y=y+50; } y=205; x=105; for(int j = 0; j < 4; j++){ if(j!=3){ for(int i = 0; i < 16; i++){ elemento[h]=new Elemento(this,x,y,48,48,img[h],new Color(0,0,0)); this.add(elemento[h]); h++; x=x+50; } y=y+50; x=105; } else { for(int i = 0; i < 10; i++){ elemento[h]=new Elemento(this,x,y,48,48,img[h],new Color(0,0,0)); this.add(elemento[h]); h++; x=x+50; } } } y=105; x=605; for(int j = 0; j < 6; j++){ elemento[h]=new Elemento(this,x,y,48,48,img[h],new Color(0,0,0)); this.add(elemento[h]); h++; elemento[h]=new Elemento(this,x,y+50,48,48,img[h],new Color(0,0,0)); this.add(elemento[h]); h++; x=x+50; } elemento[h]=new Elemento(this,855,55,48,48,img[h],new Color(0,0,0)); this.add(elemento[h]); x=5; y=405; h++; for(int i = 0; i < 14; i++){ elemento[h]=new Elemento(this,x,455,48,48,img[h],new Color(0,0,0)); this.add(elemento[h]); h++; elemento[h]=new Elemento(this,x,505,48,48,img[h],new Color(0,0,0));
134
this.add(elemento[h]); h++; x=x+50; } /* ELEMENTO SELECCIONADO*/ elemento[0].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal Alcalino IA \n" +"Hidrógeno "+ "\n" +"Número Atómico: 1 " + "\n" +"Peso Atómico: 1.0079" + "\n" +"Radio Atómico: 0.79"); verInfo(1); crearspin(1); } @Override public void mouseEntered(MouseEvent e) { elemento[0].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[0].mouseExited(e); } }); elemento[1].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal Alcalino IA \n"+"Litio "+ "\n" +"Número Atómico: 3 "+ "\n" +"Peso Atómico: 6.939" +"\nRadio Atómico: 1.55"); verInfo(1); crearspin(2); } @Override public void mouseEntered(MouseEvent e) { elemento[1].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[1].mouseExited(e); } }); elemento[2].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal Alcalino IA \n"+"Sodio "+ "\n" +"Número Atómico: 11 "+ "\n" +"Peso Atómico: 22.9898" +"\nRadio Atómico: 1.9"); verInfo(1); crearspin(3); } @Override public void mouseEntered(MouseEvent e) { elemento[2].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[2].mouseExited(e); } }); elemento[3].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal Alcalino IA \n"+"Potasio "+ "\n" +"Número Atómico: 19 "+ "\n" +"Peso Atómico: 39.102" +"\nRadio Atómico: 2.35"); verInfo(1); crearspin(4); } @Override
135
public void mouseEntered(MouseEvent e) { elemento[3].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[3].mouseExited(e); } }); elemento[4].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal Alcalino IA \n"+"Rubidio "+ "\n" +"Número Atómico: 37 "+ "\n" +"Peso Atómico: 85.47" +"\nRadio Atómico: 2.48"); verInfo(1); crearspin(5); } @Override public void mouseEntered(MouseEvent e) { elemento[4].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[4].mouseExited(e); } }); elemento[5].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal Alcalino IA \n"+"Cesio "+ "\n" +"Número Atómico: 55 "+ "\n" +"Peso Atómico: 132.905" +"\nRadio Atómico: 2.67"); verInfo(1); crearspin(6); } @Override public void mouseEntered(MouseEvent e) { elemento[5].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[5].mouseExited(e); } }); elemento[6].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal Alcalino IA \n"+"Francio "+ "\n" +"Número Atómico: 87 "+ "\n" +"Peso Atómico: 223.02" +"\nRadio Atómico: 2.7"); verInfo(1); crearspin(7); } @Override public void mouseEntered(MouseEvent e) { elemento[6].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[6].mouseExited(e); } }); elemento[7].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal Alcalino Terreo IIA \n"+"Berilio "+ "\n" +"Número Atómico: 4 "+ "\n" +"Peso Atómico: 9.0122" +"\nRadio Atómico: 1.12"); verInfo(2); crearspin(8); }
136
@Override public void mouseEntered(MouseEvent e) { elemento[7].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[7].mouseExited(e); } }); elemento[8].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal Alcalino Terreo IIA \n"+"Magnesio "+ "\n" +"Número Atómico: 12 "+ "\n" +"Peso Atómico: 24.312" +"\nRadio Atómico: 1.6"); verInfo(2); crearspin(9); } @Override public void mouseEntered(MouseEvent e) { elemento[8].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[8].mouseExited(e); } }); elemento[9].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal Alcalino Terreo IIA \n"+"Calcio "+ "\n" +"Número Atómico: 20 "+ "\n" +"Peso Atómico: 40.08" +"\nRadio Atómico: 1.97"); verInfo(2); crearspin(10); } @Override public void mouseEntered(MouseEvent e) { elemento[9].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[9].mouseExited(e); } }); elemento[10].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal Alcalino Terreo IIA \n"+"Estroncio "+ "\n" +"Número Atómico: 38 "+ "\n" +"Peso Atómico: 87.62" +"\nRadio Atómico: 2.15"); verInfo(2); crearspin(11); } @Override public void mouseEntered(MouseEvent e) { elemento[10].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[10].mouseExited(e); } }); elemento[11].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal Alcalino Terreo IIA \n"+"Bário "+ "\n" +"Número Atómico: 56 "+ "\n" +"Peso Atómico: 137.34" +"\nRadio Atómico: 2.22"); verInfo(2);
137
crearspin(12); } @Override public void mouseEntered(MouseEvent e) { elemento[11].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[11].mouseExited(e); } }); elemento[12].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal Alcalino Terreo IIA \n"+"Radio "+ "\n" +"Número Atómico: 88 "+ "\n" +"Peso Atómico: 226" +"\nRadio Atómico: 2.23"); verInfo(2); crearspin(13); } @Override public void mouseEntered(MouseEvent e) { elemento[12].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[12].mouseExited(e); } }); elemento[13].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición IIIB \n"+"Escandio "+ "\n" +"Número Atómico: 21 "+ "\n" +"Peso Atómico: 44.956" +"\nRadio Atómico: 1.62"); verInfo(3); crearspin(14); } @Override public void mouseEntered(MouseEvent e) { elemento[13].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[13].mouseExited(e); } }); elemento[14].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición IVB \n"+"Titanio "+ "\n" +"Número Atómico: 22 "+ "\n" +"Peso Atómico: 47.90" +"\nRadio Atómico: 1.47"); verInfo(3); crearspin(15); } @Override public void mouseEntered(MouseEvent e) { elemento[14].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[14].mouseExited(e); } }); elemento[15].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición VB \n"+"Vanadio "+ "\n" +"Número Atómico: 23 "+ "\n" +"Peso Atómico: 50.942" +"\nRadio Atómico: 1.34");
138
verInfo(3); crearspin(16); } @Override public void mouseEntered(MouseEvent e) { elemento[15].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[15].mouseExited(e); } }); elemento[16].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición VIB \n"+"Cromo "+ "\n" +"Número Atómico: 24 "+ "\n" +"Peso Atómico: 51.996" +"\nRadio Atómico: 1.27"); verInfo(3); crearspin(17); } @Override public void mouseEntered(MouseEvent e) { elemento[16].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[16].mouseExited(e); } }); elemento[17].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición VIIB \n"+"Manganeso "+ "\n" +"Número Atómico: 25 "+ "\n" +"Peso Atómico: 54.938" +"\nRadio Atómico: 1.26"); verInfo(3); crearspin(18); } @Override public void mouseEntered(MouseEvent e) { elemento[17].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[17].mouseExited(e); } }); elemento[18].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición VIIIB \n"+"Hierro "+ "\n" +"Número Atómico: 26 "+ "\n" +"Peso Atómico: 55.847" +"\nRadio Atómico: 1.26"); verInfo(3); crearspin(19); } @Override public void mouseEntered(MouseEvent e) { elemento[18].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[18].mouseExited(e); } }); elemento[19].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) {
139
creaDatos("Metal de Transición VIIIB \n"+"Cobalto "+ "\n" +"Número Atómico: 27 "+ "\n" +"Peso Atómico: 58.933" +"\nRadio Atómico: 1.25"); verInfo(3); crearspin(20); } @Override public void mouseEntered(MouseEvent e) { elemento[19].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[19].mouseExited(e); } }); elemento[20].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición VIIIB \n"+"Níquel "+ "\n" +"Número Atómico: 28 "+ "\n" +"Peso Atómico: 58.71" +"\nRadio Atómico: 1.24"); verInfo(3); crearspin(21); } @Override public void mouseEntered(MouseEvent e) { elemento[20].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[20].mouseExited(e); } }); elemento[21].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición IB \n"+"Cobre "+ "\n" +"Número Atómico: 29 "+ "\n" +"Peso Atómico: 63.54" +"\nRadio Atómico: 1.28"); verInfo(3); crearspin(22); } @Override public void mouseEntered(MouseEvent e) { elemento[21].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[21].mouseExited(e); } }); elemento[22].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición IIB \n"+"Zinc "+ "\n" +"Número Atómico: 30 "+ "\n" +"Peso Atómico: 65.37" +"\nRadio Atómico: 1.38"); verInfo(3); crearspin(23); } @Override public void mouseEntered(MouseEvent e) { elemento[22].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[22].mouseExited(e); } }); elemento[23].addMouseListener(new java.awt.event.MouseAdapter() {
140
@Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Terreos IIIA \n"+"Galio "+ "\n" +"Número Atómico: 31 "+ "\n" +"Peso Atómico: 69.72" +"\nRadio Atómico: 1.41"); verInfo(4); crearspin(24); } @Override public void mouseEntered(MouseEvent e) { elemento[23].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[23].mouseExited(e); } }); elemento[24].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Carbonoide IVA \n"+"Germanio "+ "\n" +"Número Atómico: 32 "+ "\n" +"Peso Atómico: 72.59" +"\nRadio Atómico: 1.37"); verInfo(5); crearspin(25); } @Override public void mouseEntered(MouseEvent e) { elemento[24].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[24].mouseExited(e); } }); elemento[25].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Nitrogenoide VA \n"+"Arsénico "+ "\n" +"Número Atómico: 33 "+ "\n" +"Peso Atómico: 74.922" +"\nRadio Atómico: 1.39"); verInfo(6); crearspin(26); } @Override public void mouseEntered(MouseEvent e) { elemento[25].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[25].mouseExited(e); } }); elemento[26].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Calcógeno VIA \n"+"Selenio "+ "\n" +"Número Atómico: 34 "+ "\n" +"Peso Atómico: 78.96" +"\nRadio Atómico: 1.4"); verInfo(7); crearspin(27); } @Override public void mouseEntered(MouseEvent e) { elemento[26].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[26].mouseExited(e); } });
141
elemento[27].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Halógeno VIIA \n"+"Bromo "+ "\n" +"Número Atómico: 35 "+ "\n" +"Peso Atómico: 79.909" +"\nRadio Atómico: 1.12"); verInfo(7); crearspin(28); } @Override public void mouseEntered(MouseEvent e) { elemento[27].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[27].mouseExited(e); } }); elemento[28].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Gas Inerte 0 \n"+"Kriptón "+ "\n" +"Número Atómico: 36 "+ "\n" +"Peso Atómico: 83.80" +"\nRadio Atómico: 1.03"); verInfo(8); crearspin(29); } @Override public void mouseEntered(MouseEvent e) { elemento[28].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[28].mouseExited(e); } }); elemento[29].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición IIIB \n"+"Itrio "+ "\n" +"Número Atómico: 39 "+ "\n" +"Peso Atómico: 88.905" +"\nRadio Atómico: 1.81"); verInfo(3); crearspin(30); } @Override public void mouseEntered(MouseEvent e) { elemento[29].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[29].mouseExited(e); } }); elemento[30].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición IVB \n"+"Circonio "+ "\n" +"Número Atómico: 40 "+ "\n" +"Peso Atómico: 91.22" +"\nRadio Atómico: 1.6"); verInfo(3); crearspin(31); } @Override public void mouseEntered(MouseEvent e) { elemento[30].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[30].mouseExited(e); }
142
}); elemento[31].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición VB \n"+"Niobio "+ "\n" +"Número Atómico: 41 "+ "\n" +"Peso Atómico: 92.906" +"\nRadio Atómico: 1.46"); verInfo(3); crearspin(32); } @Override public void mouseEntered(MouseEvent e) { elemento[31].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[31].mouseExited(e); } }); elemento[32].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición VIB \n"+"Molibdeno "+ "\n" +"Número Atómico: 42 "+ "\n" +"Peso Atómico: 95.94" +"\nRadio Atómico: 1.39"); verInfo(3); crearspin(33); } @Override public void mouseEntered(MouseEvent e) { elemento[32].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[32].mouseExited(e); } }); elemento[33].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición VIIB \n"+"Tecnecio "+ "\n" +"Número Atómico: 43 "+ "\n" +"Peso Atómico: 98" +"\nRadio Atómico: 1.36"); verInfo(3); crearspin(34); } @Override public void mouseEntered(MouseEvent e) { elemento[33].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[33].mouseExited(e); } }); elemento[34].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición VIIIB \n"+"Rutenio "+ "\n" +"Número Atómico: 44 "+ "\n" +"Peso Atómico: 101.07" +"\nRadio Atómico: 1.34"); verInfo(3); crearspin(35); } @Override public void mouseEntered(MouseEvent e) { elemento[34].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[34].mouseExited(e);
143
} }); elemento[35].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición VIIIB \n"+"Ródio "+ "\n" +"Número Atómico: 45 "+ "\n" +"Peso Atómico: 102.905" +"\nRadio Atómico: 1.34"); verInfo(3); crearspin(36); } @Override public void mouseEntered(MouseEvent e) { elemento[35].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[35].mouseExited(e); } }); elemento[36].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición VIIIB \n"+"Paladio "+ "\n" +"Número Atómico: 46 "+ "\n" +"Peso Atómico: 106.4" +"\nRadio Atómico: 1.38"); verInfo(3); crearspin(37); } @Override public void mouseEntered(MouseEvent e) { elemento[36].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[36].mouseExited(e); } }); elemento[37].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición IB \n"+"Plata "+ "\n" +"Número Atómico: 47 "+ "\n" +"Peso Atómico: 107.870" +"\nRadio Atómico: 1.44"); verInfo(3); crearspin(38); } @Override public void mouseEntered(MouseEvent e) { elemento[37].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[37].mouseExited(e); } }); elemento[38].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición IIB \n"+"Cadmio "+ "\n" +"Número Atómico: 48 "+ "\n" +"Peso Atómico: 112.40" +"\nRadio Atómico: 1.54"); verInfo(3); crearspin(39); } @Override public void mouseEntered(MouseEvent e) { elemento[38].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) {
144
elemento[38].mouseExited(e); } }); elemento[39].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Terreo IIIA \n"+"Indio "+ "\n" +"Número Atómico: 49 "+ "\n" +"Peso Atómico: 114.82" +"\nRadio Atómico: 1.66"); verInfo(4); crearspin(40); } @Override public void mouseEntered(MouseEvent e) { elemento[39].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[39].mouseExited(e); } }); elemento[40].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Carbonoide IVA \n"+"Estaño "+ "\n" +"Número Atómico: 50 "+ "\n" +"Peso Atómico: 118.69" +"\nRadio Atómico: 1.62"); verInfo(5); crearspin(41); } @Override public void mouseEntered(MouseEvent e) { elemento[40].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[40].mouseExited(e); } }); elemento[41].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Nitrogenoide VA \n"+"Antimonio "+ "\n" +"Número Atómico: 51 "+ "\n" +"Peso Atómico: 121.75" +"\nRadio Atómico: 1.59"); verInfo(6); crearspin(42); } @Override public void mouseEntered(MouseEvent e) { elemento[41].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[41].mouseExited(e); } }); elemento[42].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Calcógeno VIA \n"+"Telurio "+ "\n" +"Número Atómico: 52 "+ "\n" +"Peso Atómico: 127.60" +"\nRadio Atómico: 1.6"); verInfo(7); crearspin(43); } @Override public void mouseEntered(MouseEvent e) { elemento[42].mouseEntered(e); }
145
@Override public void mouseExited(MouseEvent e) { elemento[42].mouseExited(e); } }); elemento[43].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Halógeno VIIA \n"+"Yodo "+ "\n" +"Número Atómico: 53 "+ "\n" +"Peso Atómico: 126.904" +"\nRadio Atómico: 1.32"); verInfo(7); crearspin(44); } @Override public void mouseEntered(MouseEvent e) { elemento[43].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[43].mouseExited(e); } }); elemento[44].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Gas Inerte 0 \n"+"Xenón "+ "\n" +"Número Atómico: 54 "+ "\n" +"Peso Atómico: 131.30" +"\nRadio Atómico: 1.31"); verInfo(8); crearspin(45); } @Override public void mouseEntered(MouseEvent e) { elemento[44].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[44].mouseExited(e); } }); elemento[45].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición IIIB \n"+"Lutecio "+ "\n" +"Número Atómico: 71 "+ "\n" +"Peso Atómico: 174.97" +"\nRadio Atómico: 1.74"); verInfo(3); crearspin(46); } @Override public void mouseEntered(MouseEvent e) { elemento[45].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[45].mouseExited(e); } }); elemento[46].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición IVB \n"+"Hafnio "+ "\n" +"Número Atómico: 72 "+ "\n" +"Peso Atómico: 178.49" +"\nRadio Atómico: 1.58"); verInfo(3); crearspin(47); } @Override public void mouseEntered(MouseEvent e) { elemento[46].mouseEntered(e);
146
} @Override public void mouseExited(MouseEvent e) { elemento[46].mouseExited(e); } }); elemento[47].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición VB \n"+"Tántalo "+ "\n" +"Número Atómico: 73 "+ "\n" +"Peso Atómico: 180.948" +"\nRadio Atómico: 1.46"); verInfo(3); crearspin(48); } @Override public void mouseEntered(MouseEvent e) { elemento[47].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[47].mouseExited(e); } }); elemento[48].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición VIB \n"+"Valframio "+ "\n" +"Número Atómico: 74 "+ "\n" +"Peso Atómico: 183.85" +"\nRadio Atómico: 1.39"); verInfo(3); crearspin(49); } @Override public void mouseEntered(MouseEvent e) { elemento[48].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[48].mouseExited(e); } }); elemento[49].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición VIIB \n"+"Renio "+ "\n" +"Número Atómico: 75 "+ "\n" +"Peso Atómico: 186.2" +"\nRadio Atómico: 1.37"); verInfo(3); crearspin(50); } @Override public void mouseEntered(MouseEvent e) { elemento[49].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[49].mouseExited(e); } }); elemento[50].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición VIIIB \n"+"Osmio "+ "\n" +"Número Atómico: 76 "+ "\n" +"Peso Atómico: 190.2" +"\nRadio Atómico: 1.35"); verInfo(3); crearspin(51); } @Override
147
public void mouseEntered(MouseEvent e) { elemento[50].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[50].mouseExited(e); } }); elemento[51].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición VIIIB \n"+"Iridio "+ "\n" +"Número Atómico: 77 "+ "\n" +"Peso Atómico: 192.2" +"\nRadio Atómico: 1.36"); verInfo(3); crearspin(52); } @Override public void mouseEntered(MouseEvent e) { elemento[51].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[51].mouseExited(e); } }); elemento[52].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición VIIIB \n"+"Platino "+ "\n" +"Número Atómico: 78 "+ "\n" +"Peso Atómico: 195.09" +"\nRadio Atómico: 1.38"); verInfo(3); crearspin(53); } @Override public void mouseEntered(MouseEvent e) { elemento[52].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[52].mouseExited(e); } }); elemento[53].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición IB \n"+"Oro "+ "\n" +"Número Atómico: 79 "+ "\n" +"Peso Atómico: 196.967" +"\nRadio Atómico: 1.44"); verInfo(3); crearspin(54); } @Override public void mouseEntered(MouseEvent e) { elemento[53].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[53].mouseExited(e); } }); elemento[54].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición IIB \n"+"Mercurio "+ "\n" +"Número Atómico: 80 "+ "\n" +"Peso Atómico: 200.59" +"\nRadio Atómico: 1.57"); verInfo(3); crearspin(55); }
148
@Override public void mouseEntered(MouseEvent e) { elemento[54].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[54].mouseExited(e); } }); elemento[55].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Terreo IIIA \n"+"Talio "+ "\n" +"Número Atómico: 81 "+ "\n" +"Peso Atómico: 204.37" +"\nRadio Atómico: 1.71"); verInfo(4); crearspin(56); } @Override public void mouseEntered(MouseEvent e) { elemento[55].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[55].mouseExited(e); } }); elemento[56].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Carbonoide IVA \n"+"Plomo "+ "\n" +"Número Atómico: 82 "+ "\n" +"Peso Atómico: 207.19" +"\nRadio Atómico: 1.75"); verInfo(5); crearspin(57); } @Override public void mouseEntered(MouseEvent e) { elemento[56].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[56].mouseExited(e); } }); elemento[57].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Nitrogenoide VA \n"+"Bismuto "+ "\n" +"Número Atómico: 83 "+ "\n" +"Peso Atómico: 208.908" +"\nRadio Atómico: 1.7"); verInfo(6); crearspin(58); } @Override public void mouseEntered(MouseEvent e) { elemento[57].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[57].mouseExited(e); } }); elemento[58].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Calcógeno VIA \n"+"Polonio "+ "\n" +"Número Atómico: 84 "+ "\n" +"Peso Atómico: 210" +"\nRadio Atómico: 1.76"); verInfo(7); crearspin(59);
149
} @Override public void mouseEntered(MouseEvent e) { elemento[58].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[58].mouseExited(e); } }); elemento[59].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Halógeno VIIA \n"+"Astato "+ "\n" +"Número Atómico: 85 "+ "\n" +"Peso Atómico: 210" +"\nRadio Atómico: 1.43"); verInfo(7); crearspin(60); } @Override public void mouseEntered(MouseEvent e) { elemento[59].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[59].mouseExited(e); } }); elemento[60].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Gas Inerte 0\n"+"Radón "+ "\n" +"Número Atómico: 86 "+ "\n" +"Peso Atómico: 222" +"\nRadio Atómico: 1.34"); verInfo(8); crearspin(61); } @Override public void mouseEntered(MouseEvent e) { elemento[60].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[60].mouseExited(e); } }); elemento[61].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición IIIB \n"+"Lawrencio "+ "\n" +"Número Atómico: 103 "+ "\n" +"Peso Atómico: 257" +"\nRadio Atómico: N/D"); verInfo(3); crearspin(62); } @Override public void mouseEntered(MouseEvent e) { elemento[61].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[61].mouseExited(e); } }); elemento[62].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición IVB \n"+"Ruterfordio "+ "\n" +"Número Atómico: 104 "+ "\n" +"Peso Atómico: 261" +"\nRadio Atómico: N/D");
150
verInfo(3); crearspin(63); } @Override public void mouseEntered(MouseEvent e) { elemento[62].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[62].mouseExited(e); } }); elemento[63].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición VB \n"+"Dubnio "+ "\n" +"Número Atómico: 105 "+ "\n" +"Peso Atómico: 262" +"\nRadio Atómico: N/D"); verInfo(3); crearspin(64); } @Override public void mouseEntered(MouseEvent e) { elemento[63].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[63].mouseExited(e); } }); elemento[64].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición VIB \n"+"Seaborgio "+ "\n" +"Número Atómico: 106 "+ "\n" +"Peso Atómico: 263" +"\nRadio Atómico: N/D"); verInfo(3); crearspin(65); } @Override public void mouseEntered(MouseEvent e) { elemento[64].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[64].mouseExited(e); } }); elemento[65].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición VIIB \n"+"Nielsborio "+ "\n" +"Número Atómico: 107 "+ "\n" +"Peso Atómico: 264" +"\nRadio Atómico: N/D"); verInfo(3); crearspin(66); } @Override public void mouseEntered(MouseEvent e) { elemento[65].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[65].mouseExited(e); } }); elemento[66].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) {
151
creaDatos("Metal de Transición VIIIB \n"+"Hassio "+ "\n" +"Número Atómico: 108 "+ "\n" +"Peso Atómico: 265" +"\nRadio Atómico: N/D"); verInfo(3); crearspin(67); } @Override public void mouseEntered(MouseEvent e) { elemento[66].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[66].mouseExited(e); } }); elemento[67].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición VIIIB \n"+"Meitnerio "+ "\n" +"Número Atómico: 109 "+ "\n" +"Peso Atómico: 266" +"\nRadio Atómico: N/D"); verInfo(3); crearspin(68); } @Override public void mouseEntered(MouseEvent e) { elemento[67].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[67].mouseExited(e); } }); elemento[68].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición VIIIB \n"+"Ununilio "+ "\n" +"Número Atómico: 110 "+ "\n" +"Peso Atómico: 269" +"\nRadio Atómico: N/D"); verInfo(3); crearspin(69); } @Override public void mouseEntered(MouseEvent e) { elemento[68].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[68].mouseExited(e); } }); elemento[69].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición IB \n"+"Ununumio "+ "\n" +"Número Atómico: 111 "+ "\n" +"Peso Atómico: 272" +"\nRadio Atómico: N/D"); verInfo(3); crearspin(70); } @Override public void mouseEntered(MouseEvent e) { elemento[69].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[69].mouseExited(e); } }); elemento[70].addMouseListener(new java.awt.event.MouseAdapter() { @Override
152
public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Metal de Transición IIB \n"+"Ununbio "+ "\n" +"Número Atómico: 112 "+ "\n" +"Peso Atómico: 270" +"\nRadio Atómico: N/D"); verInfo(3); crearspin(71); } @Override public void mouseEntered(MouseEvent e) { elemento[70].mouseExited(e); } }); elemento[71].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Terreo IIIA \n"+"Boro "+ "\n" +"Número Atómico: 5 "+ "\n" +"Peso Atómico: 10.811" +"\nRadio Atómico: 0.98"); verInfo(4); crearspin(72); } @Override public void mouseEntered(MouseEvent e) { elemento[71].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[71].mouseExited(e); } }); elemento[72].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Terreo IIIA \n"+"Aluminio "+ "\n" +"Número Atómico: 13 "+ "\n" +"Peso Atómico: 26.9815" +"\nRadio Atómico: 1.43"); verInfo(4); crearspin(73); } @Override public void mouseEntered(MouseEvent e) { elemento[72].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[72].mouseExited(e); } }); elemento[73].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Carbonoide IVA \n"+"Carbono "+ "\n" +"Número Atómico: 6 "+ "\n" +"Peso Atómico: 12.0111" +"\nRadio Atómico: 0.914"); verInfo(5); crearspin(74); } @Override public void mouseEntered(MouseEvent e) { elemento[73].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[73].mouseExited(e); } }); elemento[74].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) {
153
creaDatos("Carbonoide IVA \n"+"Silicio "+ "\n" +"Número Atómico: 14 "+ "\n" +"Peso Atómico: 20.086" +"\nRadio Atómico: 1.32"); verInfo(5); crearspin(75); } @Override public void mouseEntered(MouseEvent e) { elemento[74].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[74].mouseExited(e); } }); elemento[75].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Nitrogenoide VA \n"+"Nitrógeno "+ "\n" +"Número Atómico: 7 "+ "\n" +"Peso Atómico: 14.0067" +"\nRadio Atómico: 0.92"); verInfo(6); crearspin(76); } @Override public void mouseEntered(MouseEvent e) { elemento[75].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[75].mouseExited(e); } }); elemento[76].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Nitrogenoide VA \n"+"Fósforo "+ "\n" +"Número Atómico: 15 "+ "\n" +"Peso Atómico: 30.9738" +"\nRadio Atómico: 1.28"); verInfo(6); crearspin(77); } @Override public void mouseEntered(MouseEvent e) { elemento[76].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[76].mouseExited(e); } }); elemento[77].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Calcógeno VIA \n"+"Oxígeno "+ "\n" +"Número Atómico: 8 "+ "\n" +"Peso Atómico: 15.9994" +"\nRadio Atómico: 0.65"); verInfo(7); crearspin(78); } @Override public void mouseEntered(MouseEvent e) { elemento[77].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[77].mouseExited(e); } }); elemento[78].addMouseListener(new java.awt.event.MouseAdapter() { @Override
154
public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Calcógeno VIA \n"+"Azufre "+ "\n" +"Número Atómico: 16 "+ "\n" +"Peso Atómico: 32.064" +"\nRadio Atómico: 1.27"); verInfo(7); crearspin(79); } @Override public void mouseEntered(MouseEvent e) { elemento[78].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[78].mouseExited(e); } }); elemento[79].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Halógeno VIIA \n"+"Flúor "+ "\n" +"Número Atómico: 9 "+ "\n" +"Peso Atómico: 18.9984" +"\nRadio Atómico: 0.57"); verInfo(7); crearspin(80); } @Override public void mouseEntered(MouseEvent e) { elemento[79].mouseExited(e); } }); elemento[80].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Halógeno VIIA \n"+"Cloro "+ "\n" +"Número Atómico: 17 "+ "\n" +"Peso Atómico: 35.453" +"\nRadio Atómico: 0.97"); verInfo(7); crearspin(81); } @Override public void mouseEntered(MouseEvent e) { elemento[80].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[80].mouseExited(e); } }); elemento[81].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Gas Inerte 0\n"+"Neón "+ "\n" +"Número Atómico: 10 "+ "\n" +"Peso Atómico: 20.183" +"\nRadio Atómico: 0.51"); verInfo(8); crearspin(82); } @Override public void mouseEntered(MouseEvent e) { elemento[81].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[81].mouseExited(e); } }); elemento[82].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) {
155
creaDatos("Gas Inerte 0\n"+"Argón "+ "\n" +"Número Atómico: 18 "+ "\n" +"Peso Atómico: 39.948" +"\nRadio Atómico: 0.88"); verInfo(8); crearspin(83); } @Override public void mouseEntered(MouseEvent e) { elemento[82].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[82].mouseExited(e); } }); elemento[83].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Gas Inerte 0\n"+"Helio "+ "\n" +"Número Atómico: 2 "+ "\n" +"Peso Atómico: 4.0026" +"\nRadio Atómico: 0.49"); verInfo(8); crearspin(84); } @Override public void mouseEntered(MouseEvent e) { elemento[83].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[83].mouseExited(e); } }); elemento[84].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Lantanido\n"+"Lantano "+ "\n" +"Número Atómico: 57 "+ "\n" +"Peso Atómico: 138.91" +"\nRadio Atómico: 1.87"); verInfo(9); crearspin(85); } @Override public void mouseEntered(MouseEvent e) { elemento[84].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[84].mouseExited(e); } }); elemento[85].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Actinido\n"+"Actinio "+ "\n" +"Número Atómico: 89 "+ "\n" +"Peso Atómico: 227" +"\nRadio Atómico: 1.88"); verInfo(10); crearspin(86); } @Override public void mouseEntered(MouseEvent e) { elemento[85].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[85].mouseExited(e); } }); elemento[86].addMouseListener(new java.awt.event.MouseAdapter() { @Override
156
public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Lantanido\n"+"Cerio "+ "\n" +"Número Atómico: 58 "+ "\n" +"Peso Atómico: 140.12" +"\nRadio Atómico: 1.81"); verInfo(9); crearspin(87); } @Override public void mouseEntered(MouseEvent e) { elemento[86].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[86].mouseExited(e); } }); elemento[87].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Actinido\n"+"Torio "+ "\n" +"Número Atómico: 90 "+ "\n" +"Peso Atómico: 232.038" +"\nRadio Atómico: 1.74"); verInfo(10); crearspin(88); } @Override public void mouseEntered(MouseEvent e) { elemento[87].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[87].mouseExited(e); } }); elemento[88].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Lantanido\n"+"Praseodimio "+ "\n" +"Número Atómico: 59 "+ "\n" +"Peso Atómico: 140.907" +"\nRadio Atómico: 1.82"); verInfo(9); crearspin(89); } @Override public void mouseEntered(MouseEvent e) { elemento[88].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[88].mouseExited(e); } }); elemento[89].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Actinido\n"+"Protactinio "+ "\n" +"Número Atómico: 91 "+ "\n" +"Peso Atómico: 231" +"\nRadio Atómico: 1.63"); verInfo(10); crearspin(90); } @Override public void mouseEntered(MouseEvent e) { elemento[89].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[89].mouseExited(e); } }); elemento[90].addMouseListener(new java.awt.event.MouseAdapter() {
157
@Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Lantanido\n"+"Neodimio "+ "\n" +"Número Atómico: 60 "+ "\n" +"Peso Atómico: 144.24" +"\nRadio Atómico: 1.82"); verInfo(9); crearspin(91); } @Override public void mouseEntered(MouseEvent e) { elemento[90].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[90].mouseExited(e); } }); elemento[91].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Actinido\n"+"Uranio "+ "\n" +"Número Atómico: 92 "+ "\n" +"Peso Atómico: 238.03" +"\nRadio Atómico: 1.56"); verInfo(10); crearspin(92); } @Override public void mouseEntered(MouseEvent e) { elemento[91].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[91].mouseExited(e); } }); elemento[92].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Lantanido\n"+"Prometio "+ "\n" +"Número Atómico: 61 "+ "\n" +"Peso Atómico: 147" +"\nRadio Atómico: 1.83"); verInfo(9); crearspin(93); } @Override public void mouseEntered(MouseEvent e) { elemento[92].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[92].mouseExited(e); } }); elemento[93].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Actinido\n"+"Neptonio "+ "\n" +"Número Atómico: 93 "+ "\n" +"Peso Atómico: 237" +"\nRadio Atómico: 1.55"); verInfo(10); crearspin(94); } @Override public void mouseEntered(MouseEvent e) { elemento[93].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[93].mouseExited(e); } });
158
elemento[94].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Lantanido\n"+"Samario "+ "\n" +"Número Atómico: 62 "+ "\n" +"Peso Atómico: 150.35" +"\nRadio Atómico: 1.66"); verInfo(9); crearspin(95); } @Override public void mouseEntered(MouseEvent e) { elemento[94].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[94].mouseExited(e); } }); elemento[95].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Actinido\n"+"Plutonio "+ "\n" +"Número Atómico: 94 "+ "\n" +"Peso Atómico: 242" +"\nRadio Atómico: 1.63"); verInfo(10); crearspin(96); } @Override public void mouseEntered(MouseEvent e) { elemento[95].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[95].mouseExited(e); } }); elemento[96].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Lantanido\n"+"Europio "+ "\n" +"Número Atómico: 63 "+ "\n" +"Peso Atómico: 151.96" +"\nRadio Atómico: 2.04"); verInfo(9); crearspin(97); } @Override public void mouseEntered(MouseEvent e) { elemento[96].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[96].mouseExited(e); } }); elemento[97].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Actinido\n"+"Americio "+ "\n" +"Número Atómico: 95 "+ "\n" +"Peso Atómico: 243" +"\nRadio Atómico: 1.73"); verInfo(10); crearspin(98); } @Override public void mouseEntered(MouseEvent e) { elemento[97].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[97].mouseExited(e); }
159
}); elemento[98].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Lantanido\n"+"Godolinio "+ "\n" +"Número Atómico: 64 "+ "\n" +"Peso Atómico: 157.25" +"\nRadio Atómico: 1.79"); verInfo(9); crearspin(99); } @Override public void mouseEntered(MouseEvent e) { elemento[98].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[98].mouseExited(e); } }); elemento[99].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Actinido\n"+"Curio "+ "\n" +"Número Atómico: 96 "+ "\n" +"Peso Atómico: 247.038" +"\nRadio Atómico: 1.74"); verInfo(10); crearspin(100); } @Override public void mouseEntered(MouseEvent e) { elemento[99].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[99].mouseExited(e); } }); elemento[100].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Lantanido\n"+"Terbio "+ "\n" +"Número Atómico: 65 "+ "\n" +"Peso Atómico: 158.924" +"\nRadio Atómico: 1.77"); verInfo(9); crearspin(101); } @Override public void mouseEntered(MouseEvent e) { elemento[100].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[100].mouseExited(e); } }); elemento[101].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Actinido\n"+"Berkelio "+ "\n" +"Número Atómico: 97 "+ "\n" +"Peso Atómico: 247" +"\nRadio Atómico: 1.7"); verInfo(10); crearspin(102); } @Override public void mouseEntered(MouseEvent e) { elemento[101].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) {
160
elemento[101].mouseExited(e); } }); elemento[102].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Lantanido\n"+"Disprosio "+ "\n" +"Número Atómico: 66 "+ "\n" +"Peso Atómico: 162.50" +"\nRadio Atómico: 1.77"); verInfo(9); crearspin(103); } @Override public void mouseEntered(MouseEvent e) { elemento[102].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[102].mouseExited(e); } }); elemento[103].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Actinido\n"+"Californio "+ "\n" +"Número Atómico: 98 "+ "\n" +"Peso Atómico: 249" +"\nRadio Atómico: 1.86"); verInfo(10); crearspin(104); } @Override public void mouseEntered(MouseEvent e) { elemento[103].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[103].mouseExited(e); } }); elemento[104].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Lantanido\n"+"Holmio "+ "\n" +"Número Atómico: 67 "+ "\n" +"Peso Atómico: 164.930" +"\nRadio Atómico: 1.76"); verInfo(9); crearspin(105); } @Override public void mouseEntered(MouseEvent e) { elemento[104].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[104].mouseExited(e); } }); elemento[105].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Actinido\n"+"Einstenio "+ "\n" +"Número Atómico: 99 "+ "\n" +"Peso Atómico: 254" +"\nRadio Atómico: 1.86"); verInfo(10); crearspin(106); } @Override public void mouseEntered(MouseEvent e) { elemento[105].mouseEntered(e); } @Override
161
public void mouseExited(MouseEvent e) { elemento[105].mouseExited(e); } }); elemento[106].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Lantanido\n"+"Erbio "+ "\n" +"Número Atómico: 68 "+ "\n" +"Peso Atómico: 167.26" +"\nRadio Atómico: 1.75"); verInfo(9); crearspin(107); } @Override public void mouseEntered(MouseEvent e) { elemento[106].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[106].mouseExited(e); } }); elemento[107].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Actinido\n"+"Fermio "+ "\n" +"Número Atómico: 100 "+ "\n" +"Peso Atómico: 253" +"\nRadio Atómico: N/D"); verInfo(10); crearspin(108); } @Override public void mouseEntered(MouseEvent e) { elemento[107].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[107].mouseExited(e); } }); elemento[108].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Lantanido\n"+"Tulio "+ "\n" +"Número Atómico: 69 "+ "\n" +"Peso Atómico: 168.934" +"\nRadio Atómico: 1.74"); verInfo(9); crearspin(109); } @Override public void mouseEntered(MouseEvent e) { elemento[108].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[108].mouseExited(e); } }); elemento[109].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Actinido\n"+"Mendelevio "+ "\n" +"Número Atómico: 101 "+ "\n" +"Peso Atómico: 256" +"\nRadio Atómico: N/D"); verInfo(10); crearspin(110); } @Override public void mouseEntered(MouseEvent e) { elemento[109].mouseEntered(e); }
162
@Override public void mouseExited(MouseEvent e) { elemento[109].mouseExited(e); } }); elemento[110].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Lantanido\n"+"Yterbio "+ "\n" +"Número Atómico: 70 "+ "\n" +"Peso Atómico: 173.04" +"\nRadio Atómico: 1.92"); verInfo(9); crearspin(111); } @Override public void mouseEntered(MouseEvent e) { elemento[110].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[110].mouseExited(e); } }); elemento[111].addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { creaDatos("Actinido\n"+"Nobelio "+ "\n" +"Número Atómico: 102 "+ "\n" +"Peso Atómico: 254" +"\nRadio Atómico: N/D"); verInfo(10); crearspin(112); } @Override public void mouseEntered(MouseEvent e) { elemento[111].mouseEntered(e); } @Override public void mouseExited(MouseEvent e) { elemento[111].mouseExited(e); } }); } @Override public void paint(Graphics g){ super.paint(g); g.drawImage(cargas,730,430,400,364,this); g.setColor(Color.blue); g.fillRect(7, 410, 87, 3); g.setColor(Color.black); g.drawString("Bloque s", 20, 425); g.drawString("Configuración Electrónica de la Tabla Periódica", 230, 70); g.setColor(Color.orange); g.fillRect(110, 410,480, 3); g.drawString("Bloque d", 300, 425); g.setColor(Color.GREEN); g.fillRect(610, 360,300, 3); //BLOQUES g.drawString("Bloque p", 750, 375); g.setColor(Color.MAGENTA); g.fillRect(7, 570,690, 3); g.drawString("Bloque f", 315, 585); g.setColor(Color.BLACK); g.drawString("1", 905, 85); g.drawString("2", 905, 130); g.drawString("3", 905, 180); g.drawString("4", 905, 230); //PERIODOS g.drawString("5", 905, 280); g.drawString("6", 905, 330); g.drawString("7", 905, 380);
163
g.drawString("1", 25, 50); g.drawString("I",25, 35); g.drawString("2", 75, 100); g.drawString("II",75, 85); g.drawString("3", 125, 200); g.drawString("4", 175, 200); g.drawString("5", 225, 200); g.drawString("6", 275, 200); g.drawString("7", 325, 200); g.drawString("8", 375, 200); g.drawString("9", 425, 200); g.drawString("10",475, 200); g.drawString("11",525, 200); g.drawString("12",575, 200); g.drawString("13",625, 100); g.drawString("III",625, 85); g.drawString("14",675, 100); g.drawString("IV",675, 85); g.drawString("15",725, 100); g.drawString("V",725, 85); g.drawString("16",775, 100); g.drawString("VI",775, 85); g.drawString("17",825, 100); g.drawString("VII",825, 85); g.drawString("18",875, 50); g.drawString("VIII",875, 35); } public void verInfo(int color){ switch(color){ case 1: this.datos.setForeground(new Color(248,199,91)); break; case 2: this.datos.setForeground(new Color(112,152,61)); break; case 3: this.datos.setForeground(new Color(236,163,234)); break; case 4: this.datos.setForeground(new Color(167,94,165)); break; case 5: this.datos.setForeground(new Color(221,135,218)); break; case 6: this.datos.setForeground(new Color(176,145,187)); break; case 7: this.datos.setForeground(new Color(222,217,223)); break; case 8: this.datos.setForeground(new Color(173,200,64)); break; case 9: this.datos.setForeground(new Color(129,191,214)); break; case 10: this.datos.setForeground(new Color(193,99,188)); break; } this.datos.setVisible(true); } public void creaDatos(String Mensaje){ datos.setText(Mensaje); } public void dibujarspin(){ spin[0] = new Spin(this,781,769,2,8);
164
spin[1] = new Spin(this,785,769,2,8); spin[2] = new Spin(this,799,740,2,8); spin[3] = new Spin(this,803,740,2,8); spin[4] = new Spin(this,785,709,2,8); spin[5] = new Spin(this,789,709,2,8); spin[6] = new Spin(this,798,709,2,8); spin[7] = new Spin(this,802,709,2,8); spin[8] = new Spin(this,811,709,2,8); spin[9] = new Spin(this,815,709,2,8); spin[10] = new Spin(this,828,682,2,8); spin[11] = new Spin(this,832,682,2,8); spin[12] = new Spin(this,812,651,2,8); spin[13] = new Spin(this,816,651,2,8); spin[14] = new Spin(this,825,651,2,8); spin[15] = new Spin(this,829,651,2,8); spin[16] = new Spin(this,838,651,2,8); spin[17] = new Spin(this,842,651,2,8); spin[18] = new Spin(this,889,625,2,8); spin[19] = new Spin(this,893,625,2,8); spin[20] = new Spin(this,798,616,2,8); spin[21] = new Spin(this,802,616,2,8); spin[22] = new Spin(this,811,616,2,8); spin[23] = new Spin(this,815,616,2,8); spin[24] = new Spin(this,824,616,2,8); spin[25] = new Spin(this,828,616,2,8); spin[26] = new Spin(this,837,616,2,8); spin[27] = new Spin(this,841,616,2,8); spin[28] = new Spin(this,850,616,2,8); spin[29] = new Spin(this,854,616,2,8); spin[30] = new Spin(this,876,596,2,8); spin[31] = new Spin(this,880,596,2,8); spin[32] = new Spin(this,889,596,2,8); spin[33] = new Spin(this,893,596,2,8); spin[34] = new Spin(this,902,596,2,8); spin[35] = new Spin(this,906,596,2,8); spin[36] = new Spin(this,980,579,2,8); spin[37] = new Spin(this,984,579,2,8); spin[38] = new Spin(this,863,569,2,8); spin[39] = new Spin(this,867,569,2,8); spin[40] = new Spin(this,876,569,2,8); spin[41] = new Spin(this,880,569,2,8); spin[42] = new Spin(this,889,569,2,8); spin[43] = new Spin(this,892,569,2,8); spin[44] = new Spin(this,902,569,2,8); spin[45] = new Spin(this,906,569,2,8); spin[46] = new Spin(this,915,569,2,8); spin[47] = new Spin(this,919,569,2,8); spin[48] = new Spin(this,965,555,2,8); spin[49] = new Spin(this,969,555,2,8); spin[50] = new Spin(this,979,555,2,8); spin[51] = new Spin(this,983,555,2,8); spin[52] = new Spin(this,992,555,2,8); spin[53] = new Spin(this,996,555,2,8); spin[54] = new Spin(this,1056,539,2,8); spin[55] = new Spin(this,1060,539,2,8); spin[56] = new Spin(this,856,532,2,8); spin[57] = new Spin(this,860,532,2,8); spin[58] = new Spin(this,869,532,2,8); spin[59] = new Spin(this,873,532,2,8); spin[60] = new Spin(this,880,532,2,8); spin[61] = new Spin(this,884,532,2,8); spin[62] = new Spin(this,892,532,2,8); spin[63] = new Spin(this,896,532,2,8); spin[64] = new Spin(this,904,532,2,8); spin[65] = new Spin(this,908,532,2,8); spin[66] = new Spin(this,916,532,2,8); spin[67] = new Spin(this,920,532,2,8); spin[68] = new Spin(this,928,532,2,8); spin[69] = new Spin(this,932,532,2,8); spin[70] = new Spin(this,954,518,2,8);
165
spin[71] = new Spin(this,958,518,2,8); spin[72] = new Spin(this,967,518,2,8); spin[73] = new Spin(this,971,518,2,8); spin[74] = new Spin(this,980,518,2,8); spin[75] = new Spin(this,984,518,2,8); spin[76] = new Spin(this,993,518,2,8); spin[77] = new Spin(this,998,518,2,8); spin[78] = new Spin(this,1006,518,2,8); spin[79] = new Spin(this,1010,518,2,8); spin[80] = new Spin(this,1040,505,2,8); spin[81] = new Spin(this,1044,505,2,8); spin[82] = new Spin(this,1053,505,2,8); spin[83] = new Spin(this,1057,505,2,8); spin[84] = new Spin(this,1065,505,2,8); spin[85] = new Spin(this,1069,505,2,8); spin[86] = new Spin(this,1104,490,2,8); spin[87] = new Spin(this,1108,490,2,8); spin[88] = new Spin(this,941,485,2,8); spin[89] = new Spin(this,945,485,2,8); spin[90] = new Spin(this,954,485,2,8); spin[91] = new Spin(this,958,485,2,8); spin[92] = new Spin(this,967,485,2,8); spin[93] = new Spin(this,971,485,2,8); spin[94] = new Spin(this,979,485,2,8); spin[95] = new Spin(this,983,485,2,8); spin[96] = new Spin(this,992,485,2,8); spin[97] = new Spin(this,996,485,2,8); spin[98] = new Spin(this,1004,485,2,8); spin[99] = new Spin(this,1008,485,2,8); spin[100] = new Spin(this,1016,485,2,8); spin[101] = new Spin(this,1020,485,2,8); spin[102] = new Spin(this,1028,465,2,8); spin[103] = new Spin(this,1032,465,2,8); spin[104] = new Spin(this,1041,465,2,8); spin[105] = new Spin(this,1045,465,2,8); spin[106] = new Spin(this,1054,465,2,8); spin[107] = new Spin(this,1058,465,2,8); spin[108] = new Spin(this,1067,465,2,8); spin[109] = new Spin(this,1071,465,2,8); spin[110] = new Spin(this,1080,465,2,8); spin[111] = new Spin(this,1084,55,2,8); iniciar(); } public void iniciar(){ for(int i=0;i<112;i++){ this.add(spin[i]); spin[i].setVisible(false); } } public void crearspin(int elemento){ if(elemento==1){ iniciar(); spin[0].setVisible(true); } else if(elemento==2){ iniciar(); for(int i=0;i<3;i++) spin[i].setVisible(true); } else if(elemento==3){ iniciar(); for(int i=0;i<11;i++) spin[i].setVisible(true); } else if(elemento==4){ iniciar(); for(int i=0;i<19;i++) spin[i].setVisible(true);
166
} else if(elemento==5){ iniciar(); for(int i=0;i<37;i++) spin[i].setVisible(true); } else if(elemento==6){ iniciar(); for(int i=0;i<55;i++) spin[i].setVisible(true); } else if(elemento==7){ iniciar(); for(int i=0;i<87;i++) spin[i].setVisible(true); } else if(elemento==8){ iniciar(); for(int i=0;i<4;i++) spin[i].setVisible(true); } else if(elemento==9){ iniciar(); for(int i=0;i<12;i++) spin[i].setVisible(true); } else if(elemento==10){ iniciar(); for(int i=0;i<20;i++) spin[i].setVisible(true); } else if(elemento==11){ iniciar(); for(int i=0;i<38;i++) spin[i].setVisible(true); } else if(elemento==12){ iniciar(); for(int i=0;i<56;i++) spin[i].setVisible(true); } else if(elemento==13){ iniciar(); for(int i=0;i<88;i++) spin[i].setVisible(true); } else if(elemento==14){ iniciar(); for(int i=0;i<21;i++) spin[i].setVisible(true); } else if(elemento==15){ iniciar(); for(int i=0;i<21;i++) spin[i].setVisible(true); spin[22].setVisible(true); } else if(elemento==16){ iniciar(); for(int i=0;i<21;i++) spin[i].setVisible(true); spin[22].setVisible(true); spin[24].setVisible(true); } else if(elemento==17){ iniciar(); for(int i=0;i<18;i++) spin[i].setVisible(true);
167
spin[18].setVisible(true); spin[20].setVisible(true); spin[22].setVisible(true); spin[24].setVisible(true); spin[26].setVisible(true); spin[28].setVisible(true); } else if(elemento==18){ iniciar(); for(int i=0;i<20;i++) spin[i].setVisible(true); spin[20].setVisible(true); spin[22].setVisible(true); spin[24].setVisible(true); spin[26].setVisible(true); spin[28].setVisible(true); } else if(elemento==19){ iniciar(); for(int i=0;i<22;i++) spin[i].setVisible(true); spin[22].setVisible(true); spin[24].setVisible(true); spin[26].setVisible(true); spin[28].setVisible(true); } else if(elemento==20){ iniciar(); for(int i=0;i<24;i++) spin[i].setVisible(true); spin[24].setVisible(true); spin[26].setVisible(true); spin[28].setVisible(true); } else if(elemento==21){ iniciar(); for(int i=0;i<26;i++) spin[i].setVisible(true); spin[26].setVisible(true); spin[28].setVisible(true); } else if(elemento==22){ iniciar(); for(int i=0;i<19;i++) spin[i].setVisible(true); for(int i=20;i<30;i++) spin[i].setVisible(true); } else if(elemento==23){ iniciar(); for(int i=0;i<30;i++) spin[i].setVisible(true); } else if(elemento==24){ iniciar(); for(int i=0;i<31;i++) spin[i].setVisible(true); } else if(elemento==25){ iniciar(); for(int i=0;i<31;i++) spin[i].setVisible(true); spin[32].setVisible(true); } else if(elemento==26){ iniciar(); for(int i=0;i<31;i++) spin[i].setVisible(true); spin[32].setVisible(true); spin[34].setVisible(true); }
168
else if(elemento==27){ iniciar(); for(int i=0;i<33;i++) spin[i].setVisible(true); spin[34].setVisible(true); } else if(elemento==28){ iniciar(); for(int i=0;i<35;i++) spin[i].setVisible(true); } else if(elemento==29){ iniciar(); for(int i=0;i<36;i++) spin[i].setVisible(true); } else if(elemento==30){ iniciar(); for(int i=0;i<39;i++) spin[i].setVisible(true); } else if(elemento==31){ iniciar(); for(int i=0;i<39;i++) spin[i].setVisible(true); spin[40].setVisible(true); } else if(elemento==32){ iniciar(); for(int i=0;i<37;i++) spin[i].setVisible(true); spin[38].setVisible(true); spin[40].setVisible(true); spin[42].setVisible(true); spin[44].setVisible(true); } else if(elemento==33){ iniciar(); for(int i=0;i<37;i++) spin[i].setVisible(true); spin[38].setVisible(true); spin[40].setVisible(true); spin[42].setVisible(true); spin[44].setVisible(true); spin[46].setVisible(true); } else if(elemento==34){ iniciar(); for(int i=0;i<39;i++) spin[i].setVisible(true); spin[40].setVisible(true); spin[42].setVisible(true); spin[44].setVisible(true); spin[46].setVisible(true); } else if(elemento==35){ iniciar(); for(int i=0;i<37;i++) spin[i].setVisible(true); spin[38].setVisible(true); spin[39].setVisible(true); spin[40].setVisible(true); spin[41].setVisible(true); spin[42].setVisible(true); spin[44].setVisible(true); spin[46].setVisible(true); } else if(elemento==36){ iniciar(); for(int i=0;i<37;i++) spin[i].setVisible(true);
169
spin[38].setVisible(true); spin[39].setVisible(true); spin[40].setVisible(true); spin[41].setVisible(true); spin[42].setVisible(true); spin[43].setVisible(true); spin[44].setVisible(true); spin[46].setVisible(true); } else if(elemento==37){ iniciar(); for(int i=0;i<36;i++) spin[i].setVisible(true); for(int i=38;i<48;i++) spin[i].setVisible(true); } else if(elemento==38){ iniciar(); for(int i=0;i<37;i++) spin[i].setVisible(true); for(int i=38;i<48;i++) spin[i].setVisible(true); } else if(elemento==39){ iniciar(); for(int i=0;i<48;i++) spin[i].setVisible(true); } else if(elemento==40){ iniciar(); for(int i=0;i<49;i++) spin[i].setVisible(true); } else if(elemento==41){ iniciar(); for(int i=0;i<49;i++) spin[i].setVisible(true); spin[50].setVisible(true); } else if(elemento==42){ iniciar(); for(int i=0;i<49;i++) spin[i].setVisible(true); spin[50].setVisible(true); spin[52].setVisible(true); } else if(elemento==43){ iniciar(); for(int i=0;i<51;i++) spin[i].setVisible(true); spin[52].setVisible(true); } else if(elemento==44){ iniciar(); for(int i=0;i<53;i++) spin[i].setVisible(true); } else if(elemento==45){ iniciar(); for(int i=0;i<54;i++) spin[i].setVisible(true); } else if(elemento==46){ iniciar(); for(int i=0;i<71;i++) spin[i].setVisible(true); } else if(elemento==47){ iniciar(); for(int i=0;i<71;i++) spin[i].setVisible(true);
170
spin[72].setVisible(true); } else if(elemento==48){ iniciar(); for(int i=0;i<71;i++) spin[i].setVisible(true); spin[72].setVisible(true); spin[74].setVisible(true); } else if(elemento==49){ iniciar(); for(int i=0;i<71;i++) spin[i].setVisible(true); spin[72].setVisible(true); spin[74].setVisible(true); spin[76].setVisible(true); } else if(elemento==50){ iniciar(); for(int i=0;i<71;i++) spin[i].setVisible(true); spin[72].setVisible(true); spin[74].setVisible(true); spin[76].setVisible(true); spin[78].setVisible(true); } else if(elemento==51){ iniciar(); for(int i=0;i<73;i++) spin[i].setVisible(true); spin[74].setVisible(true); spin[76].setVisible(true); spin[78].setVisible(true); } else if(elemento==52){ iniciar(); for(int i=0;i<75;i++) spin[i].setVisible(true); spin[76].setVisible(true); spin[78].setVisible(true); } else if(elemento==53){ iniciar(); for(int i=0;i<55;i++) spin[i].setVisible(true); for(int i=56;i<79;i++) spin[i].setVisible(true); } else if(elemento==54){ iniciar(); for(int i=0;i<55;i++) spin[i].setVisible(true); for(int i=56;i<80;i++) spin[i].setVisible(true); } else if(elemento==55){ iniciar(); for(int i=0;i<80;i++) spin[i].setVisible(true); } else if(elemento==56){ iniciar(); for(int i=0;i<81;i++) spin[i].setVisible(true); } else if(elemento==57){ iniciar(); for(int i=0;i<81;i++) spin[i].setVisible(true); spin[82].setVisible(true); }
171
else if(elemento==58){ iniciar(); for(int i=0;i<81;i++) spin[i].setVisible(true); spin[82].setVisible(true); spin[84].setVisible(true); } else if(elemento==59){ iniciar(); for(int i=0;i<83;i++) spin[i].setVisible(true); spin[84].setVisible(true); } else if(elemento==60){ iniciar(); for(int i=0;i<85;i++) spin[i].setVisible(true); } else if(elemento==61){ iniciar(); for(int i=0;i<86;i++) spin[i].setVisible(true); } else if(elemento==62){ iniciar(); for(int i=0;i<103;i++) spin[i].setVisible(true); } else if(elemento==63){ iniciar(); for(int i=0;i<103;i++) spin[i].setVisible(true); spin[104].setVisible(true); } else if(elemento==64){ iniciar(); for(int i=0;i<103;i++) spin[i].setVisible(true); spin[104].setVisible(true); spin[106].setVisible(true); } else if(elemento==65){ iniciar(); for(int i=0;i<103;i++) spin[i].setVisible(true); spin[104].setVisible(true); spin[106].setVisible(true); spin[108].setVisible(true); } else if(elemento==66){ iniciar(); for(int i=0;i<103;i++) spin[i].setVisible(true); spin[104].setVisible(true); spin[106].setVisible(true); spin[108].setVisible(true); spin[110].setVisible(true); } else if(elemento==67){ iniciar(); for(int i=0;i<105;i++) spin[i].setVisible(true); spin[106].setVisible(true); spin[108].setVisible(true); spin[110].setVisible(true); } else if(elemento==68){ iniciar(); for(int i=0;i<107;i++) spin[i].setVisible(true); spin[108].setVisible(true);
172
spin[110].setVisible(true); } /* else if(elemento==69){ iniciar(); for(int i=0;i<107;i++) spin[i].setVisible(true); spin[108].setVisible(true); spin[110].setVisible(true); } else if(elemento==70){ iniciar(); for(int i=0;i<107;i++) spin[i].setVisible(true); //PENDIENTES spin[108].setVisible(true); No hay información spin[110].setVisible(true); } else if(elemento==71){ iniciar(); for(int i=0;i<107;i++) spin[i].setVisible(true); spin[108].setVisible(true); spin[110].setVisible(true); }*/ else if(elemento==72){ iniciar(); for(int i=0;i<5;i++) spin[i].setVisible(true); } else if(elemento==73){ iniciar(); for(int i=0;i<13;i++) spin[i].setVisible(true); } else if(elemento==74){ iniciar(); for(int i=0;i<5;i++) spin[i].setVisible(true); spin[6].setVisible(true); } else if(elemento==75){ iniciar(); for(int i=0;i<13;i++) spin[i].setVisible(true); spin[14].setVisible(true); } else if(elemento==76){ iniciar(); for(int i=0;i<5;i++) spin[i].setVisible(true); spin[6].setVisible(true); spin[8].setVisible(true); } else if(elemento==77){ iniciar(); for(int i=0;i<13;i++) spin[i].setVisible(true); spin[14].setVisible(true); spin[16].setVisible(true); } else if(elemento==78){ iniciar(); for(int i=0;i<7;i++) spin[i].setVisible(true); spin[8].setVisible(true); } else if(elemento==79){ iniciar(); for(int i=0;i<15;i++) spin[i].setVisible(true);
173
spin[16].setVisible(true); } else if(elemento==80){ iniciar(); for(int i=0;i<9;i++) spin[i].setVisible(true); } else if(elemento==81){ iniciar(); for(int i=0;i<17;i++) spin[i].setVisible(true); } else if(elemento==82){ iniciar(); for(int i=0;i<10;i++) spin[i].setVisible(true); } else if(elemento==83){ iniciar(); for(int i=0;i<18;i++) spin[i].setVisible(true); } else if(elemento==84){ iniciar(); for(int i=0;i<2;i++) spin[i].setVisible(true); } else if(elemento==85){ iniciar(); for(int i=0;i<56;i++) spin[i].setVisible(true); spin[70].setVisible(true); } else if(elemento==86){ iniciar(); for(int i=0;i<88;i++) spin[i].setVisible(true); spin[102].setVisible(true); } else if(elemento==87){ iniciar(); for(int i=0;i<57;i++) spin[i].setVisible(true); spin[70].setVisible(true); } else if(elemento==88){ iniciar(); for(int i=0;i<88;i++) spin[i].setVisible(true); spin[102].setVisible(true); spin[104].setVisible(true); } else if(elemento==89){ iniciar(); for(int i=0;i<57;i++) spin[i].setVisible(true); spin[58].setVisible(true); spin[60].setVisible(true); } else if(elemento==90){ iniciar(); for(int i=0;i<89;i++) spin[i].setVisible(true); spin[90].setVisible(true); spin[102].setVisible(true); } else if(elemento==91){ iniciar(); for(int i=0;i<57;i++) spin[i].setVisible(true); spin[58].setVisible(true);
174
spin[60].setVisible(true); spin[62].setVisible(true); } else if(elemento==92){ iniciar(); for(int i=0;i<89;i++) spin[i].setVisible(true); spin[90].setVisible(true); spin[92].setVisible(true); spin[102].setVisible(true); } else if(elemento==93){ iniciar(); for(int i=0;i<57;i++) spin[i].setVisible(true); spin[58].setVisible(true); spin[60].setVisible(true); spin[62].setVisible(true); spin[64].setVisible(true); } else if(elemento==94){ iniciar(); for(int i=0;i<89;i++) spin[i].setVisible(true); spin[90].setVisible(true); spin[92].setVisible(true); spin[94].setVisible(true); spin[102].setVisible(true); } else if(elemento==95){ iniciar(); for(int i=0;i<57;i++) spin[i].setVisible(true); spin[58].setVisible(true); spin[60].setVisible(true); spin[62].setVisible(true); spin[64].setVisible(true); spin[66].setVisible(true); } else if(elemento==96){ iniciar(); for(int i=0;i<89;i++) spin[i].setVisible(true); spin[90].setVisible(true); spin[92].setVisible(true); spin[94].setVisible(true); spin[96].setVisible(true); spin[98].setVisible(true); } else if(elemento==97){ iniciar(); for(int i=0;i<57;i++) spin[i].setVisible(true); spin[58].setVisible(true); spin[60].setVisible(true); spin[62].setVisible(true); spin[64].setVisible(true); spin[66].setVisible(true); spin[68].setVisible(true); } else if(elemento==98){ iniciar(); for(int i=0;i<89;i++) spin[i].setVisible(true); spin[90].setVisible(true); spin[92].setVisible(true); spin[94].setVisible(true); spin[96].setVisible(true); spin[98].setVisible(true); spin[100].setVisible(true); }
175
else if(elemento==99){ iniciar(); for(int i=0;i<57;i++) spin[i].setVisible(true); spin[58].setVisible(true); spin[60].setVisible(true); spin[62].setVisible(true); spin[64].setVisible(true); spin[66].setVisible(true); spin[68].setVisible(true); spin[70].setVisible(true); } else if(elemento==100){ iniciar(); for(int i=0;i<89;i++) spin[i].setVisible(true); spin[90].setVisible(true); spin[92].setVisible(true); spin[94].setVisible(true); spin[96].setVisible(true); spin[98].setVisible(true); spin[100].setVisible(true); spin[102].setVisible(true); } else if(elemento==101){ iniciar(); for(int i=0;i<61;i++) spin[i].setVisible(true); spin[62].setVisible(true); spin[64].setVisible(true); spin[66].setVisible(true); spin[68].setVisible(true); } else if(elemento==102){ iniciar(); for(int i=0;i<93;i++) spin[i].setVisible(true); spin[94].setVisible(true); spin[96].setVisible(true); spin[98].setVisible(true); spin[100].setVisible(true); } else if(elemento==103){ iniciar(); for(int i=0;i<63;i++) spin[i].setVisible(true); spin[64].setVisible(true); spin[66].setVisible(true); spin[68].setVisible(true); } else if(elemento==104){ iniciar(); for(int i=0;i<95;i++) spin[i].setVisible(true); spin[96].setVisible(true); spin[98].setVisible(true); spin[100].setVisible(true); } else if(elemento==105){ iniciar(); for(int i=0;i<65;i++) spin[i].setVisible(true); spin[66].setVisible(true); spin[68].setVisible(true); } else if(elemento==106){ iniciar(); for(int i=0;i<97;i++) spin[i].setVisible(true); spin[98].setVisible(true); spin[100].setVisible(true);
176
} else if(elemento==107){ iniciar(); for(int i=0;i<67;i++) spin[i].setVisible(true); spin[68].setVisible(true); } else if(elemento==108){ iniciar(); for(int i=0;i<99;i++) spin[i].setVisible(true); spin[100].setVisible(true); } else if(elemento==109){ iniciar(); for(int i=0;i<69;i++) spin[i].setVisible(true); } else if(elemento==110){ iniciar(); for(int i=0;i<101;i++) spin[i].setVisible(true); } else if(elemento==111){ iniciar(); for(int i=0;i<70;i++) spin[i].setVisible(true); } else if(elemento==112){ iniciar(); for(int i=0;i<102;i++) spin[i].setVisible(true); } } } package tabla; import java.applet.Applet; import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; /** * * @author Luis David Fraga */ public class Elemento extends Canvas implements MouseListener{ Image img; int x,y,w,h,WO; Elemento(Applet g,int x,int y, int w ,int h,Image img,Color c){ this.x=x; this.y=y; this.w=w; this.h=h; this.img=img; WO=w; g.add(this).setBounds(x,y,w,h); setBackground(c); } @Override public void paint(Graphics g){ super.paint(g); g.drawImage(img,1,1,w-5,h-5,this); } public void setImgOver(Image over){ this.img=over;
177
} public void setImage(Image up){ this.img=up; } public void setImagePress(Image press){ this.img=press; repaint(); } public void mouseClicked(MouseEvent e) { System.exit(0); } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { w=w+5; h=h+5; repaint(); } public void mouseExited(MouseEvent e) { if((w-5)>=WO){ w=w-5; h=h-5; repaint(); } } } package tabla; import java.applet.Applet; import java.awt.Canvas; import java.awt.Color; /** * * @author Hugo */ public class Spin extends Canvas { int x,y,w,h; Spin(Applet g,int x,int y, int w ,int h){ this.x=x; this.y=y; this.w=w; this.h=h; g.add(this).setBounds(x,y,w,h); setBackground(Color.DARK_GRAY); } }
CALCULADORA DE MASA MOLECULAR Y NÚMERO DE MOLES package calculadora; import java.awt.Color; import java.awt.Container; import javax.swing.JApplet; import javax.swing.JButton;
178
import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JTextField; /** * * @author Hugo * Calculadora de Masa Molecular (MM) y numero de moles */ public class CalculadoraM extends JApplet{ Elemento elemento[]; int x=40,y=40,j=0; JButton MM; JButton Moles, Limpiar; JLabel encabezado[]; public static JTextField masam,moles; @Override public void init(){ Container cp = getContentPane(); cp.setBackground(Color.GRAY); cp.setLocation(0,0); cp.setLayout(null); cp.setSize(500,500); cp.setVisible(true); elemento = new Elemento[112]; for(int i=0;i<112;i++){ if(i<10){ if(i==0){x=40;}; y=40; } else if(i>=10&&i<20){ if(i==10){x=40;} y=71; } else if(i>=20&&i<30){ if(i==20){x=40;} y=102; } else if(i>=30&&i<40){ if(i==30){x=40;} y=133; } else if(i>=40&&i<50){ if(i==40){x=40;} y=164; } else if(i>=50&&i<60){ if(i==50){x=40;} y=195; } else if(i>=60&&i<70){ if(i==60){x=40;} y=226; } else if(i>=70&&i<80){ if(i==70){x=40;} y=257; } else if(i>=80&&i<90){ if(i==80){x=40;} y=288; } else if(i>=90&&i<100){ if(i==90){x=40;} y=319; } else if(i>=100&&i<110){ if(i==100){x=40;} y=350; } else if(i>=110){ if(i==110){x=40;} y=381; } elemento[i]=new Elemento(this,x,y,30,30,new Color(0,0,0),i); cp.add(elemento[i]); x+=31; } MM = new JButton("MM"); MM.setToolTipText("Obtener Masa Molecular"); MM.setLocation(380,240); MM.setSize(80,20); //Boton masa molecular MM.setBorder(null); MM.setText("MM"); MM.setEnabled(true); cp.add(MM); Moles = new JButton("Moles"); Moles.setToolTipText("Obtener Moles"); Moles.setLocation(380,270); //Boton moles Moles.setSize(80,20); Moles.setBorder(null); Moles.setText("Moles"); Moles.setEnabled(false); cp.add(Moles); Limpiar = new JButton("Limpiar"); Limpiar.setToolTipText("Iniciar nuevo calculo"); Limpiar.setLocation(380,300); Limpiar.setSize(80,20);
179
Limpiar.setBorder(null); //Boton limpiar Limpiar.setText("Limpiar"); Limpiar.setEnabled(true); cp.add(Limpiar); encabezado=new JLabel[6]; encabezado[0] = new JLabel(); encabezado[0].setToolTipText("Selecciona elementos de la tabla"); encabezado[0].setLocation(380,50); encabezado[0].setSize(120,20); encabezado[0].setBorder(null); //Etiqueta de instrucciones encabezado[0].setBackground(Color.white); encabezado[0].setText("Fórmula"); cp.add(encabezado[0]); masam = new JTextField(); masam.setToolTipText("Selecciona elementos de la tabla"); masam.setLocation(380,70); masam.setSize(120,20); masam.setBorder(null); //Recibe formula quimica masam.setText(""); masam.setEditable(false); cp.add(masam); encabezado[1] = new JLabel(); encabezado[1].setToolTipText("Masa Molecular"); encabezado[1].setLocation(380,90); encabezado[1].setSize(120,20); encabezado[1].setBorder(null); //Etiqueta de instrucciones para resultado encabezado[1].setBackground(Color.white); encabezado[1].setText("Masa Molecular"); cp.add(encabezado[1]); encabezado[2] = new JLabel(); encabezado[2].setLocation(380,110); encabezado[2].setSize(120,20); encabezado[2].setBorder(null); //Devuelve resultado masa molecular encabezado[2].setText(""); cp.add(encabezado[2]); encabezado[3] = new JLabel(); encabezado[3].setLocation(380,130); encabezado[3].setSize(120,20); encabezado[3].setBorder(null); //Etiqueta de instrucciones (pedir gramos) encabezado[3].setBackground(Color.white); encabezado[3].setText("Gramos"); cp.add(encabezado[3]); moles = new JTextField(); moles.setToolTipText("Ingresa la masa en gramos"); //Recibe los gramos moles.setLocation(380,150); moles.setSize(120,20); moles.setBackground(Color.white); moles.setEditable(true); cp.add(moles); encabezado[4] = new JLabel(); encabezado[4].setLocation(380,170); encabezado[4].setSize(120,20); //Etiqueta de instrucciones moles encabezado[4].setBorder(null); encabezado[4].setBackground(Color.white); encabezado[4].setText("Numero de Moles"); cp.add(encabezado[4]); encabezado[5] = new JLabel(); encabezado[5].setLocation(380,190); encabezado[5].setSize(200,20); //Devuelve numero de moles encabezado[5].setBorder(null); encabezado[5].setBackground(Color.white); encabezado[5].setText("");
180
cp.add(encabezado[5]); MM.addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { encabezado[2].setText(Double.toString(Elemento.ma)+" "+"u.m.a"); Moles.setEnabled(true); } }); Limpiar.addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { Elemento.ma=0; masam.setText(""); encabezado[2].setText(""); moles.setText(""); encabezado[5].setText(""); Moles.setEnabled(false); MM.setEnabled(true); for(int i=0;i<112;i++) elemento[i].setEnabled(true); } }); Moles.addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { double m,g; String g1; inhabilita(); if(((String)(moles.getText())).length()!=0){ g1=(String)encabezado[2].getText(); int pos=g1.indexOf('u'); //quitar u.m.a. g1=g1.substring(0,(g1.length()-pos)); g=Double.parseDouble(g1); try{ m=Double.parseDouble((String)moles.getText()); Moles mo = new Moles(m,g); encabezado[5].setText(Double.toString(mo.getn())+" "+"mol"); }catch(Exception e){ JOptionPane.showMessageDialog(null, "Debes ingresar un número en gramos"); } } else JOptionPane.showMessageDialog(null, "Debes ingresar un número en gramos"); } }); } public void inhabilita(){ MM.setEnabled(false); for(int i=0;i<112;i++) elemento[i].setEnabled(false); } } package calculadora; import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JApplet; import javax.swing.JLabel; import javax.swing.JOptionPane; public class Elemento extends Canvas implements MouseListener{ int x,y,w,h,WO,index; String aux; public static double ma=0;
181
String elementos[]={" H"," He"," Li"," Be"," B"," C"," N"," O"," F"," Ne"," Na"," Mg", " Al"," Si"," P"," S"," Cl"," Ar"," K"," Ca"," Sc"," Ti"," V"," Cr"," Mn"," Fe", " Co"," Ni"," Cu"," Zn"," Ga"," Ge"," As"," Se"," Br"," Kr"," Rb"," Sr"," Y"," Zr", " Nb"," Mo"," Tc"," Ru"," Rh"," Pd"," Ag"," Cd"," In"," Sn"," Sb"," Te"," I"," Xe", " Cs"," Ba"," Lu"," Hf"," Ta"," W"," Re"," Os"," Ir"," Pt"," Au"," Hg"," Tl"," Pb", " Bi"," Po"," At"," Rn"," Fr"," Ra"," Lr"," Rf"," Db"," Sg"," Ns"," Hs"," Mt"," UUn", " Uuu"," Uub"," La"," Ce"," Pr"," Nd"," Pm"," Sm"," Eu"," Gd"," Tb"," Dy"," Ho"," Er", " Tm"," Yb"," Ac"," Th"," Pa"," U"," Np"," Pu"," Am"," Cm"," Bk"," Cf"," Es"," Fm", " Md"," No"}; double values[]={1.00797,4.0026,6.939,9.0122,10.811,12.0111,14.0067,15.9994,18.9984,20.183, 22.9898,24.312,26.9815,28.086,30.9738,32.064,35.453,39.948,39.102,40.08,44.956, 47.90,50.942,51.996,54.938,55.847,58.933,58.71,63.54,65.37,69.72,72.59,74.922, 78.96,79.909,83.80,85.47,87.62,88.905,91.22,92.906,95.94,98,101.07,102.905,106.4, 107.870,112.40,114.82,118.69,121.75,127.60,126.904,131.30,132.905,137.34,174.97, 178.49,180.948,183.85,186.2,190.2,192.2,195.09,196.967,200.59,204.37,207.19, 208.908,210,210,222,223,226,257,261,262,263,264,265,266,269,272,270,138.91,140.12, 140.907,144.24,147,150.35,151.96,157.25,158.924,162.50,164.930,167.26,168.934, 173.04,227,232.038,231,238.03,237,242,243,247,247,249,254,253,256,254}; JLabel ele; public Elemento(){} Elemento(JApplet g,int x,int y, int w ,int h,Color c, int index){ this.x=x; this.y=y; this.w=w; this.h=h; WO=w; ele = new JLabel(); ele.setBounds(x, y, w, h); ele.setOpaque(true); ele.setBackground(c); ele.setForeground(Color.ORANGE); ele.setText(elementos[index]); ele.setVisible(true); ele.addMouseListener(this); this.index=index; g.add(ele).setBounds(x, y, w, h); } @Override public void paint(Graphics g){ super.paint(g); } public void setImgOver(Image over){ } public void setImage(Image up){ } public void setImagePress(Image press){ repaint(); } public void mouseClicked(MouseEvent e) { asignarvalores(); } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { w=w-3; h=h-3;
182
ele.setBounds(x+2, y+2, w, h); } public void mouseExited(MouseEvent e) { if((w+3)>=WO){ w=w+3; h=h+3; ele.setBounds(x, y, w, h); } } public void asignarvalores(){ //Asignar valores de masa atomica y escribir formula quimica int ne=1; ma+=values[index]; //Sumar valores de masa atomica if(CalculadoraM.masam.getText()!=null) //Determinar estado de formula masam aux=((String)(CalculadoraM.masam.getText()))+elementos[index]; else aux=elementos[index]; String a=JOptionPane.showInputDialog("Número de "+ elementos[index] +"'s"); try{ ne=Integer.parseInt(a); if(ne>1) aux=aux+ne; }catch(Exception e){JOptionPane.showMessageDialog(null, "Debes ingresar un numero, valor por default será 1");} CalculadoraM.masam.setText(aux); ma=ma*ne; } } package calculadora; /** * * @author Hugo */ public class Moles { private double gramos,masam,n; public Moles(double gramos, double masam){ this.gramos=gramos; this.masam=masam; nomoles(); } public void nomoles(){ n=gramos/masam; } public double getn(){ return n; } } package calculadora; import java.awt.Color; import java.awt.Dimension; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JTextField; /** * * @author Hugo
183
*/ public class Numelementos { public static JTextField ne; JButton Aceptar; JDialog popup = new JDialog(); public Numelementos(){} public void Popup(String elemento){ JLabel men=new JLabel(); men = new JLabel(); men.setLocation(10,20); men.setSize(120,20); //Devuelve numero de moles men.setBorder(null); men.setBackground(Color.white); men.setForeground(Color.orange); men.setText("Numero de " + elemento + "'s:"); ne = new JTextField(); ne.setToolTipText("Numero de elementos de "+elemento); //Recibe los gramos ne.setLocation(10,50); ne.setSize(110,20); ne.setBackground(Color.white); ne.setText(null); ne.setEditable(true); Aceptar = new JButton("Aceptar"); Aceptar.setLocation(27,100); //Boton aceptar Aceptar.setSize(80,20); Aceptar.setBorder(null); Aceptar.setText("Aceptar"); Aceptar.setEnabled(true); popup.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); popup.setLayout(null); popup.setUndecorated(true); popup.setSize(135, 135); popup.setResizable(false); popup.setPreferredSize(new Dimension(135,135)); popup.getContentPane().setBackground(Color.DARK_GRAY); popup.getContentPane().add(men); popup.getContentPane().add(ne); popup.getContentPane().add(Aceptar); popup.setLocation(100,100); popup.pack(); popup.setVisible(true); Aceptar.addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { popup.dispose(); } }); } }
CRUCIGRAMA import java.awt.Color; import java.awt.Container; import java.awt.Font; import javax.swing.JApplet; import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JTextArea; import javax.swing.JTextField; /** *
184
* @author Hugo * Crucigrama */ public class Crucigrama extends JApplet{ JButton Aceptar,Iniciar,Siguiente,Anterior,Respuestas; JLabel instrucciones[]; JTextField vertical[]; JTextField horizontal[]; JTextArea pregunta; public static int np=0; Preguntas p; Respuestas r; @Override public void init(){ Container cp = getContentPane(); cp.setBackground(Color.white); cp.setLocation(0,0); cp.setLayout(null); cp.setSize(500,500); cp.setVisible(true); Aceptar = new JButton("Aceptar"); Aceptar.setToolTipText("Verificar respuestas"); Aceptar.setLocation(380,240); Aceptar.setSize(80,20); Aceptar.setBorder(null); Aceptar.setText("Aceptar"); Aceptar.setEnabled(true); cp.add(Aceptar); Iniciar = new JButton("Iniciar"); Iniciar.setToolTipText("Iniciar"); Iniciar.setLocation(380,270); Iniciar.setSize(80,20); Iniciar.setBorder(null); Iniciar.setText("Iniciar"); Iniciar.setEnabled(true); cp.add(Iniciar); Siguiente = new JButton("Siguiente"); Siguiente.setToolTipText("Ver siguiente pregunta"); Siguiente.setLocation(430,300); Siguiente.setSize(30,20); Siguiente.setBorder(null); Siguiente.setText(">>"); Siguiente.setEnabled(true); cp.add(Siguiente); Anterior = new JButton("Anterior"); Anterior.setToolTipText("Ver pregunta previa"); Anterior.setLocation(380,300); Anterior.setSize(30,20); Anterior.setBorder(null); Anterior.setText("<<"); Anterior.setEnabled(true); cp.add(Anterior); Respuestas = new JButton("Respuestas"); Respuestas.setToolTipText("Ver respuestas"); Respuestas.setLocation(380,330); Respuestas.setSize(80,20); Respuestas.setBorder(null); Respuestas.setText("Respuestas"); Respuestas.setEnabled(true); cp.add(Respuestas); instrucciones=new JLabel[8];
185
instrucciones[0] = new JLabel(); instrucciones[0].setToolTipText("Crucigrama"); instrucciones[0].setLocation(200,15); instrucciones[0].setSize(120,30); instrucciones[0].setBorder(null); instrucciones[0].setBackground(Color.white); instrucciones[0].setText("Crucigrama"); cp.add(instrucciones[0]); instrucciones[1] = new JLabel(); instrucciones[1].setLocation(150,280); instrucciones[1].setSize(120,20); instrucciones[1].setBorder(null); instrucciones[1].setBackground(Color.white); instrucciones[1].setText(""); instrucciones[1].setVisible(false); cp.add(instrucciones[1]); instrucciones[2] = new JLabel(); instrucciones[2].setLocation(25,35); instrucciones[2].setSize(10,10); instrucciones[2].setBorder(null); instrucciones[2].setBackground(Color.white); instrucciones[2].setForeground(Color.red); instrucciones[2].setText("1"); instrucciones[2].setVisible(true); cp.add(instrucciones[2]); instrucciones[3] = new JLabel(); instrucciones[3].setLocation(85,35); instrucciones[3].setSize(10,10); instrucciones[3].setBorder(null); instrucciones[3].setBackground(Color.white); instrucciones[3].setForeground(Color.red); instrucciones[3].setText("4"); instrucciones[3].setVisible(true); cp.add(instrucciones[3]); instrucciones[4] = new JLabel(); instrucciones[4].setLocation(225,55); instrucciones[4].setSize(10,10); instrucciones[4].setBorder(null); instrucciones[4].setBackground(Color.white); instrucciones[4].setForeground(Color.red); instrucciones[4].setText("9"); instrucciones[4].setVisible(true); cp.add(instrucciones[4]); instrucciones[5] = new JLabel(); instrucciones[5].setLocation(10,75); instrucciones[5].setSize(10,10); instrucciones[5].setBorder(null); instrucciones[5].setBackground(Color.white); instrucciones[5].setForeground(Color.red); instrucciones[5].setText("2"); instrucciones[5].setVisible(true); cp.add(instrucciones[5]); instrucciones[6] = new JLabel(); instrucciones[6].setLocation(210,195); instrucciones[6].setSize(10,10); instrucciones[6].setBorder(null); instrucciones[6].setBackground(Color.white); instrucciones[6].setForeground(Color.red); instrucciones[6].setText("8"); instrucciones[6].setVisible(true); cp.add(instrucciones[6]); instrucciones[7] = new JLabel(); instrucciones[7].setLocation(120,235); instrucciones[7].setSize(20,10);
186
instrucciones[7].setBorder(null); //Título instrucciones[7].setBackground(Color.white); instrucciones[7].setForeground(Color.red); instrucciones[7].setText("10"); instrucciones[7].setVisible(true); cp.add(instrucciones[7]); pregunta=new JTextArea(); pregunta.setLocation(10,300); pregunta.setSize(350,150); pregunta.setBorder(null); pregunta.setEditable(false); pregunta.setText(""); pregunta.setFont(new Font("Default",1,11)); pregunta.setVisible(false); cp.add(pregunta); int x=0, y=50, h=0; vertical=new JTextField[25]; horizontal=new JTextField[30]; for(int i=0; i<6; i++){ vertical[h]=new JTextField(1); vertical[h].setLocation(20,y); vertical[h].setSize(20,20); vertical[h].setBackground(Color.white); vertical[h].setEditable(true); vertical[h].setDocument(new Limite(vertical[h],1)); cp.add(vertical[h]); y=y+20; h++; } y=50; for(int i=0; i<7; i++){ vertical[h]=new JTextField(); vertical[h].setLocation(80,y); vertical[h].setSize(20,20); vertical[h].setBackground(Color.white); vertical[h].setEditable(true); vertical[h].setDocument(new Limite(vertical[h],1)); cp.add(vertical[h]); y=y+20; h++; } y=70; for(int i=0; i<10; i++){ vertical[h]=new JTextField(); vertical[h].setLocation(220,y); vertical[h].setSize(20,20); vertical[h].setBackground(Color.white); vertical[h].setEditable(true); vertical[h].setDocument(new Limite(vertical[h],1)); cp.add(vertical[h]); y=y+20; h++; } x=40; h=0; for(int i=0; i<14; i++){ if(x==220 || x==80){ x=x+20; } else{ horizontal[h]=new JTextField(); horizontal[h].setLocation(x,70); horizontal[h].setSize(20,20); horizontal[h].setBackground(Color.white); horizontal[h].setEditable(true); horizontal[h].setDocument(new Limite(horizontal[h],1));
187
cp.add(horizontal[h]); x=x+20; h++; } } x=240; for(int i=0; i<8; i++){ horizontal[h]=new JTextField(); horizontal[h].setLocation(x,190); horizontal[h].setSize(20,20); horizontal[h].setBackground(Color.white); horizontal[h].setEditable(true); horizontal[h].setDocument(new Limite(horizontal[h],1)); cp.add(horizontal[h]); x=x+20; h++; } x=140; for(int i=0; i<7; i++){ if(x==220){ x=x+20; } else{ horizontal[h]=new JTextField(); horizontal[h].setLocation(x,230); horizontal[h].setSize(20,20); horizontal[h].setBackground(Color.white); horizontal[h].setEditable(true); horizontal[h].setDocument(new Limite(horizontal[h],1)); cp.add(horizontal[h]); x=x+20; h++; } } p = new Preguntas(); r=new Respuestas(); Aceptar.addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { valida(); } }); Iniciar.addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { np=0; limpiar(); pregunta(); } }); Siguiente.addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { if(np<10) np+=2; else np=0; pregunta(); } }); Anterior.addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { if(np>0) np-=2;
188
else np=10; pregunta(); } }); Respuestas.addMouseListener(new java.awt.event.MouseAdapter() { @Override public void mouseClicked(java.awt.event.MouseEvent evt) { pregunta.setText(""); instrucciones[1].setText(""); muestrapregunta(r.getr(0), r.getr(1)); } }); } public void muestrapregunta(String texto, String opc){ pregunta.setText(texto); pregunta.setVisible(true); instrucciones[1].setText(opc); instrucciones[1].setVisible(true); } public void limpiar(){ for(int i=0; i<23; i++){ vertical[i].setBackground(Color.white); vertical[i].setText(""); } for(int i=0; i<26; i++){ horizontal[i].setBackground(Color.white); horizontal[i].setText(""); } } public void pregunta(){ pregunta.setText(""); instrucciones[1].setText(""); muestrapregunta(p.getp(np),p.getp(np+1)); } public void valida(){ String resp[] = new String[6]; int aciertos=0, malas=0; resp[0]=""; resp[1]=""; resp[2]=""; //verticales resp[3]=""; resp[4]=""; resp[5]=""; //horizontales for(int i=0; i<6; i++) resp[0]+=vertical[i].getText(); for(int i=6; i<13; i++) resp[1]+=vertical[i].getText(); for(int i=13; i<23; i++) resp[2]+=vertical[i].getText(); if(resp[0].toUpperCase().equals("GRUPOS")){ aciertos++; for(int i=0; i<6; i++) vertical[i].setBackground(new Color(4,214,88)); } else{ for(int i=0; i<6; i++) vertical[i].setBackground(new Color(250,99,91)); } if(resp[1].toUpperCase().equals("ORBITAL")){ aciertos++; for(int i=6; i<13; i++) vertical[i].setBackground(new Color(4,214,88)); } else{
189
for(int i=6; i<13; i++) vertical[i].setBackground(new Color(250,99,91)); } if(resp[2].toUpperCase().equals("TRANSICION")||resp[2].toUpperCase().equals("TRANSICIÓN")){ aciertos++; for(int i=13; i<23; i++) vertical[i].setBackground(new Color(4,214,88)); } else{ for(int i=13; i<23; i++) vertical[i].setBackground(new Color(250,99,91)); } for(int i=0; i<14; i++){ if(i==0) resp[3]+=vertical[1].getText(); else if(i==2) resp[3]+=vertical[7].getText(); else if(i==8) resp[3]+=vertical[13].getText(); if(i<12) resp[3]+=horizontal[i].getText(); } for(int i=14; i<22; i++){ if(i==14) resp[4]+=vertical[19].getText(); resp[4]+=horizontal[(i-2)].getText(); } for(int i=20; i<26; i++){ if(i==24) resp[5]+=vertical[21].getText(); resp[5]+=horizontal[i].getText(); } if(resp[3].toUpperCase().equals("REPRESENTATIVOS")){ aciertos++; for(int i=0; i<12; i++) horizontal[i].setBackground(new Color(4,214,88)); } else{ for(int i=0; i<12; i++) horizontal[i].setBackground(new Color(250,99,91)); } if(resp[4].toUpperCase().equals("CRECIENTE")){ aciertos++; for(int i=12; i<20; i++) horizontal[i].setBackground(new Color(4,214,88)); } else{ for(int i=12; i<20; i++) horizontal[i].setBackground(new Color(250,99,91)); } if(resp[5].toUpperCase().equals("PERIODO")){ aciertos++; for(int i=20; i<26; i++) horizontal[i].setBackground(new Color(4,214,88)); } else{ for(int i=20; i<26; i++) horizontal[i].setBackground(new Color(250,99,91)); } malas=aciertos-6; if (malas<0) malas*=-1; pregunta.setText(""); if(malas>0) muestrapregunta(("\nAciertos: " + aciertos +"\n\nMalas: "+ malas), "<<RESULTADO>>"); else
190
muestrapregunta("Felicidades, tus respuestas son correctas", "<<RESULTADO>>"); } } public class Preguntas { private final String p[]={"1. El sistema periódico solo es una representación\n gráfica de los elementos los cuales están ordenados\n en 18 columnas verticales llamadas...", "Vertical", "4. Además todos los elementos de este grupo, incluyendo\n el hidrógeno (H) tienen sólo 1 electrón en la capa de valencia,\n y dicho electrón se encuentra en un _______ de tipo “s”.", "Vertical", "9. A estos elementos de ___________pertenecen el Cu, Ag,\n Au, Hg, teniendo sus electrones de valencia en el orbital d,\n además son utilizados en la construcción de diversos objetos\n de nuestra vida cotidiana: el cobre de los cables de \n" + "electricidad; el mercurio de los termómetros; la plata y\n el oro usados en joyerías.", "Vertical", "2. Los grupos fueron clasificados utilizando las letras\n A o B,en donde la letra A se asigna a los elementos\n denominados ___________.","Horizontal", "8. Actualmente los elementos están ordenados según número\n atómico (Z) en forma ______, gracias al aporte de Henry \nMoseley.","Horizontal", "10. Los elementos están ordenados en siete filas \nhorizontales, llamadas____________","Horizontal"}; Preguntas(){} public String getp(int i){ return p[i]; } } public class Respuestas { private final String r[]={"1. GRUPOS\t4. ORBITAL\t9. TRANSICION\n2. REPRESENTATIVOS\t3. CRECIENTE\t4.PERIODO", "Respuestas"}; public String getr(int i){ return r[i]; } } import javax.swing.JTextField; import javax.swing.text.AttributeSet; import javax.swing.text.BadLocationException; import javax.swing.text.PlainDocument; public class Limite extends PlainDocument{ private JTextField miJTextField; private int nroMaxCaracteres; public Limite(JTextField mijtext, int nroMaxCaract){ miJTextField=mijtext; nroMaxCaracteres=nroMaxCaract; } @Override public void insertString(int arg0, String arg1, AttributeSet arg2) throws BadLocationException{ for (int i=0;i<arg1.length();i++){ if ((miJTextField.getText().length()+arg1.length())>nroMaxCaracteres){ miJTextField.transferFocus(); return; }else if (!Character.isLetter(arg1.charAt(i)) && !Character.isSpaceChar(arg1.charAt(i))) return; } super.insertString(arg0, arg1, arg2); } }
ELECTRONEGATIVIDAD package electronegatividad;
191
import java.applet.Applet; import java.awt.*; /** * * @author Hugo */ public class Electronegatividad extends Applet{ Elemento elemento[]; int x=20,y=0,py=62,px=51,col=0,fila=0; Color c; int index; double electronegatividad[]={2.20,0.98,0.93,0.82,0.82,0.79,0.7,1.57,1.31,1,0.95,0.89,0.89,1.36, 1.54,1.63,1.66,1.55,1.83,1.88,1.91,1.9,1.65,1.81,2.01,2.18,2.55,2.96,3,1.22,1.33,1.6,2.16, 1.9,2.2,2.28,2.2,1.93,1.69,1.78,1.96,2.05,2.1,2.66,2.6,1.27,1.3,1.5,2.36,1.9,2.2,2.2,2.28, 2.54,2,2.04,2.33,2.02,2,2.2,0,1.3,0,0,0,0,0,0,0,0,0,1.61,1.9,2.19,2.58,3.16,0,2.04,2.55,3.04, 3.44,3.98,0,0,1.1,1.12,1.13,1.14,1.13,1.17,1.2,1.2,1.1,1.22,1.23,1.24,1.25,1.1,1.1,1.3,1.5, 1.38,1.36,1.28,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3,1.3}; @Override public void init(){ this.setLayout ( null ); elemento = new Elemento[112]; for(int i=0;i<112;i++){ if(i<7){ y+=31; c=new Color(248,199,91); } else if(i>6&&i<13){ c=new Color(112,152,61); if(i==7){ y=31; x=51; } y+=31; } else if(i>12&&i<29){ if(i==13){ y=124; x=51; } x+=31; } else if(i>28&&i<45){ if(i==29){ y=155; x=51; } x+=31; } else if(i>44&&i<61){ if(i==45){ y=186; x=51; } x+=31; } else if(i>60&&i<71){ if(i==61){ y=217; x=51; } x+=31; } else if(i>70&&i<77){ if(i==71){ y=93; x=361; } x+=31; } else if(i>76&&i<83){ if(i==77){ y=62; x=361; } x+=31; } else if(i==83){ y=31; } else if(i>83&&i<98){ c=new Color(129,191,214); if(i==84){ x=82; y=258; } else x+=31; } else{ if(i==98){ y=289; x=82; } else x+=31; c=new Color(193,99,188);} if(i>12&&i<23||i>28&&i<39||i>44&&i<55||i>60&&i<71) c=new Color(236,163,234); else if(i==77||i==71||i==23||i==39||i==55) c=new Color(167,94,165); else if(i==78||i==72||i==24||i==40||i==56) c=new Color(221,135,218); else if(i==79||i==73||i==25||i==41||i==57) c=new Color(176,145,187); else if(i==80||i==81||i==74||i==75||i==26||i==27||i==42||i==43||i==58||i==59) c=new Color(222,217,223); else if(i==83||i==82||i==76||i==28||i==44||i==60) c=new Color(173,200,64); elemento[i]=new Elemento(this,x,y,30,30,c,i); add(elemento[i]); } } @Override public void paint(Graphics g){ super.paint(g); double aux; g.setColor(new Color(112,152,61)); g.drawLine(15, 400, 608, 400); g.drawLine(650, 31, 650, 350); g.drawLine(640, 41, 650, 31); g.drawLine(660, 41, 650, 31); g.drawLine(598, 390, 608, 400); g.drawLine(598, 410, 608, 400); g.setColor(Color.black); for(int h=0;h<112;h++){ if(h==this.index){ g.drawString("Electronegatividad de " + Elemento.elementos[h] + " :", 180, 50); String aString = Double.toString(electronegatividad[h]);
192
if(electronegatividad[h]==0) g.drawString("Sin datos", 350 ,50); else g.drawString(aString, 350 ,50); } } g.setColor(Color.RED); if(this.fila==1){ aux=(electronegatividad[0])*20; g.fillOval(51, (400-(int)aux), 4, 4);//Fila 1 g.drawString(Elemento.elementos[0], 46, 415); aux=(electronegatividad[83])*20; g.fillOval(532,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[83], 527, 415); } else if(this.fila==2){ aux=(electronegatividad[1])*20; g.fillOval(51, (400-(int)aux), 4, 4);//Fila 2 g.drawString(Elemento.elementos[1], 46, 415); aux=(electronegatividad[7])*20; g.fillOval(82,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[7], 77, 415); px=82+31; for(int j=77;j<=82;j++){ aux=(electronegatividad[j])*20; g.fillOval(px,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[j], (px-5), 415); px+=31; } } else if(this.fila==3){ aux=(electronegatividad[2])*20; g.fillOval(51, (400-(int)aux), 4, 4);//Fila 2 g.drawString(Elemento.elementos[2], 46, 415); aux=(electronegatividad[8])*20; g.fillOval(82,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[8], 77, 415); px=82+31; for(int j=71;j<=76;j++){ aux=(electronegatividad[j])*20; g.fillOval(px,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[j], (px-5), 415); px+=31; } } else if(this.fila==4){ aux=(electronegatividad[3])*20; g.fillOval(51, (400-(int)aux), 4, 4);//Fila 2 g.drawString(Elemento.elementos[3], 46, 415); aux=(electronegatividad[9])*20; g.fillOval(82,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[9], 77, 415); px=82+31; for(int j=13;j<=28;j++){ aux=(electronegatividad[j])*20; g.fillOval(px,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[j], (px-5), 415); px+=31; } } else if(this.fila==5){ aux=(electronegatividad[4])*20; g.fillOval(51, (400-(int)aux), 4, 4);//Fila 2 g.drawString(Elemento.elementos[4], 46, 415); aux=(electronegatividad[10])*20; g.fillOval(82,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[10], 77, 415); px=82+31; for(int j=29;j<=44;j++){ aux=(electronegatividad[j])*20;
193
g.fillOval(px,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[j], (px-5), 415); px+=31; } } else if(this.fila==6){ aux=(electronegatividad[5])*20; g.fillOval(51, (400-(int)aux), 4, 4);//Fila 2 g.drawString(Elemento.elementos[5], 46, 415); aux=(electronegatividad[11])*20; g.fillOval(82,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[11], 77, 415); px=82+31; for(int j=45;j<=60;j++){ aux=(electronegatividad[j])*20; g.fillOval(px,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[j], (px-5), 415); px+=31; } } else if(this.fila==7){ aux=(electronegatividad[6])*20; g.fillOval(51, (400-(int)aux), 4, 4);//Fila 2 g.drawString(Elemento.elementos[6], 46, 415); aux=(electronegatividad[12])*20; g.fillOval(82,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[12], 77, 415); px=82+31; for(int j=61;j<=70;j++){ aux=(electronegatividad[j])*20; g.fillOval(px,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[j], (px-5), 415); px+=31; } } else if(this.fila==8){ px=51; for(int j=84;j<=97;j++){ aux=(electronegatividad[j])*20; g.fillOval(px,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[j], (px-5), 415); px+=31; } } else if(this.fila==9){ px=51; for(int j=98;j<=111;j++){ aux=(electronegatividad[j])*20; g.fillOval(px,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[j], (px-5), 415); px+=31; } } if(this.col==1){ for(int j=0; j<7;j++){ aux=(electronegatividad[j])*20; g.fillOval((650+(int)aux), py, 4, 4);//Columna 1 g.drawString(Elemento.elementos[j], 630, (py+10)); py+=31; } } if(this.col==2){ for(int j=7; j<=12;j++){ aux=(electronegatividad[j])*20; g.fillOval((650+(int)aux), py, 4, 4);//Columna 1 g.drawString(Elemento.elementos[j], 630, (py+10)); py+=31;
194
} } if(this.col==3){ aux=(electronegatividad[13])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[13], 630, (py+10)); py+=31; aux=(electronegatividad[29])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[29], 630, (py+10)); py+=31; aux=(electronegatividad[45])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[45], 630, (py+10)); py+=31; aux=(electronegatividad[61])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[61], 630, (py+10)); py+=31; } if(this.col==4){ aux=(electronegatividad[14])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[14], 630, (py+10)); py+=31; aux=(electronegatividad[30])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[30], 630, (py+10)); py+=31; aux=(electronegatividad[46])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[46], 630, (py+10)); py+=31; aux=(electronegatividad[62])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[62], 630, (py+10)); py+=31; } if(this.col==5){ aux=(electronegatividad[15])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[15], 630, (py+10)); py+=31; aux=(electronegatividad[31])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[31], 630, (py+10)); py+=31; aux=(electronegatividad[47])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[47], 630, (py+10)); py+=31; aux=(electronegatividad[63])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[63], 630, (py+10)); py+=31; } if(this.col==6){ aux=(electronegatividad[16])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[16], 630, (py+10)); py+=31; aux=(electronegatividad[32])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[32], 630, (py+10)); py+=31; aux=(electronegatividad[48])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[48], 630, (py+10)); py+=31;
195
aux=(electronegatividad[64])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[64], 630, (py+10)); py+=31; } if(this.col==7){ aux=(electronegatividad[17])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[17], 630, (py+10)); py+=31; aux=(electronegatividad[33])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[33], 630, (py+10)); py+=31; aux=(electronegatividad[49])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[49], 630, (py+10)); py+=31; aux=(electronegatividad[65])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[65], 630, (py+10)); py+=31; } if(this.col==8){ aux=(electronegatividad[18])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[18], 630, (py+10)); py+=31; aux=(electronegatividad[34])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[34], 630, (py+10)); py+=31; aux=(electronegatividad[50])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[50], 630, (py+10)); py+=31; aux=(electronegatividad[66])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[66], 630, (py+10)); py+=31; } if(this.col==9){ aux=(electronegatividad[19])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[19], 630, (py+10)); py+=31; aux=(electronegatividad[35])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[35], 630, (py+10)); py+=31; aux=(electronegatividad[51])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[51], 630, (py+10)); py+=31; aux=(electronegatividad[67])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[67], 630, (py+10)); py+=31; } if(this.col==10){ aux=(electronegatividad[20])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[20], 630, (py+10)); py+=31; aux=(electronegatividad[36])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[36], 630, (py+10)); py+=31; aux=(electronegatividad[52])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[52], 630, (py+10));
196
py+=31; aux=(electronegatividad[68])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[68], 630, (py+10)); py+=31; } if(this.col==11){ aux=(electronegatividad[21])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[21], 630, (py+10)); py+=31; aux=(electronegatividad[37])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[37], 630, (py+10)); py+=31; aux=(electronegatividad[53])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[53], 630, (py+10)); py+=31; aux=(electronegatividad[69])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[69], 630, (py+10)); py+=31; } if(this.col==12){ aux=(electronegatividad[22])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[22], 630, (py+10)); py+=31; aux=(electronegatividad[38])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[38], 630, (py+10)); py+=31; aux=(electronegatividad[54])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[54], 630, (py+10)); py+=31; aux=(electronegatividad[70])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[70], 630, (py+10)); py+=31; } if(this.col==13){ aux=(electronegatividad[77])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[77], 630, (py+10)); py+=31; aux=(electronegatividad[71])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[71], 630, (py+10)); py+=31; aux=(electronegatividad[23])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[23], 630, (py+10)); py+=31; aux=(electronegatividad[39])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[39], 630, (py+10)); py+=31; aux=(electronegatividad[55])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[55], 630, (py+10)); py+=31; } if(this.col==14){ aux=(electronegatividad[78])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[78], 630, (py+10)); py+=31; aux=(electronegatividad[72])*20; g.fillOval((650+(int)aux), py, 4, 4);
197
g.drawString(Elemento.elementos[72], 630, (py+10)); py+=31; aux=(electronegatividad[24])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[24], 630, (py+10)); py+=31; aux=(electronegatividad[40])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[40], 630, (py+10)); py+=31; aux=(electronegatividad[56])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[56], 630, (py+10)); py+=31; } if(this.col==15){ aux=(electronegatividad[79])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[79], 630, (py+10)); py+=31; aux=(electronegatividad[73])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[73], 630, (py+10)); py+=31; aux=(electronegatividad[25])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[25], 630, (py+10)); py+=31; aux=(electronegatividad[41])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[41], 630, (py+10)); py+=31; aux=(electronegatividad[57])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[57], 630, (py+10)); py+=31; } if(this.col==16){ aux=(electronegatividad[80])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[80], 630, (py+10)); py+=31; aux=(electronegatividad[74])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[74], 630, (py+10)); py+=31; aux=(electronegatividad[26])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[26], 630, (py+10)); py+=31; aux=(electronegatividad[42])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[42], 630, (py+10)); py+=31; aux=(electronegatividad[58])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[58], 630, (py+10)); py+=31; } if(this.col==17){ aux=(electronegatividad[81])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[81], 630, (py+10)); py+=31; aux=(electronegatividad[75])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[75], 630, (py+10)); py+=31; aux=(electronegatividad[27])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[27], 630, (py+10));
198
py+=31; aux=(electronegatividad[43])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[43], 630, (py+10)); py+=31; aux=(electronegatividad[59])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[59], 630, (py+10)); py+=31; } if(this.col==18){ aux=(electronegatividad[83])*20; g.fillOval((650+(int)aux), 62, 4, 4); g.drawString(Elemento.elementos[83], 630, 72); aux=(electronegatividad[82])*20; g.fillOval((650+(int)aux), 93, 4, 4); g.drawString(Elemento.elementos[82], 630, 103); aux=(electronegatividad[76])*20; g.fillOval((650+(int)aux), 124, 4, 4);//Columna 18 g.drawString(Elemento.elementos[76], 630, 134); aux=(electronegatividad[28])*20; g.fillOval((650+(int)aux), 155, 4, 4); g.drawString(Elemento.elementos[28], 630, 165); aux=(electronegatividad[44])*20; g.fillOval((650+(int)aux), 186, 4, 4); g.drawString(Elemento.elementos[44], 630, 196); aux=(electronegatividad[60])*20; g.fillOval((650+(int)aux), 217, 4, 4); g.drawString(Elemento.elementos[60], 630, 227); } } public void grafica(int index){ this.index=index; this.py=62; this.px=51; columnas(this.index); repaint(); } public void columnas(int index){ if(index==0||index==83){ fila=1; if(index==0) col=1; else col=18; } else if(index==1||index==7||index==77||index==78||index==79||index==80||index==81||index==82){ fila=2; if(index==1) col=1; else if (index==7) col=2; else if (index==77) col=13; else if (index==78) col=14; else if (index==79) col=15; else if (index==80) col=16; else if (index==81) col=17; else col=18; } else if(index==2||index==8||index==71||index==72||index==73||index==74||index==75||index==76){ fila=3; if(index==2) col=1;
199
else if (index==8) col=2; else if (index==71) col=13; else if (index==72) col=14; else if (index==73) col=15; else if (index==74) col=16; else if (index==75) col=17; else col=18; } else if(index==3||index==9||(index>=13&&index<=28)){ fila=4; if(index==3) col=1; else if (index==9) col=2; else{ for(int z=13;z<=28;z++){ int aux=z-10; if(z==index) col=aux; } } } else if(index==4||index==10||(index>=29&&index<=44)){ fila=5; if(index==4) col=1; else if (index==10) col=2; else{ for(int z=29;z<=44;z++){ int aux=z-26; if(z==index) col=aux; } } } else if(index==5||index==11||(index>=45&&index<=60)){ fila=6; if(index==5) col=1; else if (index==11) col=2; else{ for(int z=45;z<=60;z++){ int aux=z-42; if(z==index) col=aux; } } } else if(index==6||index==12||(index>=61&&index<=70)){ fila=7; if(index==6) col=1; else if (index==12) col=2; else{ for(int z=61;z<=70;z++){ int aux=z-58; if(z==index) col=aux; } } }
200
else if(index>=84&&index<=97){ fila=8; for(int z=84;z<=97;z++){ int aux=z-81; if(z==index) col=aux; } } else if(index>=98&&index<=111){ fila=9; for(int z=98;z<=111;z++){ int aux=z-95; if(z==index) col=aux; } } } } package electronegatividad; import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JLabel; /** * * @author Hugo */ public class Elemento extends Canvas implements MouseListener{ int x,y,w,h,WO,index; Electronegatividad formulario; public static String elementos[]={" H"," Li"," Na"," K"," Rb"," Cs"," Fr"," Be"," Mg"," Ca"," Sr"," Ba", " Ra"," Sc"," Ti"," V"," Cr"," Mn"," Fe"," Co"," Ni"," Cu"," Zn"," Ga"," Ge"," As", " Se"," Br"," Kr"," Y"," Zr"," Nb"," Mo"," Tc"," Ru"," Rh"," Pd"," Ag"," Cd"," In", " Sn"," Sb"," Te"," I"," Xe"," Lu"," Hf"," Ta"," W"," Re"," Os"," Ir"," Pt"," Au", " Hg"," Tl"," Pb"," Bi"," Po"," At"," Rn"," Lr"," Rf"," Db"," Sg"," Ns"," Hs"," Mt", " Uun"," Uuu"," Uub"," Al"," Si"," P"," S"," Cl"," Ar"," B"," C"," N"," O"," F", " Ne"," He"," La"," Ce"," Pr"," Nd"," Pm"," Sm"," Eu"," Gd"," Tb"," Dy"," Ho"," Er", " Tm"," Yb"," Ac"," Th"," Pa"," U"," Np"," Pu"," Am"," Cm"," Bk"," Cf"," Es"," Fm", " Md"," No"}; JLabel ele; public Elemento(){} public Elemento(Electronegatividad g,int x,int y, int w ,int h,Color c, int index){ this.x=x; this.y=y; this.w=w; this.h=h; WO=w; ele = new JLabel(); ele.setBounds(x, y, w, h); ele.setOpaque(true); ele.setBackground(c); ele.setForeground(Color.BLACK); ele.setText(elementos[index]); ele.setVisible(true); ele.addMouseListener(this); this.index=index; g.add(ele).setBounds(x, y, w, h); formulario= g; } @Override public void paint(Graphics g){ } public void setImgOver(Image over){
201
} public void setImage(Image up){ } public void setImagePress(Image press){ repaint(); } public void mouseClicked(MouseEvent e) { formulario.grafica(index); } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { w=w-3; h=h-3; ele.setBounds(x+2, y+2, w, h); } public void mouseExited(MouseEvent e) { if((w+3)>=WO){ w=w+3; h=h+3; ele.setBounds(x, y, w, h); } } }
RADIO ATÓMICO package radioatomico; import java.applet.Applet; import java.awt.*; /** * * @author Hugo */ public class Radiatomico extends Applet{ Elemento elemento[]; int x=20,y=0,py=62,px=51,col=0,fila=0; Color c; int index; double electronegatividad[]={0.79,1.55,1.9,2.35,2.48,2.67,2.7,1.12,1.6,1.97,2.15,2.22,2.23, 1.62,1.47,1.34,1.27,1.26,1.26,1.25,1.24,1.28,1.38,1.41,1.37,1.39,1.4,1.12,1.03,1.81,1.6,1.46, 1.39,1.36,1.34,1.34,1.38,1.44,1.54,1.66,1.62,1.59,1.6,1.32,1.31,1.74,1.58,1.46,1.39,1.37,1.35, 1.36,1.38,1.44,1.57,1.71,1.75,1.7,1.76,1.43,1.34,0,0,0,0,0,0,0,0,0,0,1.43,1.32,1.28,1.27,0.97, 0.88,0.98,0.914,0.92,0.65,0.57,0.51,0.49,1.87,1.81,1.82,1.82,1.83,1.66,2.04,1.79,1.77,1.77,1.76, 1.75,1.74,1.92,1.88,1.74,1.63,1.56,1.55,1.63,1.73,1.74,1.7,1.86,1.86,0,0,0}; @Override public void init(){ this.setLayout ( null ); elemento = new Elemento[112]; for(int i=0;i<112;i++){ if(i<7){ y+=31; c=new Color(248,199,91); } else if(i>6&&i<13){ c=new Color(112,152,61); if(i==7){ y=31; x=51; } y+=31; } else if(i>12&&i<29){ if(i==13){ y=124; x=51; } x+=31; } else if(i>28&&i<45){ if(i==29){ y=155; x=51; } x+=31; } else if(i>44&&i<61){ if(i==45){ y=186; x=51; } x+=31; } else if(i>60&&i<71){ if(i==61){ y=217; x=51; } x+=31; }
202
else if(i>70&&i<77){ if(i==71){ y=93; x=361; } x+=31; } else if(i>76&&i<83){ if(i==77){ y=62; x=361; } x+=31; } else if(i==83){ y=31; } else if(i>83&&i<98){ c=new Color(129,191,214); if(i==84){ x=82; y=258; } else x+=31; } else{ if(i==98){ y=289; x=82; } else x+=31; c=new Color(193,99,188);} if(i>12&&i<23||i>28&&i<39||i>44&&i<55||i>60&&i<71) c=new Color(236,163,234); else if(i==77||i==71||i==23||i==39||i==55) c=new Color(167,94,165); else if(i==78||i==72||i==24||i==40||i==56) c=new Color(221,135,218); else if(i==79||i==73||i==25||i==41||i==57) c=new Color(176,145,187); else if(i==80||i==81||i==74||i==75||i==26||i==27||i==42||i==43||i==58||i==59) c=new Color(222,217,223); else if(i==83||i==82||i==76||i==28||i==44||i==60) c=new Color(173,200,64); elemento[i]=new Elemento(this,x,y,30,30,c,i); add(elemento[i]); } } @Override public void paint(Graphics g){ super.paint(g); double aux; g.setColor(new Color(112,152,61)); g.drawLine(15, 400, 608, 400); g.drawLine(650, 31, 650, 350); g.drawLine(640, 340, 650, 350); g.drawLine(660, 340, 650, 350); g.drawLine(25, 390, 15, 400); g.drawLine(25, 410, 15, 400); g.setColor(Color.black); for(int h=0;h<112;h++){ if(h==this.index){ g.drawString("Radio Atómico de " + Elemento.elementos[h] + " :", 180, 50); String aString = Double.toString(electronegatividad[h]); if(electronegatividad[h]==0) g.drawString("Sin datos", 350 ,50); else g.drawString(aString, 350 ,50); } } g.setColor(Color.RED); if(this.fila==1){ aux=(electronegatividad[0])*20; g.fillOval(51, (400-(int)aux), 4, 4);//Fila 1 g.drawString(Elemento.elementos[0], 46, 415); aux=(electronegatividad[83])*20; g.fillOval(532,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[83], 527, 415); } else if(this.fila==2){ aux=(electronegatividad[1])*20; g.fillOval(51, (400-(int)aux), 4, 4);//Fila 2 g.drawString(Elemento.elementos[1], 46, 415); aux=(electronegatividad[7])*20; g.fillOval(82,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[7], 77, 415); px=82+31; for(int j=77;j<=82;j++){ aux=(electronegatividad[j])*20; g.fillOval(px,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[j], (px-5), 415); px+=31; } } else if(this.fila==3){
203
aux=(electronegatividad[2])*20; g.fillOval(51, (400-(int)aux), 4, 4);//Fila 2 g.drawString(Elemento.elementos[2], 46, 415); aux=(electronegatividad[8])*20; g.fillOval(82,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[8], 77, 415); px=82+31; for(int j=71;j<=76;j++){ aux=(electronegatividad[j])*20; g.fillOval(px,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[j], (px-5), 415); px+=31; } } else if(this.fila==4){ aux=(electronegatividad[3])*20; g.fillOval(51, (400-(int)aux), 4, 4);//Fila 2 g.drawString(Elemento.elementos[3], 46, 415); aux=(electronegatividad[9])*20; g.fillOval(82,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[9], 77, 415); px=82+31; for(int j=13;j<=28;j++){ aux=(electronegatividad[j])*20; g.fillOval(px,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[j], (px-5), 415); px+=31; } } else if(this.fila==5){ aux=(electronegatividad[4])*20; g.fillOval(51, (400-(int)aux), 4, 4);//Fila 2 g.drawString(Elemento.elementos[4], 46, 415); aux=(electronegatividad[10])*20; g.fillOval(82,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[10], 77, 415); px=82+31; for(int j=29;j<=44;j++){ aux=(electronegatividad[j])*20; g.fillOval(px,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[j], (px-5), 415); px+=31; } } else if(this.fila==6){ aux=(electronegatividad[5])*20; g.fillOval(51, (400-(int)aux), 4, 4);//Fila 2 g.drawString(Elemento.elementos[5], 46, 415); aux=(electronegatividad[11])*20; g.fillOval(82,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[11], 77, 415); px=82+31; for(int j=45;j<=60;j++){ aux=(electronegatividad[j])*20; g.fillOval(px,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[j], (px-5), 415); px+=31; } } else if(this.fila==7){ aux=(electronegatividad[6])*20; g.fillOval(51, (400-(int)aux), 4, 4);//Fila 2 g.drawString(Elemento.elementos[6], 46, 415); aux=(electronegatividad[12])*20; g.fillOval(82,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[12], 77, 415); px=82+31; for(int j=61;j<=70;j++){ aux=(electronegatividad[j])*20; g.fillOval(px,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[j], (px-5), 415);
204
px+=31; } } else if(this.fila==8){ px=51; for(int j=84;j<=97;j++){ aux=(electronegatividad[j])*20; g.fillOval(px,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[j], (px-5), 415); px+=31; } } else if(this.fila==9){ px=51; for(int j=98;j<=111;j++){ aux=(electronegatividad[j])*20; g.fillOval(px,(400-(int)aux), 4, 4); g.drawString(Elemento.elementos[j], (px-5), 415); px+=31; } } if(this.col==1){ for(int j=0; j<7;j++){ aux=(electronegatividad[j])*20; g.fillOval((650+(int)aux), py, 4, 4);//Columna 1 g.drawString(Elemento.elementos[j], 630, (py+10)); py+=31; } } if(this.col==2){ for(int j=7; j<=12;j++){ aux=(electronegatividad[j])*20; g.fillOval((650+(int)aux), py, 4, 4);//Columna 1 g.drawString(Elemento.elementos[j], 630, (py+10)); py+=31; } } if(this.col==3){ aux=(electronegatividad[13])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[13], 630, (py+10)); py+=31; aux=(electronegatividad[29])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[29], 630, (py+10)); py+=31; aux=(electronegatividad[45])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[45], 630, (py+10)); py+=31; aux=(electronegatividad[61])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[61], 630, (py+10)); py+=31; } if(this.col==4){ aux=(electronegatividad[14])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[14], 630, (py+10)); py+=31; aux=(electronegatividad[30])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[30], 630, (py+10)); py+=31; aux=(electronegatividad[46])*20;
205
g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[46], 630, (py+10)); py+=31; aux=(electronegatividad[62])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[62], 630, (py+10)); py+=31; } if(this.col==5){ aux=(electronegatividad[15])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[15], 630, (py+10)); py+=31; aux=(electronegatividad[31])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[31], 630, (py+10)); py+=31; aux=(electronegatividad[47])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[47], 630, (py+10)); py+=31; aux=(electronegatividad[63])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[63], 630, (py+10)); py+=31; } if(this.col==6){ aux=(electronegatividad[16])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[16], 630, (py+10)); py+=31; aux=(electronegatividad[32])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[32], 630, (py+10)); py+=31; aux=(electronegatividad[48])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[48], 630, (py+10)); py+=31; aux=(electronegatividad[64])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[64], 630, (py+10)); py+=31; } if(this.col==7){ aux=(electronegatividad[17])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[17], 630, (py+10)); py+=31; aux=(electronegatividad[33])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[33], 630, (py+10)); py+=31; aux=(electronegatividad[49])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[49], 630, (py+10)); py+=31; aux=(electronegatividad[65])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[65], 630, (py+10)); py+=31; } if(this.col==8){ aux=(electronegatividad[18])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[18], 630, (py+10)); py+=31; aux=(electronegatividad[34])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[34], 630, (py+10)); py+=31;
206
aux=(electronegatividad[50])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[50], 630, (py+10)); py+=31; aux=(electronegatividad[66])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[66], 630, (py+10)); py+=31; } if(this.col==9){ aux=(electronegatividad[19])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[19], 630, (py+10)); py+=31; aux=(electronegatividad[35])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[35], 630, (py+10)); py+=31; aux=(electronegatividad[51])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[51], 630, (py+10)); py+=31; aux=(electronegatividad[67])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[67], 630, (py+10)); py+=31; } if(this.col==10){ aux=(electronegatividad[20])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[20], 630, (py+10)); py+=31; aux=(electronegatividad[36])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[36], 630, (py+10)); py+=31; aux=(electronegatividad[52])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[52], 630, (py+10)); py+=31; aux=(electronegatividad[68])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[68], 630, (py+10)); py+=31; } if(this.col==11){ aux=(electronegatividad[21])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[21], 630, (py+10)); py+=31; aux=(electronegatividad[37])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[37], 630, (py+10)); py+=31; aux=(electronegatividad[53])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[53], 630, (py+10)); py+=31; aux=(electronegatividad[69])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[69], 630, (py+10)); py+=31; } if(this.col==12){ aux=(electronegatividad[22])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[22], 630, (py+10)); py+=31; aux=(electronegatividad[38])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[38], 630, (py+10));
207
py+=31; aux=(electronegatividad[54])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[54], 630, (py+10)); py+=31; aux=(electronegatividad[70])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[70], 630, (py+10)); py+=31; } if(this.col==13){ aux=(electronegatividad[77])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[77], 630, (py+10)); py+=31; aux=(electronegatividad[71])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[71], 630, (py+10)); py+=31; aux=(electronegatividad[23])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[23], 630, (py+10)); py+=31; aux=(electronegatividad[39])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[39], 630, (py+10)); py+=31; aux=(electronegatividad[55])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[55], 630, (py+10)); py+=31; } if(this.col==14){ aux=(electronegatividad[78])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[78], 630, (py+10)); py+=31; aux=(electronegatividad[72])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[72], 630, (py+10)); py+=31; aux=(electronegatividad[24])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[24], 630, (py+10)); py+=31; aux=(electronegatividad[40])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[40], 630, (py+10)); py+=31; aux=(electronegatividad[56])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[56], 630, (py+10)); py+=31; } if(this.col==15){ aux=(electronegatividad[79])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[79], 630, (py+10)); py+=31; aux=(electronegatividad[73])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[73], 630, (py+10)); py+=31; aux=(electronegatividad[25])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[25], 630, (py+10)); py+=31; aux=(electronegatividad[41])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[41], 630, (py+10)); py+=31;
208
aux=(electronegatividad[57])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[57], 630, (py+10)); py+=31; } if(this.col==16){ aux=(electronegatividad[80])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[80], 630, (py+10)); py+=31; aux=(electronegatividad[74])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[74], 630, (py+10)); py+=31; aux=(electronegatividad[26])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[26], 630, (py+10)); py+=31; aux=(electronegatividad[42])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[42], 630, (py+10)); py+=31; aux=(electronegatividad[58])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[58], 630, (py+10)); py+=31; } if(this.col==17){ aux=(electronegatividad[81])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[81], 630, (py+10)); py+=31; aux=(electronegatividad[75])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[75], 630, (py+10)); py+=31; aux=(electronegatividad[27])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[27], 630, (py+10)); py+=31; aux=(electronegatividad[43])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[43], 630, (py+10)); py+=31; aux=(electronegatividad[59])*20; g.fillOval((650+(int)aux), py, 4, 4); g.drawString(Elemento.elementos[59], 630, (py+10)); py+=31; } if(this.col==18){ aux=(electronegatividad[83])*20; g.fillOval((650+(int)aux), 62, 4, 4); g.drawString(Elemento.elementos[83], 630, 72); aux=(electronegatividad[82])*20; g.fillOval((650+(int)aux), 93, 4, 4); g.drawString(Elemento.elementos[82], 630, 103); aux=(electronegatividad[76])*20; g.fillOval((650+(int)aux), 124, 4, 4);//Columna 18 g.drawString(Elemento.elementos[76], 630, 134); aux=(electronegatividad[28])*20; g.fillOval((650+(int)aux), 155, 4, 4); g.drawString(Elemento.elementos[28], 630, 165); aux=(electronegatividad[44])*20; g.fillOval((650+(int)aux), 186, 4, 4); g.drawString(Elemento.elementos[44], 630, 196); aux=(electronegatividad[60])*20; g.fillOval((650+(int)aux), 217, 4, 4); g.drawString(Elemento.elementos[60], 630, 227); } }
209
public void grafica(int index){ this.index=index; this.py=62; this.px=51; columnas(this.index); repaint(); } public void columnas(int index){ if(index==0||index==83){ fila=1; if(index==0) col=1; else col=18; } else if(index==1||index==7||index==77||index==78||index==79||index==80||index==81||index==82){ fila=2; if(index==1) col=1; else if (index==7) col=2; else if (index==77) col=13; else if (index==78) col=14; else if (index==79) col=15; else if (index==80) col=16; else if (index==81) col=17; else col=18; } else if(index==2||index==8||index==71||index==72||index==73||index==74||index==75||index==76){ fila=3; if(index==2) col=1; else if (index==8) col=2; else if (index==71) col=13; else if (index==72) col=14; else if (index==73) col=15; else if (index==74) col=16; else if (index==75) col=17; else col=18; } else if(index==3||index==9||(index>=13&&index<=28)){ fila=4; if(index==3) col=1; else if (index==9) col=2; else{ for(int z=13;z<=28;z++){ int aux=z-10; if(z==index) col=aux; } } } else if(index==4||index==10||(index>=29&&index<=44)){ fila=5; if(index==4)
210
col=1; else if (index==10) col=2; else{ for(int z=29;z<=44;z++){ int aux=z-26; if(z==index) col=aux; } } } else if(index==5||index==11||(index>=45&&index<=60)){ fila=6; if(index==5) col=1; else if (index==11) col=2; else{ for(int z=45;z<=60;z++){ int aux=z-42; if(z==index) col=aux; } } } else if(index==6||index==12||(index>=61&&index<=70)){ fila=7; if(index==6) col=1; else if (index==12) col=2; else{ for(int z=61;z<=70;z++){ int aux=z-58; if(z==index) col=aux; } } } else if(index>=84&&index<=97){ fila=8; for(int z=84;z<=97;z++){ int aux=z-81; if(z==index) col=aux; } } else if(index>=98&&index<=111){ fila=9; for(int z=98;z<=111;z++){ int aux=z-95; if(z==index) col=aux; } } } } package radioatomico; import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import javax.swing.JLabel; /** * * @author Hugo */ public class Elemento extends Canvas implements MouseListener{ int x,y,w,h,WO,index;
211
Radiatomico formulario; public static String elementos[]={" H"," Li"," Na"," K"," Rb"," Cs"," Fr"," Be"," Mg"," Ca"," Sr"," Ba", " Ra"," Sc"," Ti"," V"," Cr"," Mn"," Fe"," Co"," Ni"," Cu"," Zn"," Ga"," Ge"," As", " Se"," Br"," Kr"," Y"," Zr"," Nb"," Mo"," Tc"," Ru"," Rh"," Pd"," Ag"," Cd"," In", " Sn"," Sb"," Te"," I"," Xe"," Lu"," Hf"," Ta"," W"," Re"," Os"," Ir"," Pt"," Au", " Hg"," Tl"," Pb"," Bi"," Po"," At"," Rn"," Lr"," Rf"," Db"," Sg"," Ns"," Hs"," Mt", " Uun"," Uuu"," Uub"," Al"," Si"," P"," S"," Cl"," Ar"," B"," C"," N"," O"," F", " Ne"," He"," La"," Ce"," Pr"," Nd"," Pm"," Sm"," Eu"," Gd"," Tb"," Dy"," Ho"," Er", " Tm"," Yb"," Ac"," Th"," Pa"," U"," Np"," Pu"," Am"," Cm"," Bk"," Cf"," Es"," Fm", " Md"," No"}; JLabel ele; public Elemento(){} public Elemento(Radiatomico g,int x,int y, int w ,int h,Color c, int index){ this.x=x; this.y=y; this.w=w; this.h=h; WO=w; ele = new JLabel(); ele.setBounds(x, y, w, h); ele.setOpaque(true); ele.setBackground(c); ele.setForeground(Color.BLACK); ele.setText(elementos[index]); ele.setVisible(true); ele.addMouseListener(this); this.index=index; g.add(ele).setBounds(x, y, w, h); formulario= g; } @Override public void paint(Graphics g){ } public void setImgOver(Image over){ } public void setImage(Image up){ } public void setImagePress(Image press){ repaint(); } public void mouseClicked(MouseEvent e) { formulario.grafica(index); } public void mousePressed(MouseEvent e) { } public void mouseReleased(MouseEvent e) { } public void mouseEntered(MouseEvent e) { w=w-3; h=h-3; ele.setBounds(x+2, y+2, w, h); } public void mouseExited(MouseEvent e) { if((w+3)>=WO){ w=w+3; h=h+3; ele.setBounds(x, y, w, h); } }
212
}
PARTÍCULAS ATÓMICAS package { import flash.display.MovieClip; import flash.text.TextField; import flash.display.SimpleButton; import flash.events.MouseEvent; public class Main extends MovieClip { public var nel:Elemento; public var c:Comprobar; public static var nintentos:int; public function Main() { this.stop(); natomicotxt.border=true; nmasicotxt.border=true; protonestxt.border=true; neutronestxt.border=true; electronestxt.border=true; restxt.border=false; natomicotxt.background=true; nmasicotxt.background=true; protonestxt.background=true; neutronestxt.background=true; electronestxt.background=true; nel=new Elemento(); c=new Comprobar(); nuevobtn.addEventListener(MouseEvent.CLICK, ir); comprobarbtn.addEventListener(MouseEvent.CLICK, comprobar); ayudabtn.addEventListener(MouseEvent.CLICK, irayuda); } public function ir(event:MouseEvent):void{ nintentos=0; natomicotxt.backgroundColor=0xFFFFFF; nmasicotxt.backgroundColor=0xFFFFFF; protonestxt.backgroundColor=0xFFFFFF; neutronestxt.backgroundColor=0xFFFFFF; electronestxt.backgroundColor=0xFFFFFF; natomicotxt.text=""; nmasicotxt.text=""; protonestxt.text=""; neutronestxt.text=""; electronestxt.text=""; restxt.text=""; gotoAndStop((nel.mostrarElemento(this.currentLabel))); } public function irayuda(event:MouseEvent):void{ nintentos=0; natomicotxt.backgroundColor=0xFFFFFF; nmasicotxt.backgroundColor=0xFFFFFF; protonestxt.backgroundColor=0xFFFFFF; neutronestxt.backgroundColor=0xFFFFFF; electronestxt.backgroundColor=0xFFFFFF; natomicotxt.text=""; nmasicotxt.text=""; protonestxt.text=""; neutronestxt.text=""; electronestxt.text="";
213
restxt.text=""; gotoAndStop("ayuda"); } public function comprobar(event:MouseEvent):void{ var r:Array=new Array(); var resultado:Array=new Array(); var nb:int; nintentos++; if(nintentos<=2){ nintentos nb=0; var mar:String; //Determinar en que elemento estamos mar=currentLabel; r[0] = natomicotxt.text; r[1] = nmasicotxt.text; r[2] = protonestxt.text; //Recuperar valores dados por usuario r[3] = neutronestxt.text; r[4] = electronestxt.text; resultado=c.evaluar(r,mar); //Evaluar resultados if(resultado[0]==0){ natomicotxt.backgroundColor=0xFF6633; } else{ natomicotxt.backgroundColor=0xFFFFFF; nb++; } if(resultado[1]==0){ nmasicotxt.backgroundColor=0xFF6633; } else{ nmasicotxt.backgroundColor=0xFFFFFF; nb++; } if(resultado[2]==0){ protonestxt.backgroundColor=0xFF6633; } else{ protonestxt.backgroundColor=0xFFFFFF; nb++; } if(resultado[3]==0){ neutronestxt.backgroundColor=0xFF6633; } else{ neutronestxt.backgroundColor=0xFFFFFF; nb++; } if(resultado[4]==0){ electronestxt.backgroundColor=0xFF6633; } else{ electronestxt.backgroundColor=0xFFFFFF; nb++; } if(nb==5) restxt.text="Correcto"; else restxt.text="Incorrecto"; }
214
else{ restxt.text="Respuesta "; if (currentLabel=="Te"){ natomicotxt.backgroundColor=0xFF9933; nmasicotxt.backgroundColor=0xFF9933; protonestxt.backgroundColor=0xFF9933; neutronestxt.backgroundColor=0xFF9933; electronestxt.backgroundColor=0xFF9933; natomicotxt.text="52"; nmasicotxt.text="128"; protonestxt.text="52"; neutronestxt.text="76"; electronestxt.text="55"; } else if(currentLabel=="Pt"){ natomicotxt.backgroundColor=0xFF9933; nmasicotxt.backgroundColor=0xFF9933; protonestxt.backgroundColor=0xFF9933; neutronestxt.backgroundColor=0xFF9933; electronestxt.backgroundColor=0xFF9933; natomicotxt.text="78"; nmasicotxt.text="195"; protonestxt.text="78"; neutronestxt.text="117"; electronestxt.text="78"; } else if(currentLabel=="Re"){ natomicotxt.backgroundColor=0xFF9933; nmasicotxt.backgroundColor=0xFF9933; protonestxt.backgroundColor=0xFF9933; neutronestxt.backgroundColor=0xFF9933; electronestxt.backgroundColor=0xFF9933; natomicotxt.text="75"; nmasicotxt.text="186"; protonestxt.text="75"; neutronestxt.text="111"; electronestxt.text="75"; } else if(currentLabel=="Ba"){ natomicotxt.backgroundColor=0xFF9933; nmasicotxt.backgroundColor=0xFF9933; protonestxt.backgroundColor=0xFF9933; neutronestxt.backgroundColor=0xFF9933; electronestxt.backgroundColor=0xFF9933; natomicotxt.text="56"; nmasicotxt.text="137"; protonestxt.text="56"; neutronestxt.text="81"; electronestxt.text="56"; } else if(currentLabel=="O"){ natomicotxt.backgroundColor=0xFF9933; nmasicotxt.backgroundColor=0xFF9933; protonestxt.backgroundColor=0xFF9933; neutronestxt.backgroundColor=0xFF9933; electronestxt.backgroundColor=0xFF9933; natomicotxt.text="8"; nmasicotxt.text="16"; protonestxt.text="8"; neutronestxt.text="8"; electronestxt.text="8"; } else if(currentLabel=="Au"){ natomicotxt.backgroundColor=0xFF9933; nmasicotxt.backgroundColor=0xFF9933; protonestxt.backgroundColor=0xFF9933; neutronestxt.backgroundColor=0xFF9933; electronestxt.backgroundColor=0xFF9933; natomicotxt.text="79"; nmasicotxt.text="197"; protonestxt.text="79";
215
neutronestxt.text="118"; electronestxt.text="76"; } else if(currentLabel=="P"){ natomicotxt.backgroundColor=0xFF9933; nmasicotxt.backgroundColor=0xFF9933; protonestxt.backgroundColor=0xFF9933; neutronestxt.backgroundColor=0xFF9933; electronestxt.backgroundColor=0xFF9933; natomicotxt.text="31"; nmasicotxt.text="15"; protonestxt.text="15"; neutronestxt.text="16"; electronestxt.text="18"; } else if(currentLabel=="Na"){ natomicotxt.backgroundColor=0xFF9933; nmasicotxt.backgroundColor=0xFF9933; protonestxt.backgroundColor=0xFF9933; neutronestxt.backgroundColor=0xFF9933; electronestxt.backgroundColor=0xFF9933; natomicotxt.text="23"; nmasicotxt.text="11"; protonestxt.text="11"; neutronestxt.text="12"; electronestxt.text="11"; } } } } } package { public class Elemento { public function Elemento() { } public function mostrarElemento(marco:String=""):String { var irframe:String=""; if(marco=="Te") irframe="Pt"; else if(marco=="Pt") irframe="Re"; else if(marco=="Re") irframe="Ba"; else if(marco=="Ba") irframe="O"; else if(marco=="O") irframe="Au"; else if(marco=="Au") irframe="P"; else if(marco=="P") irframe="Na"; else if(marco=="Na") irframe="Te"; else if(marco=="ayuda") irframe="Te"; return irframe; } } } package { public class Comprobar
216
{ public function Comprobar() { } public function evaluar(respuestas:Array, marco:String=""):Array { var resultado:Array=new Array("0","0","0","0","0"); if(marco=="Te"){ if(respuestas[0]=="52") resultado[0]="1"; if(respuestas[1]=="128") resultado[1]="1"; if(respuestas[2]=="52") resultado[2]="1"; if(respuestas[3]=="76") resultado[3]="1"; if(respuestas[4]=="55") resultado[4]="1"; } else if(marco=="Pt"){ if(respuestas[0]=="78") resultado[0]="1"; if(respuestas[1]=="195") resultado[1]="1"; if(respuestas[2]=="78") resultado[2]="1"; if(respuestas[3]=="117") resultado[3]="1"; if(respuestas[4]=="78") resultado[4]="1"; } else if(marco=="Re"){ if(respuestas[0]=="75") resultado[0]="1"; if(respuestas[1]=="186") resultado[1]="1"; if(respuestas[2]=="75") resultado[2]="1"; if(respuestas[3]=="111") resultado[3]="1"; if(respuestas[4]=="75") resultado[4]="1"; } else if(marco=="Ba"){ if(respuestas[0]=="56") resultado[0]="1"; if(respuestas[1]=="137") resultado[1]="1"; if(respuestas[2]=="56") resultado[2]="1"; if(respuestas[3]=="81") resultado[3]="1"; if(respuestas[4]=="56") resultado[4]="1"; } else if(marco=="O"){ if(respuestas[0]=="8") resultado[0]="1"; if(respuestas[1]=="16") resultado[1]="1"; if(respuestas[2]=="8") resultado[2]="1"; if(respuestas[3]=="8") resultado[3]="1"; if(respuestas[4]=="8") resultado[4]="1"; }
217
else if(marco=="Au"){ if(respuestas[0]=="79") resultado[0]="1"; if(respuestas[1]=="197") resultado[1]="1"; if(respuestas[2]=="79") resultado[2]="1"; if(respuestas[3]=="118") resultado[3]="1"; if(respuestas[4]=="76") resultado[4]="1"; } else if(marco=="P"){ if(respuestas[0]=="31") resultado[0]="1"; if(respuestas[1]=="15") resultado[1]="1"; if(respuestas[2]=="15") resultado[2]="1"; if(respuestas[3]=="16") resultado[3]="1"; if(respuestas[4]=="18") resultado[4]="1"; } else if(marco=="Na"){ if(respuestas[0]=="23") resultado[0]="1"; if(respuestas[1]=="11") resultado[1]="1"; if(respuestas[2]=="11") resultado[2]="1"; if(respuestas[3]=="12") resultado[3]="1"; if(respuestas[4]=="11") resultado[4]="1"; } return resultado; } } }
MEMORAMA. MODELOS ATÓMICOS package { import flash.display.MovieClip; import flash.events.MouseEvent; import flash.text.TextField; import flash.utils.Timer; import flash.events.TimerEvent; import flash.events.Event; public class Main extends MovieClip { public var xy:Array=new Array(); public var myTimer:Timer; public var prueba:Pares=new Pares(); //variable para comprobar pares public var nc:int; public var voltear:Boolean=false; public var cadena:String; public var np:uint; public var endgame:Boolean=false; public var tiempojuego:Cronometro; public var parbueno:Array=new Array(0, 0, 0, 0, 0, 0, 0, 0, 0); public function Main() { this.stop(); nc=1; np=0;
218
//DESAPARECER RESPUESTAS dalton.alpha=0; thomson.alpha=0; bohr.alpha=0; rutherford.alpha=0; schrodinger.alpha=0; f1803.alpha=0; f1904.alpha=0; f1913.alpha=0; f1911.alpha=0; f1926.alpha=0; m_dalton.alpha=0; m_thomson.alpha=0; m_bohr.alpha=0; m_rutherford.alpha=0; m_schrodinger.alpha=0; c_dalton.alpha=0; c_thomson.alpha=0; c_bohr.alpha=0; c_rutherford.alpha=0; c_schrodinger.alpha=0; tiempo.border=true; //Manejar 10 minutos para resolver crucigrama //Convertir en botones todos las cartas de crucigrama quitagregaboton("agrega"); dalton.buttonMode = true; dalton.useHandCursor = true; thomson.buttonMode = true; thomson.useHandCursor = true; bohr.buttonMode = true; bohr.useHandCursor = true; rutherford.buttonMode = true; rutherford.useHandCursor = true; schrodinger.buttonMode = true; schrodinger.useHandCursor = true; f1803.buttonMode = true; f1803.useHandCursor = true; f1904.buttonMode = true; f1904.useHandCursor = true; f1913.buttonMode = true; f1913.useHandCursor = true; f1911.buttonMode = true; f1911.useHandCursor = true; f1926.buttonMode = true; f1926.useHandCursor = true; m_dalton.buttonMode = true; m_dalton.useHandCursor = true; m_thomson.buttonMode = true; m_thomson.useHandCursor = true; m_bohr.buttonMode = true; m_bohr.useHandCursor = true; m_rutherford.buttonMode = true; m_rutherford.useHandCursor = true; m_schrodinger.buttonMode = true; m_schrodinger.useHandCursor = true; c_dalton.buttonMode = true; c_dalton.useHandCursor = true; c_thomson.buttonMode = true; c_thomson.useHandCursor = true; c_bohr.buttonMode = true; c_bohr.useHandCursor = true; c_rutherford.buttonMode = true; c_rutherford.useHandCursor = true; c_schrodinger.buttonMode = true; c_schrodinger.useHandCursor = true;
219
//ORDENAR CARTAS EN TABLERO de manera aleatoria random ordenar(); tiempojuego=new Cronometro(tiempo) tiempojuego.iniciarCronometro(); startbtn.addEventListener(MouseEvent.CLICK, iniciar); tiempojuego.addEventListener(Cronometro.VALUE_CHANGED, onModelChanged); } private function onModelChanged(e:Event):void { if(np<10){ juego.text="Game Over"; } endgame=true; quitagregaboton("quita"); } public function iniciar(event:MouseEvent):void{ nc=1; np=0; parbueno= new Array(0, 0, 0, 0, 0, 0, 0, 0, 0); tiempojuego.reiniciarCronometro(); tiempojuego.iniciarCronometro(); //ordenar de manera aleatoria ordenar(); //desaparecer cartas dalton.alpha=0; thomson.alpha=0; bohr.alpha=0; rutherford.alpha=0; schrodinger.alpha=0; f1803.alpha=0; f1904.alpha=0; f1913.alpha=0; f1911.alpha=0; f1926.alpha=0; m_dalton.alpha=0; m_thomson.alpha=0; m_bohr.alpha=0; m_rutherford.alpha=0; m_schrodinger.alpha=0; c_dalton.alpha=0; c_thomson.alpha=0; c_bohr.alpha=0; c_rutherford.alpha=0; c_schrodinger.alpha=0; prueba.carta1(null); prueba.carta2(null); juego.text=""; endgame=false; quitagregaboton("iniciaar"); } function quitagregaboton(opcion:String){ if(opcion=="quita"){ dalton.removeEventListener(MouseEvent.CLICK, mdalton); thomson.removeEventListener(MouseEvent.CLICK, mthomson); bohr.removeEventListener(MouseEvent.CLICK, mbohr); rutherford.removeEventListener(MouseEvent.CLICK, mrutherford); schrodinger.removeEventListener(MouseEvent.CLICK, mschrodinger); f1803.removeEventListener(MouseEvent.CLICK, mf1803);
220
f1904.removeEventListener(MouseEvent.CLICK, mf1904); f1913.removeEventListener(MouseEvent.CLICK, mf1913); f1911.removeEventListener(MouseEvent.CLICK, mf1911); f1926.removeEventListener(MouseEvent.CLICK, mf1926); m_dalton.removeEventListener(MouseEvent.CLICK, mm_dalton); m_thomson.removeEventListener(MouseEvent.CLICK, mm_thomson); m_bohr.removeEventListener(MouseEvent.CLICK, mm_bohr); m_rutherford.removeEventListener(MouseEvent.CLICK, mm_rutherford); m_schrodinger.removeEventListener(MouseEvent.CLICK, mm_schrodinger); c_dalton.removeEventListener(MouseEvent.CLICK, mc_dalton); c_thomson.removeEventListener(MouseEvent.CLICK, mc_thomson); c_bohr.removeEventListener(MouseEvent.CLICK, mc_bohr); c_rutherford.removeEventListener(MouseEvent.CLICK, mc_rutherford); c_schrodinger.removeEventListener(MouseEvent.CLICK, mc_schrodinger); } else{ if(!endgame){ if(parbueno[0]!=1){ dalton.addEventListener(MouseEvent.CLICK, mdalton); f1803.addEventListener(MouseEvent.CLICK, mf1803); } if(parbueno[1]!=1){ thomson.addEventListener(MouseEvent.CLICK, mthomson); f1904.addEventListener(MouseEvent.CLICK, mf1904); } if(parbueno[2]!=1){ bohr.addEventListener(MouseEvent.CLICK, mbohr); f1913.addEventListener(MouseEvent.CLICK, mf1913); } if(parbueno[3]!=1){ rutherford.addEventListener(MouseEvent.CLICK, mrutherford); f1911.addEventListener(MouseEvent.CLICK, mf1911); } if(parbueno[4]!=1){ schrodinger.addEventListener(MouseEvent.CLICK, mschrodinger); f1926.addEventListener(MouseEvent.CLICK, mf1926); } if(parbueno[5]!=1){ m_dalton.addEventListener(MouseEvent.CLICK, mm_dalton); c_dalton.addEventListener(MouseEvent.CLICK, mc_dalton); } if(parbueno[6]!=1){ m_thomson.addEventListener(MouseEvent.CLICK, mm_thomson); c_thomson.addEventListener(MouseEvent.CLICK, mc_thomson); } if(parbueno[7]!=1){ m_bohr.addEventListener(MouseEvent.CLICK, mm_bohr); c_bohr.addEventListener(MouseEvent.CLICK, mc_bohr); } if(parbueno[8]!=1){ m_rutherford.addEventListener(MouseEvent.CLICK, mm_rutherford); c_rutherford.addEventListener(MouseEvent.CLICK, mc_rutherford); } if(parbueno[9]!=1){ m_schrodinger.addEventListener(MouseEvent.CLICK, mm_schrodinger); c_schrodinger.addEventListener(MouseEvent.CLICK, mc_schrodinger); } }
221
} } //MOSTRAR CARTA SELECCIONADA function mdalton(myEvent:MouseEvent){ dalton.alpha=1; if(nc==1){ prueba.carta1("dalton"); } else{ prueba.carta2("dalton"); voltear=prueba.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("dalton"); mostrarcarta(); } } nc++; } function mthomson(myEvent:MouseEvent){ thomson.alpha=1; if(nc==1){ prueba.carta1("thomson"); } else{ prueba.carta2("thomson"); voltear=prueba.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("thomson"); mostrarcarta(); } } nc++; } function mbohr(myEvent:MouseEvent){ bohr.alpha=1; if(nc==1){ prueba.carta1("bohr"); } else{ prueba.carta2("bohr"); voltear=prueba.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("bohr"); mostrarcarta(); } } nc++; } function mrutherford(myEvent:MouseEvent){ rutherford.alpha=1; if(nc==1){ prueba.carta1("rutherford"); } else{ prueba.carta2("rutherford"); voltear=prueba.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){
222
quitagregaboton("quita"); setcarta("rutherford"); mostrarcarta(); } } nc++; } function mschrodinger(myEvent:MouseEvent){ schrodinger.alpha=1; if(nc==1){ prueba.carta1("schrodinger"); } else{ prueba.carta2("schrodinger"); voltear=prueba.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("schrodinger"); mostrarcarta(); } } nc++; } function mf1803(myEvent:MouseEvent){ f1803.alpha=1; if(nc==1){ prueba.carta1("f1803"); } else{ prueba.carta2("f1803"); voltear=prueba.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("f1803"); mostrarcarta(); } } nc++; } function mf1904(myEvent:MouseEvent){ f1904.alpha=1; if(nc==1){ prueba.carta1("f1904"); } else{ prueba.carta2("f1904"); voltear=prueba.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("f1904"); mostrarcarta(); } } nc++; } function mf1913(myEvent:MouseEvent){ f1913.alpha=1; if(nc==1){ prueba.carta1("f1913"); } else{
223
prueba.carta2("f1913"); voltear=prueba.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("f1913"); mostrarcarta(); } } nc++; } function mf1911(myEvent:MouseEvent){ f1911.alpha=1; if(nc==1){ prueba.carta1("f1911"); } else{ prueba.carta2("f1911"); voltear=prueba.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("f1911"); mostrarcarta(); } } nc++; } function mf1926(myEvent:MouseEvent){ f1926.alpha=1; if(nc==1){ prueba.carta1("f1926"); } else{ prueba.carta2("f1926"); voltear=prueba.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("f1926"); mostrarcarta(); } } nc++; } function mm_dalton(myEvent:MouseEvent){ m_dalton.alpha=1; if(nc==1){ prueba.carta1("m_dalton"); } else{ prueba.carta2("m_dalton"); voltear=prueba.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("m_dalton"); mostrarcarta(); } } nc++; } function mm_thomson(myEvent:MouseEvent){
224
m_thomson.alpha=1; if(nc==1){ prueba.carta1("m_thomson"); } else{ prueba.carta2("m_thomson"); voltear=prueba.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("m_thomson"); mostrarcarta(); } } nc++; } function mm_bohr(myEvent:MouseEvent){ m_bohr.alpha=1; if(nc==1){ prueba.carta1("m_bohr"); } else{ prueba.carta2("m_bohr"); voltear=prueba.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("m_bohr"); mostrarcarta(); } } nc++; } function mm_rutherford(myEvent:MouseEvent){ m_rutherford.alpha=1; if(nc==1){ prueba.carta1("m_rutherford"); } else{ prueba.carta2("m_rutherford"); voltear=prueba.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("m_rutherford"); mostrarcarta(); } } nc++; } function mm_schrodinger(myEvent:MouseEvent){ m_schrodinger.alpha=1; if(nc==1){ prueba.carta1("m_schrodinger"); } else{ prueba.carta2("m_schrodinger"); voltear=prueba.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("m_schrodinger"); mostrarcarta(); }
225
} nc++; } function mc_dalton(myEvent:MouseEvent){ c_dalton.alpha=1; if(nc==1){ prueba.carta1("c_dalton"); } else{ prueba.carta2("c_dalton"); voltear=prueba.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("c_dalton"); mostrarcarta(); } } nc++; } function mc_thomson(myEvent:MouseEvent){ c_thomson.alpha=1; if(nc==1){ prueba.carta1("c_thomson"); } else{ prueba.carta2("c_thomson"); voltear=prueba.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("c_thomson"); mostrarcarta(); } } nc++; } function mc_bohr(myEvent:MouseEvent){ c_bohr.alpha=1; if(nc==1){ prueba.carta1("c_bohr"); } else{ prueba.carta2("c_bohr"); voltear=prueba.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("c_bohr"); mostrarcarta(); } } nc++; } function mc_rutherford(myEvent:MouseEvent){ c_rutherford.alpha=1; if(nc==1){ prueba.carta1("c_rutherford"); } else{ prueba.carta2("c_rutherford"); voltear=prueba.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0;
226
if(!voltear){ quitagregaboton("quita"); setcarta("c_rutherford"); mostrarcarta(); } } nc++; } function mc_schrodinger(myEvent:MouseEvent){ c_schrodinger.alpha=1; if(nc==1){ prueba.carta1("c_schrodinger"); } else{ prueba.carta2("c_schrodinger"); voltear=prueba.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("c_schrodinger"); mostrarcarta(); } } nc++; } //ORDENAR DE MANERA ALEATORIA LAS CARTAS function ordenar():void{ var aleatorio:Array=new Array(); var i:int; var na:int; //cx:Coordenadas en 'x' cy:Coordenadas en 'y' var cx:Array=new Array(13.1,142.9,272.7,402.4); var cy:Array=new Array(54.7,114.1,171.3,231.6,291.3); var j:int; var h:int; h=0; //valor aleatorio entre 0 y 20. (20 cartas), sin repetir valores aleatorio[0]=randomNumber(1, 20); for(i=1;i<20;i++){ na=randomNumber(1, 20); if(validAleatorio(aleatorio,na)) while(validAleatorio(aleatorio,na)) na=randomNumber(1, 20); aleatorio[i]=na; } //COORDENADAS DEL TABLERO for(i=0;i<5;i++){ for(j=0;j<4;j++){ xy[h]=cx[j]; h++; xy[h]=cy[i]; h++; } } dalton.x=xy[getcoordenadaX(aleatorio[0])]; dalton.y=xy[getcoordenadaY(aleatorio[0])]; thomson.x=xy[getcoordenadaX(aleatorio[1])]; thomson.y=xy[getcoordenadaY(aleatorio[1])]; bohr.x=xy[getcoordenadaX(aleatorio[2])]; bohr.y=xy[getcoordenadaY(aleatorio[2])]; rutherford.x=xy[getcoordenadaX(aleatorio[3])]; rutherford.y=xy[getcoordenadaY(aleatorio[3])]; schrodinger.x=xy[getcoordenadaX(aleatorio[4])]; schrodinger.y=xy[getcoordenadaY(aleatorio[4])];
227
f1803.x=xy[getcoordenadaX(aleatorio[5])]; f1803.y=xy[getcoordenadaY(aleatorio[5])]; f1904.x=xy[getcoordenadaX(aleatorio[6])]; f1904.y=xy[getcoordenadaY(aleatorio[6])]; f1913.x=xy[getcoordenadaX(aleatorio[7])]; f1913.y=xy[getcoordenadaY(aleatorio[7])]; f1911.x=xy[getcoordenadaX(aleatorio[8])]; f1911.y=xy[getcoordenadaY(aleatorio[8])]; f1926.x=xy[getcoordenadaX(aleatorio[9])]; f1926.y=xy[getcoordenadaY(aleatorio[9])]; m_dalton.x=xy[getcoordenadaX(aleatorio[10])]; m_dalton.y=xy[getcoordenadaY(aleatorio[10])]; m_thomson.x=xy[getcoordenadaX(aleatorio[11])]; m_thomson.y=xy[getcoordenadaY(aleatorio[11])]; m_bohr.x=xy[getcoordenadaX(aleatorio[12])]; m_bohr.y=xy[getcoordenadaY(aleatorio[12])]; m_rutherford.x=xy[getcoordenadaX(aleatorio[13])]; m_rutherford.y=xy[getcoordenadaY(aleatorio[13])]; m_schrodinger.x=xy[getcoordenadaX(aleatorio[14])]; m_schrodinger.y=xy[getcoordenadaY(aleatorio[14])]; c_dalton.x=xy[getcoordenadaX(aleatorio[15])]; c_dalton.y=xy[getcoordenadaY(aleatorio[15])]; c_thomson.x=xy[getcoordenadaX(aleatorio[16])]; c_thomson.y=xy[getcoordenadaY(aleatorio[16])]; c_bohr.x=xy[getcoordenadaX(aleatorio[17])]; c_bohr.y=xy[getcoordenadaY(aleatorio[17])]; c_rutherford.x=xy[getcoordenadaX(aleatorio[18])]; c_rutherford.y=xy[getcoordenadaY(aleatorio[18])]; c_schrodinger.x=xy[getcoordenadaX(aleatorio[19])]; c_schrodinger.y=xy[getcoordenadaY(aleatorio[19])]; } function controlCartas(){ if(voltear){ //SI LA RESPUESTA ES CORRECTA if(prueba.getcarta1()=="dalton"||prueba.getcarta1()=="f1803") //determinar que carta dejar volteada { dalton.alpha=0.7; f1803.alpha=0.7; dalton.removeEventListener(MouseEvent.CLICK, mdalton); f1803.removeEventListener(MouseEvent.CLICK, mf1803); parbueno[0]=1; np++; } else if(prueba.getcarta1()=="thomson"||prueba.getcarta1()=="f1904"){ thomson.alpha=0.7; f1904.alpha=0.7; thomson.removeEventListener(MouseEvent.CLICK, mthomson); f1904.removeEventListener(MouseEvent.CLICK, mf1904); parbueno[1]=1; np++; } else if(prueba.getcarta1()=="bohr"||prueba.getcarta1()=="f1913"){ bohr.alpha=0.7; f1913.alpha=0.7; bohr.removeEventListener(MouseEvent.CLICK, mbohr); f1913.removeEventListener(MouseEvent.CLICK, mf1913); parbueno[2]=1; np++; } else if(prueba.getcarta1()=="rutherford"||prueba.getcarta1()=="f1911"){ rutherford.alpha=0.7; f1911.alpha=0.7; rutherford.removeEventListener(MouseEvent.CLICK, mrutherford); f1911.removeEventListener(MouseEvent.CLICK, mf1911); parbueno[3]=1; np++; } else if(prueba.getcarta1()=="schrodinger"||prueba.getcarta1()=="f1926"){ schrodinger.alpha=0.7; f1926.alpha=0.7;
228
schrodinger.removeEventListener(MouseEvent.CLICK, mschrodinger); f1926.removeEventListener(MouseEvent.CLICK, mf1926); parbueno[4]=1; np++; } else if(prueba.getcarta1()=="m_dalton"||prueba.getcarta1()=="c_dalton"){ m_dalton.alpha=0.7; c_dalton.alpha=0.7; m_dalton.removeEventListener(MouseEvent.CLICK, mm_dalton); c_dalton.removeEventListener(MouseEvent.CLICK, mc_dalton); parbueno[5]=1; np++; } else if(prueba.getcarta1()=="m_thomson"||prueba.getcarta1()=="c_thomson"){ m_thomson.alpha=0.7; c_thomson.alpha=0.7; m_thomson.removeEventListener(MouseEvent.CLICK, mm_thomson); c_thomson.removeEventListener(MouseEvent.CLICK, mc_thomson); parbueno[6]=1; np++; } else if(prueba.getcarta1()=="m_bohr"||prueba.getcarta1()=="c_bohr"){ m_bohr.alpha=0.7; c_bohr.alpha=0.7; m_bohr.removeEventListener(MouseEvent.CLICK, mm_bohr); c_bohr.removeEventListener(MouseEvent.CLICK, mc_bohr); parbueno[7]=1; np++; } else if(prueba.getcarta1()=="m_rutherford"||prueba.getcarta1()=="c_rutherford"){ m_rutherford.alpha=0.7; c_rutherford.alpha=0.7; m_rutherford.removeEventListener(MouseEvent.CLICK, mm_rutherford); c_rutherford.removeEventListener(MouseEvent.CLICK, mc_rutherford); parbueno[8]=1; np++; } else if(prueba.getcarta1()=="m_schrodinger"||prueba.getcarta1()=="c_schrodinger"){ m_schrodinger.alpha=0.7; c_schrodinger.alpha=0.7; m_schrodinger.removeEventListener(MouseEvent.CLICK, mm_schrodinger); c_schrodinger.removeEventListener(MouseEvent.CLICK, mc_schrodinger); parbueno[9]=1; np++; } } else { volteacarta(prueba.getcarta1(),0); volteacarta(prueba.getcarta2(),0); } if(np==10) juego.text="Felicidades"; } function volteacarta(carta:String, transparecia:Number):void{ if(carta=="dalton") dalton.alpha=transparecia; else if(carta=="f1803") f1803.alpha=transparecia; else if(carta=="thomson") thomson.alpha=transparecia; else if(carta=="f1904") f1904.alpha=transparecia; else if(carta=="bohr") bohr.alpha=transparecia; else if(carta=="f1913") f1913.alpha=transparecia;
229
else if(carta=="rutherford") rutherford.alpha=transparecia; else if(carta=="f1911") f1911.alpha=transparecia; else if(carta=="schrodinger") schrodinger.alpha=transparecia; else if(carta=="f1926") f1926.alpha=transparecia; else if(carta=="m_dalton") m_dalton.alpha=transparecia; else if(carta=="c_dalton") c_dalton.alpha=transparecia; else if(carta=="m_thomson") m_thomson.alpha=transparecia; else if(carta=="c_thomson") c_thomson.alpha=transparecia; else if(carta=="m_bohr") m_bohr.alpha=transparecia; else if(carta=="c_bohr") c_bohr.alpha=transparecia; else if(carta=="m_rutherford") m_rutherford.alpha=transparecia; else if(carta=="c_rutherford") c_rutherford.alpha=transparecia; else if(carta=="m_schrodinger") m_schrodinger.alpha=transparecia; else if(carta=="c_schrodinger") c_schrodinger.alpha=transparecia; } function mostrarcarta(){ myTimer = new Timer(1000, 1); // 1 second myTimer.addEventListener(TimerEvent.TIMER, mosc); myTimer.start(); volteacarta(getcarta(),1); } function mosc(event:TimerEvent):void { volteacarta(getcarta(),0); quitagregaboton("agrega"); myTimer.stop(); } function getcarta():String{ return cadena; } function setcarta(cadena:String):void{ this.cadena=cadena; } function randomNumber(low:Number=0, high:Number=1):Number { return Math.floor(Math.random() * (1+high-low)) + low; } public static function validAleatorio(aleatorio:Array, na:int):Boolean { if (aleatorio.indexOf(na) > -1) return true; else return false; } public function getcoordenadaX(a:int):int { var i:int; i=(a*2)-2; return i; } public function getcoordenadaY(a:int):int
230
{ var i:int; i=(a*2)-1; return i; } } } package { public class Pares { public var n1:String; public var n2:String; public function Pares() { } public function carta1(c1:String) { this.n1=c1; } public function carta2(c2:String) { this.n2=c2; } public function getcarta1():String { return this.n1; } public function getcarta2():String { return this.n2; } public function comprueba():Boolean{ var resultado:Boolean=false; var cc:String; cc=n1+n2; if(cc=="daltonf1803"||cc=="f1803dalton") resultado=true; else if(cc=="thomsonf1904"||cc=="f1904thomson") resultado=true; else if(cc=="bohrf1913"||cc=="f1913bohr") resultado=true; else if(cc=="rutherfordf1911"||cc=="f1911rutherford") resultado=true; else if(cc=="schrodingerf1926"||cc=="f1926schrodinger") resultado=true; else if(cc=="m_daltonc_dalton"||cc=="c_daltonm_dalton") resultado=true; else if(cc=="m_thomsonc_thomson"||cc=="c_thomsonm_thomson") resultado=true; else if(cc=="m_bohrc_bohr"||cc=="c_bohrm_bohr") resultado=true; else if(cc=="m_rutherfordc_rutherford"||cc=="c_rutherfordm_rutherford") resultado=true; else if(cc=="m_schrodingerc_schrodinger"||cc=="c_schrodingerm_schrodinger") resultado=true; return resultado; } } }
231
package { import flash.display.*; import flash.events.*; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.utils.Timer; import flash.utils.getTimer; import flash.events.Event; import flash.events.EventDispatcher; public class Cronometro extends EventDispatcher { private var milesimasXcentecima:uint=10; private var milesimasXsegundo:uint=1000; private var milesimasXminuto:uint=1000 * 60;// 60,000 private var minuto:uint; private var segundo:uint; private var centesima:uint; private var minuto_txt:String; private var segundo_txt:String; private var centesima_txt:String; private var milesimasTranscurridas:uint; private var copiaDe_GetTimer:uint; private var referenciaTemporal:uint; private var temporizador:Timer=new Timer(10,0); private var LIMITE:uint=10; //LIMITE DE TIEMPO DEL JUEGO var led_txt:Object=null; public static const VALUE_CHANGED:String = 'value_changed'; private var finjuego:Boolean=false; public function Cronometro(led_txt:Object) { finjuego=false; this.led_txt=led_txt; led_txt.text="00 : 00 : 00"; temporizador.addEventListener(TimerEvent.TIMER,tickTack); } public function setsomeVariable(newVal:Boolean):void { finjuego = newVal; this.dispatchEvent(new Event(Cronometro.VALUE_CHANGED)); } private function tickTack(e:TimerEvent):void { milesimasTranscurridas=getTimer() - copiaDe_GetTimer; // Si por ejemplo el .SWF lleva abierto 10 segundos (10000 milesimas) y el cronometro se inicio en el segundo 4, // entonses nuestro cronometro lleva 6 segundos transcurridos. 10000 - 4000 = 6000 (6 Segundos) minuto=Math.floor( milesimasTranscurridas / milesimasXminuto); // Ejem: referenciaTemporal es = 287,987 / milesimasXminuto (60,000) = 4.799.. Redondeando 4 Minutos // minuto nunca va ser mayor que 59 referenciaTemporal= milesimasTranscurridas - minuto * milesimasXminuto; // Ejem: referenciaTemporal es 287,987 - (4 Minutos * 60,000 = 240.000 ) = 47,987 // Aca referenciaTemporal nunca va ser mayor de 59.999 //REFERENCIA TEMPORAL LLEVA EL RESIDUO, LO QUE SOBREN DE LOS MINUTOS PARA CALCULAR SEGUNDOS segundo=Math.floor(referenciaTemporal / milesimasXsegundo); // Ejem: referenciaTemporales 47,987 / milesimasXsegundo que son 1000 es = a 47.987 Redondeando 47 segundos // segundo nunca va ser mayor que 59
232
referenciaTemporal=referenciaTemporal - segundo * milesimasXsegundo; // Ejem: referenciaTemporal es 47,987 - (segundo 47 * milesimasXsegundo que son 1000 = 47,000) = 987 // Aca referenciaTemporal nunca va ser mayor que 999 //REFERENCIA TEMPORAL LLEVA EL RESIDUO, LO QUE SOBREN DE LOS SEGUNDOS PARA CALCULAR CENTESIMAS centesima=Math.floor(referenciaTemporal / milesimasXcentecima); // Ejem: ahora referenciaTemporal es 987 / milesimasXcentecima que son 10 es = a 98.7 redondeando 98 centecimas // centesima nunca va ser mayor que 99 // Condicinales que hacen que todos los numeros tengan siempre dos digitos y no uno if(minuto<LIMITE){ if (minuto < 10) { minuto_txt="0" + minuto.toString(); } else { minuto_txt=minuto.toString(); } if (segundo < 10) { segundo_txt="0" + segundo.toString(); } else { segundo_txt=segundo.toString(); } if (centesima < 10) { centesima_txt="0" + centesima.toString(); } else { centesima_txt=centesima.toString(); } // Pasanos todo al campo de texto led_txt.text=minuto_txt + " : " + segundo_txt + " : " + centesima_txt; } else{ reiniciarCronometro(); led_txt.text="00 : 00 : 00"; setsomeVariable(true); } } public function iniciarCronometro():void { finjuego=false; copiaDe_GetTimer=getTimer();// Toma una foto, de las milesimas que han pasado desde el inicio. temporizador.start(); } public function reiniciarCronometro():void { finjuego=false; temporizador.stop(); led_txt.text="00 : 00 : 00"; milesimasTranscurridas=0; } } }
MEMORAMA. TABLA PERIÓDICA package { import flash.display.MovieClip; import flash.events.MouseEvent; import flash.events.Event; import flash.events.TimerEvent; import flash.utils.Timer; import flash.utils.getDefinitionByName; import flash.display.DisplayObject; public class Main extends MovieClip { private var tiempojuego:Cronometro;
233
public var xy:Array=new Array(); public var parbueno:Array=new Array(0, 0, 0, 0, 0, 0); //Los 6 trios posibles public var nc:uint; //Saber si es carta 1, 2 o 3 public var np:uint; //Número de tercias encontradas public var par:Pares=new Pares(); //variable para comprobar pares public var endgame:Boolean=false; public var voltear:Boolean=false; public var myTimer:Timer; public var cadena:String; public var ArrayObjetos:Array; public var indexObjetos:uint; public function Main() { this.stop(); nc=1; np=0; ArrayObjetos = new Array(); indexObjetos=0; convertirbotones(); quitagregaboton("iniciar"); ordenar(); desaparececartas(); //Manejar 10 minutos para resolver crucigrama tiempo.border=true; tiempojuego=new Cronometro(tiempo); tiempojuego.iniciarCronometro(); tiempojuego.addEventListener(Cronometro.VALUE_CHANGED, Findejuego); startbtn.addEventListener(MouseEvent.CLICK, iniciar); } private function convertirbotones(){ henning.buttonMode = true; henning.useHandCursor = true; p.buttonMode = true; p.useHandCursor = true; cerillo.buttonMode = true; cerillo.useHandCursor = true; dobereiner.buttonMode = true; dobereiner.useHandCursor = true; elementos.buttonMode = true; elementos.useHandCursor = true; triadas.buttonMode = true; triadas.useHandCursor = true; beguyer.buttonMode = true; beguyer.useHandCursor = true; helicoidal.buttonMode = true; helicoidal.useHandCursor = true; tornillo.buttonMode = true; tornillo.useHandCursor = true; newlands.buttonMode = true; newlands.useHandCursor = true; octavas.buttonMode = true; octavas.useHandCursor = true; f1863.buttonMode = true; f1863.useHandCursor = true; mendeleiev.buttonMode = true; mendeleiev.useHandCursor = true; masas.buttonMode = true; masas.useHandCursor = true; tabla.buttonMode = true; tabla.useHandCursor = true; ramsey.buttonMode = true; ramsey.useHandCursor = true; cero.buttonMode = true; cero.useHandCursor = true; sne.buttonMode = true; sne.useHandCursor = true;
234
} public function iniciar(event:MouseEvent):void{ nc=1; np=0; indexObjetos=0; parbueno= new Array(0, 0, 0, 0, 0, 0); tiempojuego.reiniciarCronometro(); tiempojuego.iniciarCronometro(); //ordenar de manera aleatoria ordenar(); desaparececartas(); //reiniciar valores de cartas par.setcarta1(null); par.setcarta2(null); par.setcarta3(null); juego.text=""; endgame=false; quitagregaboton("iniciaar"); muevecartasar("","","","quitar"); ArrayObjetos = new Array(); } public function quitagregaboton(opcion:String){ if(opcion=="quita"){ henning.removeEventListener(MouseEvent.CLICK, mhenning); p.removeEventListener(MouseEvent.CLICK, mp); cerillo.removeEventListener(MouseEvent.CLICK, mcerillo); dobereiner.removeEventListener(MouseEvent.CLICK, mdobereiner); elementos.removeEventListener(MouseEvent.CLICK, melementos); triadas.removeEventListener(MouseEvent.CLICK, mtriadas); beguyer.removeEventListener(MouseEvent.CLICK, mbeguyer); helicoidal.removeEventListener(MouseEvent.CLICK, mhelicoidal); tornillo.removeEventListener(MouseEvent.CLICK, mtornillo); newlands.removeEventListener(MouseEvent.CLICK, mnewlands); octavas.removeEventListener(MouseEvent.CLICK, moctavas); f1863.removeEventListener(MouseEvent.CLICK, mf1863); mendeleiev.removeEventListener(MouseEvent.CLICK, mmendeleiev); masas.removeEventListener(MouseEvent.CLICK, mmasas); tabla.removeEventListener(MouseEvent.CLICK, mtabla); ramsey.removeEventListener(MouseEvent.CLICK, mramsey); cero.removeEventListener(MouseEvent.CLICK, mcero); sne.removeEventListener(MouseEvent.CLICK, msne); } else{ if(!endgame){ if(parbueno[0]!=1){ henning.addEventListener(MouseEvent.CLICK, mhenning); p.addEventListener(MouseEvent.CLICK, mp); cerillo.addEventListener(MouseEvent.CLICK, mcerillo); } if(parbueno[1]!=1){ dobereiner.addEventListener(MouseEvent.CLICK, mdobereiner); elementos.addEventListener(MouseEvent.CLICK, melementos); triadas.addEventListener(MouseEvent.CLICK, mtriadas); } if(parbueno[2]!=1){ beguyer.addEventListener(MouseEvent.CLICK, mbeguyer); helicoidal.addEventListener(MouseEvent.CLICK, mhelicoidal); tornillo.addEventListener(MouseEvent.CLICK, mtornillo); } if(parbueno[3]!=1){
235
newlands.addEventListener(MouseEvent.CLICK, mnewlands); octavas.addEventListener(MouseEvent.CLICK, moctavas); f1863.addEventListener(MouseEvent.CLICK, mf1863); } if(parbueno[4]!=1){ mendeleiev.addEventListener(MouseEvent.CLICK, mmendeleiev); masas.addEventListener(MouseEvent.CLICK, mmasas); tabla.addEventListener(MouseEvent.CLICK, mtabla); } if(parbueno[5]!=1){ ramsey.addEventListener(MouseEvent.CLICK, mramsey); cero.addEventListener(MouseEvent.CLICK, mcero); sne.addEventListener(MouseEvent.CLICK, msne); } } } } private function desaparececartas(){ //DESAPARECER CARTAS henning.alpha=0; p.alpha=0; cerillo.alpha=0; dobereiner.alpha=0; elementos.alpha=0; triadas.alpha=0; beguyer.alpha=0; helicoidal.alpha=0; tornillo.alpha=0; newlands.alpha=0; octavas.alpha=0; f1863.alpha=0; mendeleiev.alpha=0; masas.alpha=0; tabla.alpha=0; ramsey.alpha=0; cero.alpha=0; sne.alpha=0; } //MOSTRAR CARTA SELECCIONADA private function mhenning(myEvent:MouseEvent){ henning.alpha=1; if(nc==1){ par.setcarta1("henning"); } else if(nc==2){ par.setcarta2("henning"); } else{ par.setcarta3("henning"); voltear=par.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("henning"); mostrarcarta(); } } nc++; } private function mp(myEvent:MouseEvent){ p.alpha=1; if(nc==1){ par.setcarta1("p"); }
236
else if(nc==2){ par.setcarta2("p"); } else{ par.setcarta3("p"); voltear=par.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("p"); mostrarcarta(); } } nc++; } private function mcerillo(myEvent:MouseEvent){ cerillo.alpha=1; if(nc==1){ par.setcarta1("cerillo"); } else if(nc==2){ par.setcarta2("cerillo"); } else{ par.setcarta3("cerillo"); voltear=par.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("cerillo"); mostrarcarta(); } } nc++; } private function mdobereiner(myEvent:MouseEvent){ dobereiner.alpha=1; if(nc==1){ par.setcarta1("dobereiner"); } else if(nc==2){ par.setcarta2("dobereiner"); } else{ par.setcarta3("dobereiner"); voltear=par.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("dobereiner"); mostrarcarta(); } } nc++; } private function melementos(myEvent:MouseEvent){ elementos.alpha=1; if(nc==1){ par.setcarta1("elementos"); } else if(nc==2){ par.setcarta2("elementos"); } else{ par.setcarta3("elementos");
237
voltear=par.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("elementos"); mostrarcarta(); } } nc++; } private function mtriadas(myEvent:MouseEvent){ triadas.alpha=1; if(nc==1){ par.setcarta1("triadas"); } else if(nc==2){ par.setcarta2("triadas"); } else{ par.setcarta3("triadas"); voltear=par.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("triadas"); mostrarcarta(); } } nc++; } private function mbeguyer(myEvent:MouseEvent){ beguyer.alpha=1; if(nc==1){ par.setcarta1("beguyer"); } else if(nc==2){ par.setcarta2("beguyer"); } else{ par.setcarta3("beguyer"); voltear=par.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("beguyer"); mostrarcarta(); } } nc++; } private function mhelicoidal(myEvent:MouseEvent){ helicoidal.alpha=1; if(nc==1){ par.setcarta1("helicoidal"); } else if(nc==2){ par.setcarta2("helicoidal"); } else{ par.setcarta3("helicoidal"); voltear=par.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita");
238
setcarta("helicoidal"); mostrarcarta(); } } nc++; } private function mtornillo(myEvent:MouseEvent){ tornillo.alpha=1; if(nc==1){ par.setcarta1("tornillo"); } else if(nc==2){ par.setcarta2("tornillo"); } else{ par.setcarta3("tornillo"); voltear=par.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("tornillo"); mostrarcarta(); } } nc++; } private function mnewlands(myEvent:MouseEvent){ newlands.alpha=1; if(nc==1){ par.setcarta1("newlands"); } else if(nc==2){ par.setcarta2("newlands"); } else{ par.setcarta3("newlands"); voltear=par.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("newlands"); mostrarcarta(); } } nc++; } private function moctavas(myEvent:MouseEvent){ octavas.alpha=1; if(nc==1){ par.setcarta1("octavas"); } else if(nc==2){ par.setcarta2("octavas"); } else{ par.setcarta3("octavas"); voltear=par.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("octavas"); mostrarcarta(); } } nc++;
239
} private function mf1863(myEvent:MouseEvent){ f1863.alpha=1; if(nc==1){ par.setcarta1("f1863"); } else if(nc==2){ par.setcarta2("f1863"); } else{ par.setcarta3("f1863"); voltear=par.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("f1863"); mostrarcarta(); } } nc++; } private function mmendeleiev(myEvent:MouseEvent){ mendeleiev.alpha=1; if(nc==1){ par.setcarta1("mendeleiev"); } else if(nc==2){ par.setcarta2("mendeleiev"); } else{ par.setcarta3("mendeleiev"); voltear=par.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("mendeleiev"); mostrarcarta(); } } nc++; } private function mmasas(myEvent:MouseEvent){ masas.alpha=1; if(nc==1){ par.setcarta1("masas"); } else if(nc==2){ par.setcarta2("masas"); } else{ par.setcarta3("masas"); voltear=par.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("masas"); mostrarcarta(); } } nc++; } private function mtabla(myEvent:MouseEvent){ tabla.alpha=1; if(nc==1){
240
par.setcarta1("tabla"); } else if(nc==2){ par.setcarta2("tabla"); } else{ par.setcarta3("tabla"); voltear=par.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("tabla"); mostrarcarta(); } } nc++; } private function mramsey(myEvent:MouseEvent){ ramsey.alpha=1; if(nc==1){ par.setcarta1("ramsey"); } else if(nc==2){ par.setcarta2("ramsey"); } else{ par.setcarta3("ramsey"); voltear=par.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("ramsey"); mostrarcarta(); } } nc++; } private function mcero(myEvent:MouseEvent){ cero.alpha=1; if(nc==1){ par.setcarta1("cero"); } else if(nc==2){ par.setcarta2("cero"); } else{ par.setcarta3("cero"); voltear=par.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("cero"); mostrarcarta(); } } nc++; } private function msne(myEvent:MouseEvent){ sne.alpha=1; if(nc==1){ par.setcarta1("sne"); } else if(nc==2){ par.setcarta2("sne"); }
241
else{ par.setcarta3("sne"); voltear=par.comprueba(); //VOLTEAR CARTAS SI RESPUESTAS ES INCORRECTA controlCartas(); nc=0; if(!voltear){ quitagregaboton("quita"); setcarta("sne"); mostrarcarta(); } } nc++; } public function controlCartas(){ if(voltear){ //SI LA RESPUESTA ES CORRECTA if(par.getcarta1()=="henning"||par.getcarta1()=="p"||par.getcarta1()=="cerillo") //determinar que carta dejar volteada { henning.alpha=0.7; p.alpha=0.7; cerillo.alpha=0.7; henning.removeEventListener(MouseEvent.CLICK, mhenning); p.removeEventListener(MouseEvent.CLICK, mp); cerillo.removeEventListener(MouseEvent.CLICK, mcerillo); parbueno[0]=1; np++; muevecartasar("henning","p","cerillo","agrega");//mueve cartas a respuestas encontradas } else if(par.getcarta1()=="dobereiner"||par.getcarta1()=="elementos"||par.getcarta1()=="triadas"){ dobereiner.alpha=0.7; elementos.alpha=0.7; triadas.alpha=0.7; dobereiner.removeEventListener(MouseEvent.CLICK, mdobereiner); elementos.removeEventListener(MouseEvent.CLICK, melementos); triadas.removeEventListener(MouseEvent.CLICK, mtriadas); parbueno[1]=1; np++; muevecartasar("dobereiner","elementos","triadas","agrega");//mueve cartas a respuestas encontradas } else if(par.getcarta1()=="beguyer"||par.getcarta1()=="helicoidal"||par.getcarta1()=="tornillo"){ beguyer.alpha=0.7; helicoidal.alpha=0.7; tornillo.alpha=0.7; beguyer.removeEventListener(MouseEvent.CLICK, mbeguyer); helicoidal.removeEventListener(MouseEvent.CLICK, mhelicoidal); tornillo.removeEventListener(MouseEvent.CLICK, mtornillo); parbueno[2]=1; np++; muevecartasar("beguyer","helicoidal","tornillo","agrega");//mueve cartas a respuestas encontradas } else if(par.getcarta1()=="newlands"||par.getcarta1()=="octavas"||par.getcarta1()=="f1863"){ newlands.alpha=0.7; octavas.alpha=0.7; f1863.alpha=0.7; newlands.removeEventListener(MouseEvent.CLICK, mnewlands); octavas.removeEventListener(MouseEvent.CLICK, moctavas); f1863.removeEventListener(MouseEvent.CLICK, mf1863); parbueno[3]=1; np++; muevecartasar("newlands","octavas","f1863","agrega");//mueve cartas a respuestas encontradas } else if(par.getcarta1()=="mendeleiev"||par.getcarta1()=="masas"||par.getcarta1()=="tabla"){
242
mendeleiev.alpha=0.7; masas.alpha=0.7; tabla.alpha=0.7; mendeleiev.removeEventListener(MouseEvent.CLICK, mmendeleiev); masas.removeEventListener(MouseEvent.CLICK, mmasas); tabla.removeEventListener(MouseEvent.CLICK, mtabla); parbueno[4]=1; np++; muevecartasar("mendeleiev","masas","tabla","agrega");//mueve cartas a respuestas encontradas } else if(par.getcarta1()=="ramsey"||par.getcarta1()=="cero"||par.getcarta1()=="sne"){ ramsey.alpha=0.7; cero.alpha=0.7; sne.alpha=0.7; ramsey.removeEventListener(MouseEvent.CLICK, mramsey); cero.removeEventListener(MouseEvent.CLICK, mcero); sne.removeEventListener(MouseEvent.CLICK, msne); parbueno[5]=1; np++; muevecartasar("ramsey","cero","sne","agrega");//mueve cartas a respuestas encontradas } } else { volteacarta(par.getcarta1(),0); volteacarta(par.getcarta2(),0); volteacarta(par.getcarta3(),0); } if(np==6) juego.text="Felicidades"; } public function volteacarta(carta:String, transparecia:Number):void{ if(carta=="henning") henning.alpha=transparecia; else if(carta=="p") p.alpha=transparecia; else if(carta=="cerillo") cerillo.alpha=transparecia; else if(carta=="dobereiner") dobereiner.alpha=transparecia; else if(carta=="elementos") elementos.alpha=transparecia; else if(carta=="triadas") triadas.alpha=transparecia; else if(carta=="beguyer") beguyer.alpha=transparecia; else if(carta=="helicoidal") helicoidal.alpha=transparecia; else if(carta=="tornillo") tornillo.alpha=transparecia; else if(carta=="newlands") newlands.alpha=transparecia; else if(carta=="octavas") octavas.alpha=transparecia; else if(carta=="f1863") f1863.alpha=transparecia; else if(carta=="mendeleiev") mendeleiev.alpha=transparecia; else if(carta=="masas") masas.alpha=transparecia; else if(carta=="tabla") tabla.alpha=transparecia; else if(carta=="ramsey") ramsey.alpha=transparecia; else if(carta=="cero") cero.alpha=transparecia;
243
else if(carta=="sne") sne.alpha=transparecia; } public function mostrarcarta(){ myTimer = new Timer(1000, 1); // 1 second myTimer.addEventListener(TimerEvent.TIMER, mosc); myTimer.start(); volteacarta(getcarta(),1); } function mosc(event:TimerEvent):void { volteacarta(getcarta(),0); quitagregaboton("agrega"); myTimer.stop(); } function getcarta():String{ return cadena; } function setcarta(cadena:String):void{ this.cadena=cadena; } private function ordenar():void{ var aleatorio:Array=new Array(); var i:int; var na:int; //cx:Coordenadas en 'x' cy:Coordenadas en 'y' var cx:Array=new Array(7.0,137.1,267.1); var cy:Array=new Array(81.0,141.0,201.0,262.0,323.0,381.0); var j:int; var h:int; h=0; //valor aleatorio entre 0 y 18. (18 cartas), sin repetir valores aleatorio[0]=randomNumber(1, 18); for(i=1;i<18;i++){ na=randomNumber(1, 18); if(validAleatorio(aleatorio,na)) while(validAleatorio(aleatorio,na)) na=randomNumber(1, 18); aleatorio[i]=na; } //COORDENADAS DEL TABLERO for(i=0;i<6;i++){ for(j=0;j<3;j++){ xy[h]=cx[j]; h++; xy[h]=cy[i]; h++; } } henning.x=xy[getcoordenadaX(aleatorio[0])]; henning.y=xy[getcoordenadaY(aleatorio[0])]; p.x=xy[getcoordenadaX(aleatorio[1])]; p.y=xy[getcoordenadaY(aleatorio[1])]; cerillo.x=xy[getcoordenadaX(aleatorio[2])]; cerillo.y=xy[getcoordenadaY(aleatorio[2])]; dobereiner.x=xy[getcoordenadaX(aleatorio[3])]; dobereiner.y=xy[getcoordenadaY(aleatorio[3])]; elementos.x=xy[getcoordenadaX(aleatorio[4])]; elementos.y=xy[getcoordenadaY(aleatorio[4])]; triadas.x=xy[getcoordenadaX(aleatorio[5])]; triadas.y=xy[getcoordenadaY(aleatorio[5])]; beguyer.x=xy[getcoordenadaX(aleatorio[6])];
244
beguyer.y=xy[getcoordenadaY(aleatorio[6])]; helicoidal.x=xy[getcoordenadaX(aleatorio[7])]; helicoidal.y=xy[getcoordenadaY(aleatorio[7])]; tornillo.x=xy[getcoordenadaX(aleatorio[8])]; tornillo.y=xy[getcoordenadaY(aleatorio[8])]; newlands.x=xy[getcoordenadaX(aleatorio[9])]; newlands.y=xy[getcoordenadaY(aleatorio[9])]; octavas.x=xy[getcoordenadaX(aleatorio[10])]; octavas.y=xy[getcoordenadaY(aleatorio[10])]; f1863.x=xy[getcoordenadaX(aleatorio[11])]; f1863.y=xy[getcoordenadaY(aleatorio[11])]; mendeleiev.x=xy[getcoordenadaX(aleatorio[12])]; mendeleiev.y=xy[getcoordenadaY(aleatorio[12])]; masas.x=xy[getcoordenadaX(aleatorio[13])]; masas.y=xy[getcoordenadaY(aleatorio[13])]; tabla.x=xy[getcoordenadaX(aleatorio[14])]; tabla.y=xy[getcoordenadaY(aleatorio[14])]; ramsey.x=xy[getcoordenadaX(aleatorio[15])]; ramsey.y=xy[getcoordenadaY(aleatorio[15])]; cero.x=xy[getcoordenadaX(aleatorio[16])]; cero.y=xy[getcoordenadaY(aleatorio[16])]; sne.x=xy[getcoordenadaX(aleatorio[17])]; sne.y=xy[getcoordenadaY(aleatorio[17])]; } private function randomNumber(low:Number=0, high:Number=1):Number { return Math.floor(Math.random() * (1+high-low)) + low; } public static function validAleatorio(aleatorio:Array, na:int):Boolean { if (aleatorio.indexOf(na) > -1) return true; else return false; } public function getcoordenadaX(a:int):int { var i:int; i=(a*2)-2; return i; } public function getcoordenadaY(a:int):int { var i:int; i=(a*2)-1; return i; } private function Findejuego(e:Event):void { if(np<6){ juego.text="Game Over"; } endgame=true; quitagregaboton("quita"); } public function muevecartasar(ca1:String,ca2:String,ca3:String,opcion:String){ var R1:Class; var R2:Class; var R3:Class; if(opcion=="agrega"){ if(ca1=="henning"){ R1 = getDefinitionByName("cHenning") as Class; R2 = getDefinitionByName("cP") as Class; R3 = getDefinitionByName("cCerillo") as Class;
245
} else if(ca1=="dobereiner"){ R1 = getDefinitionByName("cDobereiner") as Class; R2 = getDefinitionByName("cElementos") as Class; R3 = getDefinitionByName("cTriadas") as Class; } else if(ca1=="beguyer"){ R1 = getDefinitionByName("cBeguyer") as Class; R2 = getDefinitionByName("CHelicoidal") as Class; R3 = getDefinitionByName("cTelurico") as Class; } else if(ca1=="newlands"){ R1 = getDefinitionByName("cNewland") as Class; R2 = getDefinitionByName("cOctavas") as Class; R3 = getDefinitionByName("c1863") as Class; } else if(ca1=="mendeleiev"){ R1 = getDefinitionByName("cMendeleiev") as Class; R2 = getDefinitionByName("cMasas") as Class; R3 = getDefinitionByName("cTabla") as Class; } else if(ca1=="ramsey"){ R1 = getDefinitionByName("cRamsey") as Class; R2 = getDefinitionByName("cCero") as Class; R3 = getDefinitionByName("cNe") as Class; } var objeto1:Object = new R1(); var objeto2:Object = new R2(); var objeto3:Object = new R3(); ArrayObjetos[indexObjetos]=objeto1; indexObjetos++; ArrayObjetos[indexObjetos]=objeto2; indexObjetos++; ArrayObjetos[indexObjetos]=objeto3; indexObjetos++; objeto1.x=404.9; objeto2.x=534.9; objeto3.x=665.0; if(ca1=="henning"){ objeto1.y=81.0; objeto2.y=81.0; objeto3.y=81.0; } else if(ca1=="dobereiner"){ objeto1.y=141.0; objeto2.y=141.0; objeto3.y=141.0; } else if(ca1=="beguyer"){ objeto1.y=201.0; objeto2.y=201.0; objeto3.y=201.0; } else if(ca1=="newlands"){ objeto1.y=262.2; objeto2.y=262.2; objeto3.y=262.2; } else if(ca1=="mendeleiev"){ objeto1.y=323.0; objeto2.y=323.0; objeto3.y=323.0; } else if(ca1=="ramsey"){
246
objeto1.y=381; objeto2.y=381; objeto3.y=381; } this.addChild(DisplayObject(objeto1)); this.addChild(DisplayObject(objeto2)); this.addChild(DisplayObject(objeto3)); } else { var i:uint=0; while(ArrayObjetos[i]!=null){ this.removeChild(DisplayObject(ArrayObjetos[i])); i++; } } } } } package { /** * Recibe el nombre de las cartas en n1,n2,n3. Compara que se * hayan hecho las tercias */ public class Pares { public var n1:String; public var n2:String; public var n3:String; public function Pares() { } public function setcarta1(c1:String) { this.n1=c1; } public function setcarta2(c2:String) { this.n2=c2; } public function setcarta3(c3:String) { this.n3=c3; } public function getcarta1():String { return this.n1; } public function getcarta2():String { return this.n2; } public function getcarta3():String { return this.n3; } public function comprueba():Boolean{
247
var resultado:Boolean=false; var cc:String; cc=n1+n2+n3; if(cc=="henningpcerillo"||cc=="henningcerillop"||cc=="cerillophenning"||cc=="phenningcerillo"||cc=="cerillohenningp"||cc=="pcerillohenning") resultado=true; else if(cc=="dobereinerelementostriadas"||cc=="dobereinertriadaselementos"||cc=="triadaselementosdobereiner"||cc=="elementosdobereinertriadas"||cc=="triadasdobereinerelementos"||cc=="elementostriadasdobereiner") resultado=true; else if(cc=="beguyerhelicoidaltornillo"||cc=="beguyertornillohelicoidal"||cc=="tornillohelicoidalbeguyer"||cc=="helicoidalbeguyertornillo"||cc=="tornillobeguyerhelicoidal"||cc=="helicoidaltornillobeguyer") resultado=true; else if(cc=="newlandsoctavasf1863"||cc=="newlandsf1863octavas"||cc=="f1863octavasnewlands"||cc=="octavasnewlandsf1863"||cc=="f1863newlandsoctavas"||cc=="octavasf1863newlands") resultado=true; else if(cc=="mendeleievmasastabla"||cc=="mendeleievtablamasas"||cc=="tablamasasmendeleiev"||cc=="masasmendeleievtabla"||cc=="tablamendeleievmasas"||cc=="masastablamendeleiev") resultado=true; else if(cc=="ramseycerosne"||cc=="ramseysnecero"||cc=="sneceroramsey"||cc=="ceroramseysne"||cc=="sneramseycero"||cc=="cerosneramsey") resultado=true; return resultado; } } } package { import flash.display.*; import flash.events.*; import flash.text.TextField; import flash.text.TextFieldAutoSize; import flash.utils.Timer; import flash.utils.getTimer; import flash.events.Event; import flash.events.EventDispatcher; public class Cronometro extends EventDispatcher { private var milesimasXcentecima:uint=10; private var milesimasXsegundo:uint=1000; private var milesimasXminuto:uint=1000 * 60;// 60,000 private var minuto:uint; private var segundo:uint; private var centesima:uint; private var minuto_txt:String; private var segundo_txt:String; private var centesima_txt:String; private var milesimasTranscurridas:uint; private var copiaDe_GetTimer:uint; private var referenciaTemporal:uint; private var temporizador:Timer=new Timer(10,0); private var LIMITE:uint=10; //LIMITE DE TIEMPO DEL JUEGO var led_txt:Object=null;
248
public static const VALUE_CHANGED:String = 'value_changed'; private var finjuego:Boolean=false; public function Cronometro(led_txt:Object) { finjuego=false; this.led_txt=led_txt; led_txt.text="00 : 00 : 00"; temporizador.addEventListener(TimerEvent.TIMER,tickTack); } public function setsomeVariable(newVal:Boolean):void { finjuego = newVal; this.dispatchEvent(new Event(Cronometro.VALUE_CHANGED)); } private function tickTack(e:TimerEvent):void { milesimasTranscurridas=getTimer() - copiaDe_GetTimer; // Si por ejemplo el .SWF lleva abierto 10 segundos (10000 milesimas) y el cronometro se inicio en el segundo 4, // entonses nuestro cronometro lleva 6 segundos transcurridos. 10000 - 4000 = 6000 (6 Segundos) minuto=Math.floor( milesimasTranscurridas / milesimasXminuto); // Ejem: referenciaTemporal es = 287,987 / milesimasXminuto (60,000) = 4.799.. Redondeando 4 Minutos // minuto nunca va ser mayor que 59 referenciaTemporal= milesimasTranscurridas - minuto * milesimasXminuto; // Ejem: referenciaTemporal es 287,987 - (4 Minutos * 60,000 = 240.000 ) = 47,987 // Aca referenciaTemporal nunca va ser mayor de 59.999 //REFERENCIA TEMPORAL LLEVA EL RESIDUO, LO QUE SOBREN DE LOS MINUTOS PARA CALCULAR SEGUNDOS segundo=Math.floor(referenciaTemporal / milesimasXsegundo); // Ejem: referenciaTemporales 47,987 / milesimasXsegundo que son 1000 es = a 47.987 Redondeando 47 segundos // segundo nunca va ser mayor que 59 referenciaTemporal=referenciaTemporal - segundo * milesimasXsegundo; // Ejem: referenciaTemporal es 47,987 - (segundo 47 * milesimasXsegundo que son 1000 = 47,000) = 987 // Aca referenciaTemporal nunca va ser mayor que 999 //REFERENCIA TEMPORAL LLEVA EL RESIDUO, LO QUE SOBREN DE LOS SEGUNDOS PARA CALCULAR CENTESIMAS centesima=Math.floor(referenciaTemporal / milesimasXcentecima); // Ejem: ahora referenciaTemporal es 987 / milesimasXcentecima que son 10 es = a 98.7 redondeando 98 centecimas // centesima nunca va ser mayor que 99 // Condicinales que hacen que todos los numeros tengan siempre dos digitos y no uno if(minuto<LIMITE){ if (minuto < 10) { minuto_txt="0" + minuto.toString(); } else { minuto_txt=minuto.toString(); } if (segundo < 10) { segundo_txt="0" + segundo.toString(); } else { segundo_txt=segundo.toString(); } if (centesima < 10) { centesima_txt="0" + centesima.toString(); } else { centesima_txt=centesima.toString(); } // Pasanos todo al campo de texto led_txt.text=minuto_txt + " : " + segundo_txt + " : " + centesima_txt; } else{ reiniciarCronometro(); led_txt.text="00 : 00 : 00"; setsomeVariable(true); }
249
} public function iniciarCronometro():void { finjuego=false; copiaDe_GetTimer=getTimer();// Toma una foto, de las milesimas que han pasado desde el inicio. temporizador.start(); } public function reiniciarCronometro():void { finjuego=false; temporizador.stop(); led_txt.text="00 : 00 : 00"; milesimasTranscurridas=0; } } }
PROMOCIÓN DE DIPLOMADO MEDIANTE CORREOS ELECTRÓNICOS <? include('conect.php'); include_once('class.phpmailer.php');//incluimos la libreria phpmailer set_time_limit(0); //Eliminamos limite de tiempo para el proceso $mail = new PHPMailer(); $mail->IsSMTP();// send via SMTP $mail->SMTPAuth = true; // turn on SMTP authentication $mail->Host = 'ssl://smtp.gmail.com'; $mail->Port = 465; $mail->Username = '[email protected]'; // SMTP username $mail->Password = 'diplomadof';// SMTP password $mail->IsHTML(true); // send as HTML $mail->ContentType = "text/html"; //$mail->CharSet = "utf-8"; $mensaje='<p align="center"><strong><u>Los mejores promedios a nivel estatal del diplomado de </u></strong><br /> <strong><u>inicio mayo 2010 en sus evaluaciones integradoras finales</u></strong></p> <p align="center"><strong><u>Nota importante : </u></strong></p> <p align="center"><strong><u>Esta lista se va actualizando conforme avanzamos en calificar </u></strong><br /> <strong><u>y conforme van concluyendo sus evaluaciones integradoras finales</u></strong></p> <p align="center"><strong><u>Actualización al 29 de octubre de 2010</u></strong></p> <p align="center"><strong><u>Cualquier aclaración favor de dirigirla a</u></strong><br /> <strong><u> </u></strong><br /> <a href="mailto:[email protected]"><strong>[email protected]</strong></a><strong><u> </u></strong></p> <p align="center"><strong><u>Favor de revisar que su nombre esté completo y correcto (ortografía y acentos) </u></strong><br /> <strong><u>porque procederemos a elaborar sus diplomas con valor curricular por 120 hrs, menciones honoríficas y certificados de actividades.</u></strong></p> <p align="center"><strong><u> </u></strong></p> <p align="center"><strong><u>MEJORES EXÁMENES FINALES A NIVEL ESTADO (PERIODO MAYO)</u></strong></p> <ul> <li> <div align="center"><strong><u>QUÍMICA: Mtra. Enedina Jiménez Luciano (COBAEM)</u></strong></div> </li> <li> <div align="center"><strong><u>QUIMICA : Mtro. Julian Oliverio García Guzmán (CBTIS)</u></strong></div> </li> <li> <div align="center"><strong><u>BIOLOGÍA: Mtra María del Carmen Barrios(COBAEM)</u></strong></div> </li> <li> <div align="center"><strong><u>FÍSICA: Mtro. Tomás López (CBTA)</u></strong></div> </li> <li> <div align="center"><strong><u>MATEMÁTICAS: Mtra. Sofía Palacios Bahena (CBTA)</u></strong></div> </li>
250
<li> <div align="center"><strong><u>MATEMÁTICAS: Mtro. Ignacio Palacios Bahena (CBTIS)</u></strong></div> </li> <li> <div align="center"><strong><u>MATEMÁTICAS : Mtra Alma Delia Cuevas Sotelo (CBTIS)</u></strong></div> </li> </ul> <p align="center"><strong><u> </u></strong></p> <p><strong><u> </u></strong></p> <p><strong><u>CECYTEM</u></strong><br /> 1.- (Biología) - Mtra. Sandra Norma Álvarez Vallejo<br /> 2.- (Ecología) - Mtra. Silvia Yunuen Silva Domínguez<br /> 3.- (Física) - Mtro. Eduardo Mazón Trejo<br /> 4.- (Matemáticas) - Mtro. José Esteban Abad Olivar<br /> 5.- (Matemáticas) - Mtra. María Celina Morales Rivera<br /> 6.- (Matemáticas) - Mtro. Carlos Augusto Ochoa Escalona</p> <p><strong><u>CONALEP</u></strong><br /> 7.- (Biología) - Mtro. Felipe Avilés Domínguez<br /> 8.- (Biología) - Mtra. Liliana Anabel García Ortiz<br /> 9.- (Biología) - Mtra. Patricia Muñoz Pita<br /> 10.- (Biología) - Mtra. Lucy Angélica Quintero Ortiz está en Ecología<br /> 11.- (Ecología) - Mtro. Jorge Dorantes Camacho<br /> 12.- (Física) - Mtro. José Gilberto Benítez Leana <br /> 13.- (Física) - Mtro. Leonardo Ixtlilco Cortés <br /> 14.- (Física) - Mtra. Marcela Millán López<br /> 15.- (Matemáticas) - Mtro. José Luis Ayala Hernández<br /> 16.- (Matemáticas) - Mtra. María Del Carmen Bazaldúa Casales<br /> 17.- (Matemáticas) - Mtro. Javier Covarrubias Olmedo<br /> 18.- (Matemáticas) - Mtra. Silvia Demesa Udave<br /> 19.- (Matemáticas) - Mtro. Galaad Flores Muñoz<br /> 20.- (Matemáticas) - Mtro. Alejandrino Zúñiga Ortiz<br /> 21.- (Química) - Mtro. Pedro Bahena Ortiz - <strong>(Mención Honorífica)</strong><br /> 22.- (Química) - Mtra. Mirna Cabello López<br /> 23.- (Química) - Mtro. Luis Enrique Capistrán Pineda<br /> 24.- (Química) - Mtro. Rafael Demesa Udave</p> <p><strong><u>CETIS Y CBTIS</u></strong><br /> 25.- (Biología) - Mtro. Marcelino Julián Campos Tejeda está en Química<br /> 26.- (Biología) - Mtra. María Marina Magadán Salazar<br /> 27.- (Biología) - Mtro. Cuauhtémoc Ramírez Sánchez<br /> 28.- (Biología) - Mtro. Rodrigo Vargas Yáñez <br /> 29.- (Matemáticas) - Mtra. Alma Delia Cuevas Sotelo - <strong>(Mención Honorífica) </strong><br /> 30.- (Matemáticas) - Mtro. Ignacio Palacios Bahena - <strong>(Mención Honorífica)</strong> <br /> 31.- (Química) - Mtro. Julian Oliverio García Guzmán - <strong>(Mención Honorífica)</strong></p> <p><strong><u>COBAEM</u></strong><br /> 32.- (Biología) - Mtra. María Del Carmen Barrios Rodríguez - <strong>(Mención Honorífica)</strong> <br /> 33.- (Biología) - Mtra. María Aitzane Delgado Yoshino<br /> 34.- (Biología) - Mtra. María Elizabeth Robles Aguilar está en Ecología<br /> 35.- (Biología) - Mtra. Fabiola Rocha Escobar<br /> 36.- (Biología) - Mtro. Gonzalo Tapia Rojas<br /> 37.- (Ecología) - Mtra. Araceli Arteaga Dirzo<br /> 38.- (Ecología) - Mtro. José Garduño Rodríguez<br /> 39.- (Ecología) - Mtra. Norma Leticia Lorenzana Martínez<br /> 40.- (Ecología) - Mtro. Moisés Vilchis López<br /> 41.- (Física) - Mtro. Tomás Escobar Monge <br /> 42.- (Física) - Mtra. Sara Elena Mendoza Sánchez<br /> 43.- (Matemáticas) - Mtra. Sonia Barrera Salgado<br /> 44.- (Matemáticas) - Mtra. Celia Julieta Gutiérrez Castillo - <strong>(Mención Honorífica)</strong><br /> 45.- (Matemáticas) - Mtro. Carlos Gutiérrez Ruiz<br /> 46.- (Matemáticas) - Mtro. Martín León Luna<br /> 47.- (Matemáticas) - Mtro. Oscar Pinzón Gutiérrez<br /> 48.- (Matemáticas) - Mtro. Jehú Joksan Tinoco Hernández<br /> 49.- (Matemáticas) - Mtro. Víctor Armando Yáñez Yáñez<br /> 50.- (Química) - Mtra. Maráa Esperanza Castro Sánchez<br /> 51.- (Química) - Mtra. Silvia Adriana Herrera Díaz - <strong>(Mención Honorífica)</strong><br /> 52.- (Química) - Mtra. Enedina Jiménez Luciano - <strong>(Mención Honorífica)</strong><br /> 53.- (Química) - Mtra. María Guadalupe Vargas Guevara </p> <p><strong><u>PREFECO</u></strong><br /> 54.-(Biología) - Mtra. Aída Azpeitia Hernández - <strong>(Mención Honorífica)</strong><br /> 55.- (Biología) - Mtro. Víctor Alfonso Cuate Mozo <br /> 56.- (Biología) - Mtra. Marisa García Navarrete<br /> 57.- (Biología) - Mtra. Ana Laura Gutiérrez Vara<br />
251
58.- (Ecología) - Mtro. Víctor Albino Tijera Demesa<br /> 59.- (Física) - Mtra. Verónica González Molina<br /> 60.- (Matemáticas) - Mtro. Javier Teodoro Miranda Lara<br /> 61.- (Matemáticas) - Mtro. Ernesto Guadalupe Oviedo Quintanar<br /> 62.- (Química) - Mtro. Eliseo Flores Pacheco<br /> 63.- (Química) - Mtra. Andrea Flores Rodríguez - <strong>(Mención Honorífica)</strong><br /> 64.- (Química) - Mtra. Elvia González Molina - <strong>(Mención Honorífica)</strong></p> <p><strong><u>UAEM</u></strong><br /> 65(Biología) - Mtra. Mayra Berta Bustamante Rodríguez - <strong>(Mención Honorífica)</strong> <br /> 66(Química) - Mtra. Lilián Teresa Guevara Arevalo </p> <p><strong><u>CBTA</u></strong><br /> 67.- (Ecología) - Mtro. Denis Adair Acosta Sánchez<br /> 68.- (Física) - Mtro. Tomas López - <strong>(Mención Honorífica)</strong><br /> 69.- (Matemáticas) - Mtro. Narciso Amador Lozano<br /> 70.- (Matemáticas) - Mtro. Sergio Rodrigo Casasola Santana está en Física<br /> 71.- (Matemáticas) - Mtro. Norberto Mendiola Gutiérrez - <strong>(Mención Honorífica)</strong><br /> 72.- (Matemáticas) - Mtro. Gilberto Orozco Mayrén - <strong>(Mención Honorífica)</strong><br /> 73.- (Matemáticas) - Mtra. Adrián Alberto Ortiz Chávez<br /> 74.- (Matemáticas) - Mtra. Sofía Palacios Bahena - <strong>(Mención Honorífica)</strong> <strong></strong><br /> 75.- (Matemáticas) - Mtra. María Cristina Perdomo Maldonado<br /> 76.- (Matemáticas) - Mtro. Jacobo Sánchez Aguilar<br /> 77.- (Química) - Mtra. María de Jesús Onofre Torres<br /> 78.- (Química) - Mtra. Teresa Torres Rodríguez</p> <p><strong><u>PARTICULAR</u></strong><br /> 79.- (Biología) - Mtra. Regina Vargas Bahena </p> <p><strong><u>OTRO</u></strong><br /> 80.- (Matemáticas) - Mtro. Valois Nájera Morales<br /> 81.- (Matemáticas) - Mtro. César Sánchez Cacique</p> <p><strong><u>IEBEM</u></strong></p> 82.- (Química) - Mtro. Luis David Chávez Gómez '; $mail->Body=utf8_decode($mensaje); // Introducimos la información del remitente del mensaje $mail->From = "[email protected]"; $mail->FromName = "Silvia Gaona"; //Asunto $mail->Subject = utf8_decode("Listado completo de diplomas a emitir periodo mayo (favor de revisar nombres completos y ortografía)"); //$mail->AddAttachment("posterChico.jpg");// adjuntamos un imagen o un file //Conexion a la BD para enviar el mail masivo $conexion = mysql_connect($dbhost, $dbusuario, $dbpassword); mysql_select_db($db, $conexion); $sql = 'LOAD DATA LOCAL INFILE "C://AppServ//www//fomix//entrada.txt" IGNORE INTO TABLE `rmoodle`'; //Cargar archivo para bd $rs = mysql_query($sql, $conexion) or die ("error".mysql_error()); $consulta="select * from rmoodle where respondido=0;"; $result=mysql_db_query($db,$consulta,$conexion); $i=mysql_num_rows($result); $a=0; $fecha2=date("d/m/y - H:i"); while($array=mysql_fetch_array($result)){ $correo1[$a]=$array['email']; $a++; } mysql_close($conexion); for($x=0;$x<$a;$x++){ //Destinatario del mensaje $mail->AddAddress($correo1[$x]); $mail->AddCC("[email protected]"); if(!$mail->Send()) { echo "Error: " . $mail->ErrorInfo; } else { echo "Mensaje enviado correctamente a" . $correo1[$x] . "<br />"; } $mail->ClearAddresses(); } echo "Total de correos enviados: " . $a;
252
?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>DISEÑO E IMPLEMENTACIÓN DE UN PROGRAMA PARA LA ACTUALIZACIÓN DE DOCENTES DE NIVEL MEDIO SUPERIOR</title> <style type="text/css"> <!-- body { margin-top: 0px; text-align:center; } .titulo{ font-family: Verdana, Geneva, sans-serif; font-weight: bold; color: #069; font-size: 24px; } .italica { font-style: italic; } --> </style> </head> <body> <table width="589" height="377" border="0" align="center"> <tr> <td height="21"><span class="Estilo13">Esta es una vista previa del correo que se enviar:</span></td> </tr> <tr> <td> <div style="text-align:center; width:530px; margin:0 auto 0 auto; font-family: Arial, Helvetica, sans-serif; color: #333; font-size: 14px;"> <img src="http://www.upemor.edu.mx/img/banner-der.png" alt="Upemor" width="168" height="200" /><br /> <p align="center" class="titulo">CONVOCA</p> <p align="center">a todos los docentes de Nivel Medio Superior, a cursar el</p> <p align="center" class="titulo">DIPLOMADO EN LÍNEA DE ACTUALIZACIÓN<br /></p> <div style="width:245px; float:left; text-align:justify; padding-left: 10px; padding-right:10px;"> <p>En cualquiera de las siguientes áreas:</p> <ul> <li>Física (Termodinámica)</li> <li>Matemáticas (Trigonometría y Geometría Analítica)</li> <li>Química (Relaciones periódicas de los elementos)</li> <li>Biología (Biodiversidad)</li> <li>Ecología (Problemas ambientales)</li> </ul> <p> Duración: 2 meses. <br /> Inicio: 2 de septiembre del 2010.<br /> Concluye: 30 de octubre del 2010.<br /> Cupo limitado a 25 profesores por área.<br /> Se ofrecerán 200 becas.<br /> Se otorgará diploma con valor curricular.<br /> Registro durante julio y agosto, en: <br /> <a href="http://cristal.ibt.unam.mx/registro" style="color:#069"><strong>http://cristal.ibt.unam.mx/registro</strong></a> </p> </div> <div style="width:245px; float:right; text-align:left; padding-left: 10px; padding-right:10px;"> <p> REQUISITOS: <br /><br /> </p> <ul> <li>Ser profesor activo, en el área del conocimiento correspondiente, en alguna institución Pública de Educación Media Superior en el Estado de Morelos.<br /><br /></li> <li>Comprometerse por escrito a concluir el diplomado y llenar su formulario de registro.<br /><br /></li>
253
<li>Aceptar realizar la evaluación diagnóstica al inicio y al final en el área del conocimiento del diplomado.<br /><br /></li> <li>Tener acceso a Internet.</li> </ul> </div> <div style="background-color:#C00; float:left; width:100%;color:#FFF;"> <div style="width:215px; float:left; text-align:left; padding-left: 10px; padding-right:10px;"> <p>Para mayores informes:</p> <p> </p> <p><strong>UNIVERSIDAD POLITÉCNICA DEL ESTADO DE MORELOS</strong></p> </div> <div style="width:275px; float:right; text-align:left; padding-left: 10px; padding-right:10px;"> <p>Atención: Profa. Silvia Melbi Gaona <br /> <span class="italica">Responsable técnico del proyecto CONACYT</span></p> <p><strong>Telefono:</strong> (777) 2-29-35-04<br /> <strong>Correo:</strong> <a href="mailto:[email protected]" style="color:#FFF;">[email protected]</a></p> </div> </div> </div> </td> </tr> <tr><td height="85"><br /><span class="Estilo14">Pulse el boton para comenzar con el SPAM </span> <form id="form1" name="form1" method="post" action="send2.php"> <input name="comenzar" type="submit" value="Comenzar envio" /> </form> </td> </tr> </table> </body> </html>
Top Related