Ayuda array

Pregunta Sin Miedo no te cortes cualquier cosa para empezar - Autoit se comienza facilmente.Para Ordenes o Comandos sueltos. Ver nota como preguntar.
Responder
wbueso
Aprendiz de Mago
Mensajes: 61
Registrado: 31 Dic 2013, 01:02

Ayuda array

Mensaje por wbueso »

Danny o PDF, quisiera saber como harian esto con un array, ayuda porfa

Código: Seleccionar todo

GUICtrlSetState($r1a,$GUI_DISABLE)
		GUICtrlSetState($r1b,$GUI_DISABLE)
		GUICtrlSetState($r1c,$GUI_DISABLE)
		GUICtrlSetState($r1d,$GUI_DISABLE)
		GUICtrlSetState($r2a,$GUI_DISABLE)
		GUICtrlSetState($r2b,$GUI_DISABLE)
		GUICtrlSetState($r2c,$GUI_DISABLE)
		GUICtrlSetState($r2d,$GUI_DISABLE)
		GUICtrlSetState($r3a,$GUI_DISABLE)
		GUICtrlSetState($r3b,$GUI_DISABLE)
		GUICtrlSetState($r3c,$GUI_DISABLE)
		GUICtrlSetState($r3d,$GUI_DISABLE)
		GUICtrlSetState($r4a,$GUI_DISABLE)
		GUICtrlSetState($r4b,$GUI_DISABLE)
		GUICtrlSetState($r4c,$GUI_DISABLE)
		GUICtrlSetState($r4d,$GUI_DISABLE)
		GUICtrlSetState($r5a,$GUI_DISABLE)
		GUICtrlSetState($r5b,$GUI_DISABLE)
		GUICtrlSetState($r5c,$GUI_DISABLE)
		GUICtrlSetState($r5d,$GUI_DISABLE)
		GUICtrlSetState($r6a,$GUI_DISABLE)
		GUICtrlSetState($r6b,$GUI_DISABLE)
		GUICtrlSetState($r6c,$GUI_DISABLE)
		GUICtrlSetState($r6d,$GUI_DISABLE)
		GUICtrlSetState($r7a,$GUI_DISABLE)
		GUICtrlSetState($r7b,$GUI_DISABLE)
		GUICtrlSetState($r7c,$GUI_DISABLE)
		GUICtrlSetState($r7d,$GUI_DISABLE)
		GUICtrlSetState($r8a,$GUI_DISABLE)
		GUICtrlSetState($r8b,$GUI_DISABLE)
		GUICtrlSetState($r8c,$GUI_DISABLE)
		GUICtrlSetState($r8d,$GUI_DISABLE)
		GUICtrlSetState($r9a,$GUI_DISABLE)
		GUICtrlSetState($r9b,$GUI_DISABLE)
		GUICtrlSetState($r9c,$GUI_DISABLE)
		GUICtrlSetState($r9d,$GUI_DISABLE)
		GUICtrlSetState($r10a,$GUI_DISABLE)
		GUICtrlSetState($r10b,$GUI_DISABLE)
		GUICtrlSetState($r10c,$GUI_DISABLE)
		GUICtrlSetState($r10d,$GUI_DISABLE)
		GUICtrlSetState($r11a,$GUI_DISABLE)
		GUICtrlSetState($r11b,$GUI_DISABLE)
		GUICtrlSetState($r11c,$GUI_DISABLE)
		GUICtrlSetState($r11d,$GUI_DISABLE)
		GUICtrlSetState($r12a,$GUI_DISABLE)
		GUICtrlSetState($r12b,$GUI_DISABLE)
		GUICtrlSetState($r12c,$GUI_DISABLE)
		GUICtrlSetState($r12d,$GUI_DISABLE)
		GUICtrlSetState($r13a,$GUI_DISABLE)
		GUICtrlSetState($r13b,$GUI_DISABLE)
		GUICtrlSetState($r13c,$GUI_DISABLE)
		GUICtrlSetState($r13d,$GUI_DISABLE)
		GUICtrlSetState($r14a,$GUI_DISABLE)
		GUICtrlSetState($r14b,$GUI_DISABLE)
		GUICtrlSetState($r14c,$GUI_DISABLE)
		GUICtrlSetState($r14d,$GUI_DISABLE)
		GUICtrlSetState($r15a,$GUI_DISABLE)
		GUICtrlSetState($r15b,$GUI_DISABLE)
		GUICtrlSetState($r15c,$GUI_DISABLE)
		GUICtrlSetState($r15d,$GUI_DISABLE)
		GUICtrlSetState($r16a,$GUI_DISABLE)
		GUICtrlSetState($r16b,$GUI_DISABLE)
		GUICtrlSetState($r16c,$GUI_DISABLE)
		GUICtrlSetState($r16d,$GUI_DISABLE)
		GUICtrlSetState($r17a,$GUI_DISABLE)
		GUICtrlSetState($r17b,$GUI_DISABLE)
		GUICtrlSetState($r17c,$GUI_DISABLE)
		GUICtrlSetState($r17d,$GUI_DISABLE)
		GUICtrlSetState($r18a,$GUI_DISABLE)
		GUICtrlSetState($r18b,$GUI_DISABLE)
		GUICtrlSetState($r18c,$GUI_DISABLE)
		GUICtrlSetState($r18d,$GUI_DISABLE)
		GUICtrlSetState($r19a,$GUI_DISABLE)
		GUICtrlSetState($r19b,$GUI_DISABLE)
		GUICtrlSetState($r19c,$GUI_DISABLE)
		GUICtrlSetState($r19d,$GUI_DISABLE)
		GUICtrlSetState($r20a,$GUI_DISABLE)
		GUICtrlSetState($r20b,$GUI_DISABLE)
		GUICtrlSetState($r20c,$GUI_DISABLE)
		GUICtrlSetState($r20d,$GUI_DISABLE)
		GUICtrlSetState($r21a,$GUI_DISABLE)
		GUICtrlSetState($r21b,$GUI_DISABLE)
		GUICtrlSetState($r21c,$GUI_DISABLE)
		GUICtrlSetState($r21d,$GUI_DISABLE)
		GUICtrlSetState($r22a,$GUI_DISABLE)
		GUICtrlSetState($r22b,$GUI_DISABLE)
		GUICtrlSetState($r22c,$GUI_DISABLE)
		GUICtrlSetState($r22d,$GUI_DISABLE)
		GUICtrlSetState($r23a,$GUI_DISABLE)
		GUICtrlSetState($r23b,$GUI_DISABLE)
		GUICtrlSetState($r23c,$GUI_DISABLE)
		GUICtrlSetState($r23d,$GUI_DISABLE)
		GUICtrlSetState($r24a,$GUI_DISABLE)
		GUICtrlSetState($r24b,$GUI_DISABLE)
		GUICtrlSetState($r24c,$GUI_DISABLE)
		GUICtrlSetState($r24d,$GUI_DISABLE)
		GUICtrlSetState($r25a,$GUI_DISABLE)
		GUICtrlSetState($r25b,$GUI_DISABLE)
		GUICtrlSetState($r25c,$GUI_DISABLE)
		GUICtrlSetState($r25d,$GUI_DISABLE)
		GUICtrlSetState($r26a,$GUI_DISABLE)
		GUICtrlSetState($r26b,$GUI_DISABLE)
		GUICtrlSetState($r26c,$GUI_DISABLE)
		GUICtrlSetState($r26d,$GUI_DISABLE)
		GUICtrlSetState($r27a,$GUI_DISABLE)
		GUICtrlSetState($r27b,$GUI_DISABLE)
		GUICtrlSetState($r27c,$GUI_DISABLE)
		GUICtrlSetState($r27d,$GUI_DISABLE)
		GUICtrlSetState($r28a,$GUI_DISABLE)
		GUICtrlSetState($r28b,$GUI_DISABLE)
		GUICtrlSetState($r28c,$GUI_DISABLE)
		GUICtrlSetState($r28d,$GUI_DISABLE)
		GUICtrlSetState($r29a,$GUI_DISABLE)
		GUICtrlSetState($r29b,$GUI_DISABLE)
		GUICtrlSetState($r29c,$GUI_DISABLE)
		GUICtrlSetState($r29d,$GUI_DISABLE)
		GUICtrlSetState($r30a,$GUI_DISABLE)
		GUICtrlSetState($r30b,$GUI_DISABLE)
		GUICtrlSetState($r30c,$GUI_DISABLE)
		GUICtrlSetState($r30d,$GUI_DISABLE)
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Ayuda array

Mensaje por Dany »

pues la verdad primero identifica el primer indice si son cobnsecutivos hace un for y listo.


Saludos
  • ............................................Imagen
    ......................................Imagen
wbueso
Aprendiz de Mago
Mensajes: 61
Registrado: 31 Dic 2013, 01:02

Re: Ayuda array

Mensaje por wbueso »

Estoy creando un programa que hace un examen y tiene 30 preguntas, cada pregunta tiene 4 opciones a elejir, entre ellas la respuesta correcta, deceo que cuando hagan clic en el control revisar examen se desactiven todos los controles, ese es el codigo que hice para realizar esa accion, pero se que podria hacerlo con un array, pero no he podido dar con la solucion.
$r1a, $r1b, $r1c, $r1d son los controles radio que hay, uno de eelos es el correcto, si hay 30 preguntas entonces son 120 controles radio.
gracias por responder DANNY.
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Ayuda array

Mensaje por Dany »

Muesta un codigo que funcione porque todavia no la capto.


saludos :smt027
  • ............................................Imagen
    ......................................Imagen
Avatar de Usuario
juantxo
Hacker del Foro
Mensajes: 78
Registrado: 02 Abr 2008, 13:36

Re: Ayuda array

Mensaje por juantxo »

Hola Wbueso...

Permiteme que intente ayudarte.

Creo que lo que tu necesitas es crear un Array de dos dimensiones, las filas para cada pregunta y las columnas para el texto y las respuestas... Algo asi:

Código: Seleccionar todo


#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
AutoItSetOption("MustDeclareVars", 1)

#Region Definicion de variables.
Dim $ar_Cuestionario[4][5] ; definimos el Array de cuestiones, X= nº preguntas Y=Respuestas+Pregunta

Dim $Form1 ; variable para contener formulario
Dim $Group1, $Group2, $Group3, $Group4 ; variables para contener grupos
Dim $Bt_Accion, $Bt_Salir ; variables para contener botones
Dim $nMsg ; variable para capturar evento
#EndRegion Definicion de variables.


#Region ### START Koda GUI section ### FORMULARIO PRINCIPAL
$Form1 = GUICreate("Cuestionario", 485, 438, 192, 124) ; creo el formulario maestro

#Region Pregunta 1
$ar_Cuestionario[0][0] = GUICtrlCreateLabel("1-Cual de los siguientes nº es PAR?", 24, 48, 173, 17)
$Group1 = GUICtrlCreateGroup("", 24, 64, 145, 113)
$ar_Cuestionario[0][1] = GUICtrlCreateRadio("1", 40, 80, 113, 17)
$ar_Cuestionario[0][2] = GUICtrlCreateRadio("3", 40, 104, 113, 17)
$ar_Cuestionario[0][3] = GUICtrlCreateRadio("4", 40, 128, 113, 17)
$ar_Cuestionario[0][4] = GUICtrlCreateRadio("5", 40, 152, 113, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
#EndRegion Pregunta 1

#Region Pregunta 2
$ar_Cuestionario[1][0] = GUICtrlCreateLabel("Cual de los siguientes nº es CERO?", 24, 192, 172, 17)
$Group2 = GUICtrlCreateGroup("", 24, 208, 145, 113)
$ar_Cuestionario[1][1] = GUICtrlCreateRadio("1", 40, 224, 113, 17)
$ar_Cuestionario[1][2] = GUICtrlCreateRadio("3", 40, 248, 113, 17)
$ar_Cuestionario[1][3] = GUICtrlCreateRadio("0", 40, 272, 113, 17)
$ar_Cuestionario[1][4] = GUICtrlCreateRadio("5", 40, 296, 113, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
#EndRegion Pregunta 2

#Region Pregunta 3
$ar_Cuestionario[2][0] = GUICtrlCreateLabel("2-Cual de los siguientes nº es IMPAR?", 232, 48, 185, 17)
$Group3 = GUICtrlCreateGroup("", 232, 64, 145, 113)
$ar_Cuestionario[2][1] = GUICtrlCreateRadio("1", 248, 80, 113, 17)
$ar_Cuestionario[2][2] = GUICtrlCreateRadio("3", 248, 104, 113, 17)
$ar_Cuestionario[2][3] = GUICtrlCreateRadio("4", 248, 128, 113, 17)
$ar_Cuestionario[2][4] = GUICtrlCreateRadio("5", 248, 152, 113, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
#EndRegion Pregunta 3

#Region Pregunta 4
$ar_Cuestionario[3][0] = GUICtrlCreateLabel("Cual de los siguientes NO ES un nº?", 232, 192, 176, 17)
$Group4 = GUICtrlCreateGroup("", 232, 208, 145, 113)
$ar_Cuestionario[3][1] = GUICtrlCreateRadio("1", 248, 224, 113, 17)
$ar_Cuestionario[3][2] = GUICtrlCreateRadio("O", 248, 248, 113, 17)
$ar_Cuestionario[3][3] = GUICtrlCreateRadio("4", 248, 272, 113, 17)
$ar_Cuestionario[3][4] = GUICtrlCreateRadio("5", 248, 296, 113, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
#EndRegion Pregunta 4

$Bt_Accion = GUICtrlCreateButton("Desactivar", 104, 344, 217, 33) ;boton para actuar sobre los controles
$Bt_Salir = GUICtrlCreateButton("Salir", 104, 380, 217, 33) ;Boton para salir
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Local $Accion = $GUI_DISABLE

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Bt_Accion
			Activar($Accion)
			If $Accion = $GUI_DISABLE Then
				$Accion = $GUI_ENABLE
				GUICtrlSetData($Bt_Accion, "Activar")
			Else
				$Accion = $GUI_DISABLE
				GUICtrlSetData($Bt_Accion, "Desactivar")
			EndIf
		Case $Bt_Salir
			Exit
	EndSwitch
WEnd

#Region Funciones ----------------------------------------
Func Activar($Act_Desac)	
	For $x = 0 To UBound($ar_Cuestionario) - 1 ; nº de preguntas para recorrer.
		For $y = 1 To UBound($ar_Cuestionario, 2) - 1 ; suma de pregunta y nº de respuestas. Si en vez de empezar en 0 empieza en 1 no desactiva el texto, solo las respuestas
			GUICtrlSetState($ar_Cuestionario[$x][$y], $Act_Desac)
		Next
	Next
EndFunc   ;==>Activar
#EndRegion Funciones ----------------------------------------
De esta forma, todo tu codigo se reduce a la funcion ACTIVAR() de mi ejemplo.

Creo que está bastante autoexplicado, pero si tienes alguna duda, te la intento resolver.

:smt040
wbueso
Aprendiz de Mago
Mensajes: 61
Registrado: 31 Dic 2013, 01:02

Re: Ayuda array

Mensaje por wbueso »

Danny, este es el codigo que termine, talves lo quiera leer y darme algun consejo o cambios que pueda hacer.
Estoy tratando de crear un programa que me pueda abril el facebook para no tener que estar ingresando mi nombre de usuario y pass, pero hasta el momento no lo he logrado y he intentado co _FF.au3 pero no lo entiendo.
podrias darme algun ejemplo porfavor.
este me funciona, pero me parece muy sencillo y sugeto a muchas fallas.
ShellExecute("www.facebook.com")
sleep(10000)
Send("******@hotmail.com")
Sleep(3000)
Send("{Tab}")
Sleep(3000)
Send("pass")
Sleep(3000)
Send("{Tab}")
Sleep(3000)
Send("{ENtER}")

Código: Seleccionar todo

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <File.au3>
#include <Array.au3>
#include <UpDownConstants.au3>
#include <EditConstants.au3>
;#include <WorD).au3>

GUICreate("Examen de EL TECLADO",1015,705,1,1)

$lTitulo = GUICtrlCreateLabel("Examen de EL TECLADO",400,5,600,25)
GUICtrlSetFont(-1, 16, 400, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)

Global $resul1, $resul2, $resul3, $resul4, $resul5, $resul6, $resul7, $resul8, $resul9, $resul10, $resul11, $resul12, $resul13, $resul14, $resul15
Global $resul16, $resul17, $resul18, $resul19, $resul20, $resul21, $resul22, $resul23, $resul24, $resul25, $resul26, $resul27, $resul28, $resul29, $resul30
Global $letra1, $letra2, $letra3, $letra4, $letra5, $letra6, $letra7, $letra8, $letra9, $letra10, $letra11, $letra12, $letra13, $letra14, $letra15
Global $letra16, $letra17, $letra18, $letra19, $letra20, $letra21, $letra22, $letra23, $letra24, $letra25, $letra26, $letra27, $letra28, $letra29, $letra30
Global $aviso, $nombre, $fecha, $titulo, $horario, $ttlselec, $lselec, $lttlSelec
Global $res, $contar, $corr = "Correcto", $inco = "Incorrecto", $ltitulo, $contar = 0, $file

Global $grupIzq = 5, $grup1Ar = 100, $grupLrg = 335, $grupAlt = 150
Global $radIzq =15, $radAr = 125, $radLrg = 315, $radAlt = 30

;Botones

$btnIngrestDat = GUICtrlCreateButton("Ingresar Datos",830,25,180,30)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)

$btnComExa = GUICtrlCreateButton("Comenzar el Examen",830,25,180,30)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetState($btnComExa,$GUI_HIDE)

$btnRevisar = GUICtrlCreateButton("Revisar el Examen",830,25,180,30)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetState($btnRevisar,$GUI_HIDE)

$btnslr = GUICtrlCreateButton("Salir",830,60,180,30)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)

;Informaciones

$lIngresDat = GUICtrlCreateLabel("Haga clic en el boton [ Ingresar Datos ] e ingrese sus datos",250,70,550,25)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
;GUICtrlSetState($lIngresDat,$GUI_HIDE)

$lComExa = GUICtrlCreateLabel("Haga clic en el botón [ COMENZAR EXAMEN ]",300,70,500,25)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetState($lComExa,$GUI_HIDE)

$lselecComEx = GUICtrlCreateLabel("Llene los datos y haga clic en el boton [ COMENZAR EXAMEN ]",250,70,550,25)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetState($lselecComEx,$GUI_HIDE)

$lttlSelec = GUICtrlCreateLabel("Seleccione las respuestas correctas y luego haga clic en el botón [ REVISAR EL EXAMEN ]",190,70,630,25)
GUICtrlSetFont(-1, 10, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetState($lttlSelec,$GUI_HIDE)

$lCompare = GUICtrlCreateLabel("Las correctas estan activadas y las que usted selecciono desactivadas",230,70,580,25)
GUICtrlSetFont(-1, 10, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetState($lCompare,$GUI_HIDE)

;Area de Datos
$lNombre = GUICtrlCreateLabel("Nombre: ",10,45,65,25)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)

$inNombre = GUICtrlCreateInput("",80,45,200,20)
GUICtrlSetState($inNombre,$GUI_DISABLE)

$lFecha = GUICtrlCreateLabel("Fecha: ",290,45,55,25)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)

$fecha = @MDAY
$mes = @MON
$ano = @YEAR

$InFecha = GUICtrlCreateInput($fecha&"/"&$mes&"/"&$ano,348,45,80,20)
GUICtrlSetState($InFecha,$GUI_DISABLE)

$dia = GUICtrlCreateCombo("",710,45,100,20)
GUICtrlSetData(-1, "Martes P.M.|Miércoles P.M.|Jueves P.M.|Viernes P.M.|Sábado A).M.|Sábado P.M.|Domingo A).M.|Domingo P.M.", "Martes P.M.")
GUICtrlSetState($dia,$GUI_DISABLE)
;$lselec = GUICtrlCreateLabel("Seleccione la respuesta correcta",370,110,350,25)

GUICtrlCreateGroup("Nivel",435,32,270,35)
$nivel1 = GUICtrlCreateRadio("1er Nivel ",440,45,60,20)
$nivel2 = GUICtrlCreateRadio("2do Nivel ",505,45,62,20)
$nivel3 = GUICtrlCreateRadio("3er Nivel ",575,45,60,20)
$nivel4 = GUICtrlCreateRadio("4to Nivel ",640,45,60,20)
GUICtrlSetState($nivel1,$GUI_CHECKED)
GUICtrlSetState($nivel1,$GUI_DISABLE)
GUICtrlSetState($nivel2,$GUI_DISABLE)
GUICtrlSetState($nivel3,$GUI_DISABLE)
GUICtrlSetState($nivel4,$GUI_DISABLE)

;Preguntas y Respuestas
Global $preg1 = "ESC (Escape)", $resp1 = "Cancela procesos y advertencias"
Global $preg2 = "TAB (Tabulación)", $resp2 = "A. Crea 5 espacios entre letras, B. Selecciona entre botones o pestañas"
Global $preg3 = "Bloq Mayus (Bloquear Mayúsculas)", $resp3 = "Activa todas las letras en mayúsculas"
Global $preg4 = "Shift", $resp4 = "A. Presionada permite escribir en mayúsculas, B. Saca el segundo símbolo de las teclas"
Global $preg5 = "Ctrl (Control)", $resp5 = "Tecla comodín, se combina con otras teclas (Ctrl + C = copiar)"
Global $preg6 = "Win (Logo de Windows)", $resp6 = "A. Abre el menú Inicio, B. Se puede combinar con teclas alfabéticas"
Global $preg7 = "Alt (Alterar)", $resp7 = "A. Activa la barra de menús en los programas, B. Se combina con otras teclas"
Global $preg8 = "Espacio (Space)", $resp8 = "A. Crea un espacio entre letras, B. Activa o desactiva cuadros de chequeo"
Global $preg9 = "Alt Gr (Alterar Gr)", $resp9 = "Saca el tercer símbolo de las teclas"
Global $preg10 = "Menú Contextual", $resp10 = "Abre un menú igual que el botón derecho del ratón"
Global $preg11 = "Enter o Intro (Entrar)", $resp11 = "A. Ejecuta lo seleccionado, B. Crea una nueva línea en el texto"
Global $preg12 = "Back Space (Retroceso)", $resp12 = "Borra los caracteres ubicados a la izquierda del puntero"
Global $preg13 = "F2", $resp13 = "Para renombrar los archivos seleccionados"
Global $preg14 = "Imp Pant (Imprimir Pantalla)", $resp14 = "Crea una copia exacta de lo que hay en la pantalla"
Global $preg15 = "Sup o Del (Suprimir)", $resp15 = "A. Elimina los archivos seleccionados, B. Borra los caracteres ubicados a la derecha del puntero"
Global $preg16 = "Ini (Inicio)", $resp16 = "Nos lleva al comienzo de la página"
Global $preg17 = "End (Fin)", $resp17 = "Nos lleva al final de la página"
Global $preg18 = "Re Pag (Página Arriba)", $resp18 = "Nos lleva a la página anterior"
Global $preg19 = "Av Pag (Página Abajo)", $resp19 = "Nos lleva a la siguiente página"
Global $preg20 = "Bloq Num (Bloqueo Numérico)", $resp20 = "Activa o desactiva el teclado numérico"
Global $preg21 = "/ (Pleca)", $resp21 = "Operador matemático de División"
Global $preg22 = "* (Asterisco)", $resp22 = "Operador matemático de multiplicación"
Global $preg23 = "- (Guión)", $resp23 = "Operador matemático de Resta"
Global $preg24 = "+ (Cruz)", $resp24 = "Operador matemático de Suma"
Global $preg25 = "F6", $resp25 = "Activa la barra de direcciones"
Global $preg26 = "Alt + F4", $resp26 = "Cierra las ventanas abiertas"
Global $preg27 = "F1", $resp27 = "Abre una ventana de ayuda o barra de ayuda"
Global $preg28 = "Alt + Tab", $resp28 = "Selecciona entre las ventanas abiertas"
Global $preg29 = "Ctrl + Alt + Sup", $resp29 = "Ejecuta el administrador de tareas de Windows"
Global $preg30 = "Logo de Windows + R", $resp30 = "Inicia el ejecutor de comandos"

GUICtrlCreateTab(1,75,1014,630)
Dim $opc[30][4]

GUICtrlCreateTabItem("PAGINA 1")
;Pregunta 1
$ttlpreg1 = GUICtrlCreateGroup("1. "&$Preg1,$grupIzq,$grup1Ar,$grupLrg,$grupAlt,$WS_DLGFRAME)

$opc[0][0] = GUICtrlCreateRadio("A). "&$resp1,$radIzq,$radAr,$radLrg,$radAlt,$BS_MULTILINE )
$opc[0][1] = GUICtrlCreateRadio("B). "&$resp8,$radIzq,$radAr+30,$radLrg,$radAlt,$BS_MULTILINE )
$opc[0][2] = GUICtrlCreateRadio("C). "&$resp15,$radIzq,$radAr+(30*2),$radLrg,$radAlt,$BS_MULTILINE )
$opc[0][3] = GUICtrlCreateRadio("D). "&$resp22,$radIzq,$radAr+(30*3),$radLrg,$radAlt,$BS_MULTILINE )

;Pregunta 2
$ttlpreg2 = GUICtrlCreateGroup("2. "&$Preg8,$grupIzq+335,$grup1Ar,$grupLrg,$grupAlt,$WS_DLGFRAME)

$opc[1][0] = GUICtrlCreateRadio("A). "&$resp29,$radIzq+335,$radAr,$radLrg,$radAlt,$BS_MULTILINE )
$opc[1][1] = GUICtrlCreateRadio("B). "&$resp6,$radIzq+335,$radAr+30,$radLrg,$radAlt,$BS_MULTILINE )
$opc[1][2] = GUICtrlCreateRadio("C). "&$resp8,$radIzq+335,$radAr+(30*2),$radLrg,$radAlt,$BS_MULTILINE )
$opc[1][3] = GUICtrlCreateRadio("D). "&$resp13,$radIzq+335,$radAr+(30*3),$radLrg,$radAlt,$BS_MULTILINE )

;Pregunta 3
$ttlpreg3 = GUICtrlCreateGroup("3. "&$Preg15,$grupIzq+(335*2),$grup1Ar,$grupLrg,$grupAlt,$WS_DLGFRAME)

$opc[2][0] = GUICtrlCreateRadio("A). "&$resp15,$radIzq+(335*2),$radAr,$radLrg,$radAlt,$BS_MULTILINE )
$opc[2][1] = GUICtrlCreateRadio("B). "&$resp20,$radIzq+(335*2),$radAr+30,$radLrg,$radAlt,$BS_MULTILINE )
$opc[2][2] = GUICtrlCreateRadio("C). "&$resp27,$radIzq+(335*2),$radAr+(30*2),$radLrg,$radAlt,$BS_MULTILINE )
$opc[2][3] = GUICtrlCreateRadio("D). "&$resp4,$radIzq+(335*2),$radAr+(30*3),$radLrg,$radAlt,$BS_MULTILINE )

;Pregunta 4
$ttlpreg4 = GUICtrlCreateGroup("4. "&$Preg22,$grupIzq,$grup1Ar+150,$grupLrg,$grupAlt,$WS_DLGFRAME)

$opc[3][0] = GUICtrlCreateRadio("A). "&$resp11,$radIzq,$radAr+150,$radLrg,$radAlt,$BS_MULTILINE )
$opc[3][1] = GUICtrlCreateRadio("B). "&$resp22,$radIzq,$radAr+30+150,$radLrg,$radAlt,$BS_MULTILINE )
$opc[3][2] = GUICtrlCreateRadio("C). "&$resp18,$radIzq,$radAr+(30*2)+150,$radLrg,$radAlt,$BS_MULTILINE )
$opc[3][3] = GUICtrlCreateRadio("D). "&$resp25,$radIzq,$radAr+(30*3)+150,$radLrg,$radAlt,$BS_MULTILINE )

;Pregunta 5
$ttlpreg5 = GUICtrlCreateGroup("5. "&$Preg29,$grupIzq+335,$grup1Ar+150,$grupLrg,$grupAlt,$WS_DLGFRAME)

$opc[4][0] = GUICtrlCreateRadio("A). "&$resp29,$radIzq+335,$radAr+150,$radLrg,$radAlt,$BS_MULTILINE )
$opc[4][1] = GUICtrlCreateRadio("B). "&$resp2,$radIzq+335,$radAr+30+150,$radLrg,$radAlt,$BS_MULTILINE )
$opc[4][2] = GUICtrlCreateRadio("C). "&$resp9,$radIzq+335,$radAr+(30*2)+150,$radLrg,$radAlt,$BS_MULTILINE )
$opc[4][3] = GUICtrlCreateRadio("D). "&$resp16,$radIzq+335,$radAr+(30*3)+150,$radLrg,$radAlt,$BS_MULTILINE )

;Pregunta 6
$ttlpreg6 = GUICtrlCreateGroup("6. "&$Preg6,$grupIzq+(335*2),$grup1Ar+150,$grupLrg,$grupAlt,$WS_DLGFRAME)

$opc[5][0] = GUICtrlCreateRadio("A). "&$resp23,$radIzq+(335*2),$radAr+150,$radLrg,$radAlt,$BS_MULTILINE )
$opc[5][1] = GUICtrlCreateRadio("B). "&$resp30,$radIzq+(335*2),$radAr+30+150,$radLrg,$radAlt,$BS_MULTILINE )
$opc[5][2] = GUICtrlCreateRadio("C). "&$resp6,$radIzq+(335*2),$radAr+(30*2)+150,$radLrg,$radAlt,$BS_MULTILINE )
$opc[5][3] = GUICtrlCreateRadio("D). "&$resp1,$radIzq+(335*2),$radAr+(30*3)+150,$radLrg,$radAlt,$BS_MULTILINE )

;Pregunta 7
$ttlpreg7 = GUICtrlCreateGroup("7. "&$Preg13,$grupIzq,$grup1Ar+(150*2),$grupLrg,$grupAlt,$WS_DLGFRAME)

$opc[6][0] = GUICtrlCreateRadio("A). "&$resp8,$radIzq,$radAr+(150*2),$radLrg,$radAlt,$BS_MULTILINE )
$opc[6][1] = GUICtrlCreateRadio("B). "&$resp15,$radIzq,$radAr+30+(150*2),$radLrg,$radAlt,$BS_MULTILINE )
$opc[6][2] = GUICtrlCreateRadio("C). "&$resp22,$radIzq,$radAr+(30*2)+(150*2),$radLrg,$radAlt,$BS_MULTILINE )
$opc[6][3] = GUICtrlCreateRadio("D). "&$resp13,$radIzq,$radAr+(30*3)+(150*2),$radLrg,$radAlt,$BS_MULTILINE )

;Pregunta 8
$ttlpreg8 = GUICtrlCreateGroup("8. "&$Preg20,$grupIzq+335,$grup1Ar+(150*2),$grupLrg,$grupAlt,$WS_DLGFRAME)

$opc[7][0] = GUICtrlCreateRadio("A). "&$resp29,$radIzq+335,$radAr+(150*2),$radLrg,$radAlt,$BS_MULTILINE )
$opc[7][1] = GUICtrlCreateRadio("B). "&$resp20,$radIzq+335,$radAr+30+(150*2),$radLrg,$radAlt,$BS_MULTILINE )
$opc[7][2] = GUICtrlCreateRadio("C). "&$resp6,$radIzq+335,$radAr+(30*2)+(150*2),$radLrg,$radAlt,$BS_MULTILINE )
$opc[7][3] = GUICtrlCreateRadio("D). "&$resp13,$radIzq+335,$radAr+(30*3)+(150*2),$radLrg,$radAlt,$BS_MULTILINE )

;Pregunta 9
$ttlpreg9 = GUICtrlCreateGroup("9. "&$Preg27,$grupIzq+(335*2),$grup1Ar+(150*2),$grupLrg,$grupAlt,$WS_DLGFRAME)

$opc[8][0] = GUICtrlCreateRadio("A). "&$resp20,$radIzq+(335*2),$radAr+(150*2),$radLrg,$radAlt,$BS_MULTILINE )
$opc[8][1] = GUICtrlCreateRadio("B). "&$resp4,$radIzq+(335*2),$radAr+30+(150*2),$radLrg,$radAlt,$BS_MULTILINE )
$opc[8][2] = GUICtrlCreateRadio("C). "&$resp27,$radIzq+(335*2),$radAr+(30*2)+(150*2),$radLrg,$radAlt,$BS_MULTILINE )
$opc[8][3] = GUICtrlCreateRadio("D). "&$resp11,$radIzq+(335*2),$radAr+(30*3)+(150*2),$radLrg,$radAlt,$BS_MULTILINE )

;Pregunta 10
$ttlpreg10 = GUICtrlCreateGroup("10. "&$Preg4,$grupIzq,$grup1Ar+(150*3),$grupLrg,$grupAlt,$WS_DLGFRAME)

$opc[9][0] = GUICtrlCreateRadio("A). "&$resp4,$radIzq,$radAr+(150*3),$radLrg,$radAlt,$BS_MULTILINE )
$opc[9][1] = GUICtrlCreateRadio("B). "&$resp18,$radIzq,$radAr+30+(150*3),$radLrg,$radAlt,$BS_MULTILINE )
$opc[9][2] = GUICtrlCreateRadio("C). "&$resp25,$radIzq,$radAr+(30*2)+(150*3),$radLrg,$radAlt,$BS_MULTILINE )
$opc[9][3] = GUICtrlCreateRadio("D). "&$resp2,$radIzq,$radAr+(30*3)+(150*3),$radLrg,$radAlt,$BS_MULTILINE )

;Pregunta 11
$ttlpreg11 = GUICtrlCreateGroup("11. "&$Preg11,$grupIzq+335,$grup1Ar+(150*3),$grupLrg,$grupAlt,$WS_DLGFRAME)

$opc[10][0] = GUICtrlCreateRadio("A). "&$resp9,$radIzq+335,$radAr+(150*3),$radLrg,$radAlt,$BS_MULTILINE )
$opc[10][1] = GUICtrlCreateRadio("B). "&$resp11,$radIzq+335,$radAr+30+(150*3),$radLrg,$radAlt,$BS_MULTILINE )
$opc[10][2] = GUICtrlCreateRadio("C). "&$resp16,$radIzq+335,$radAr+(30*2)+(150*3),$radLrg,$radAlt,$BS_MULTILINE )
$opc[10][3] = GUICtrlCreateRadio("D). "&$resp23,$radIzq+335,$radAr+(30*3)+(150*3),$radLrg,$radAlt,$BS_MULTILINE )

;Pregunta 12
$ttlpreg12 = GUICtrlCreateGroup("12. "&$Preg18,$grupIzq+(335*2),$grup1Ar+(150*3),$grupLrg,$grupAlt,$WS_DLGFRAME)

$opc[11][0] = GUICtrlCreateRadio("A). "&$resp30,$radIzq+(335*2),$radAr+(150*3),$radLrg,$radAlt,$BS_MULTILINE )
$opc[11][1] = GUICtrlCreateRadio("B). "&$resp7,$radIzq+(335*2),$radAr+30+(150*3),$radLrg,$radAlt,$BS_MULTILINE )
$opc[11][2] = GUICtrlCreateRadio("C). "&$resp14,$radIzq+(335*2),$radAr+(30*2)+(150*3),$radLrg,$radAlt,$BS_MULTILINE )
$opc[11][3] = GUICtrlCreateRadio("D). "&$resp18,$radIzq+(335*2),$radAr+(30*3)+(150*3),$radLrg,$radAlt,$BS_MULTILINE )

GUISetState(@SW_SHOW)

Global $Accion1 = $GUI_DISABLE, $Accion2 = $GUI_ENABLE
_desactivados($Accion1)
;_correctas()

While 1

	$nMsg = GUIGetMsg()

Switch $nMsg

Case $btnIngrestDat
	GUICtrlSetState($btnIngrestDat,$GUI_HIDE)
	GUICtrlSetState($btnComExa,$GUI_SHOW)
	GUICtrlSetState($lselecComEx,$GUI_SHOW)
	GUICtrlSetState($lIngresDat,$GUI_HIDE)
	_activarUsuario()

Case $btnComExa
	If GUICtrlRead($inNombre) = "" Then
		MsgBox(0,"Advertencia","Debe ingresar su nombre")
	Else
	GUICtrlSetState($btnComExa,$GUI_HIDE)
	GUICtrlSetState($btnRevisar,$GUI_SHOW)
	GUICtrlSetState($lttlSelec,$GUI_SHOW)
	_comenzar($Accion2)
	_desactivarUsuario()
EndIf
Case $btnRevisar
	GUICtrlSetState($lttlSelec,$GUI_HIDE)
	GUICtrlSetState($lIngresDat,$GUI_HIDE)
	GUICtrlSetState($btnRevisar,$GUI_DISABLE)
	GUICtrlSetState($lselecComEx,$GUI_HIDE)
	GUICtrlSetState($lCompare,$GUI_SHOW)
	_desactivados($Accion1)
	;_contar()
	_estado()
	_imprimir()

	$lpuntuacion = GUICtrlCreateLabel("Su puntuación es de "&$contar&" de 30",10,10,250,25)
		GUICtrlSetFont(-1, 12, 600, 0, "Arial")
		GUICtrlSetColor(-1, 0xFF0000)
Case $btnslr
	Exit

Case $GUI_EVENT_CLOSE
	Exit

EndSwitch
WEnd

Func _desactivados($Desac)

	   For $x = 0 To UBound($opc) - 1 ; nº de preguntas para recorrer.
      For $y = 0 To UBound($opc, 2) - 1 ; suma de pregunta y nº de respuestas. Si en vez de empezar en 0 empieza en 1 no desactiva el texto, solo las respuestas
         GUICtrlSetState($opc[$x][$y], $Desac)
      Next
  Next
EndFunc

Func _activarUsuario()
	GUICtrlSetState($inNombre,$GUI_ENABLE)
	GUICtrlSetState($inFecha,$GUI_ENABLE)
	GUICtrlSetState($nivel1,$GUI_ENABLE)
	GUICtrlSetState($nivel2,$GUI_ENABLE)
	GUICtrlSetState($nivel3,$GUI_ENABLE)
	GUICtrlSetState($nivel4,$GUI_ENABLE)
	GUICtrlSetState($dia,$GUI_ENABLE)
EndFunc

Func _desactivarUsuario()
	GUICtrlSetState($inNombre,$GUI_DISABLE)
	GUICtrlSetState($inFecha,$GUI_DISABLE)
	GUICtrlSetState($nivel1,$GUI_DISABLE)
	GUICtrlSetState($nivel2,$GUI_DISABLE)
	GUICtrlSetState($nivel3,$GUI_DISABLE)
	GUICtrlSetState($nivel4,$GUI_DISABLE)
	GUICtrlSetState($dia,$GUI_DISABLE)
EndFunc

Func _estado()

;Respuesta 1
$res1a = GUICtrlRead($opc[0][0])	;Lee el estado de los checkbox
If $res1a = 1 Then
	$contar = $contar + 1
	$resul1 = $corr
	$letra1 = "A"
EndIf
$res1b = GUICtrlRead($opc[0][1])
If $res1b = 1 Then
    $resul1 = $inco
    $letra1 = "B"
EndIf
$res1c = GUICtrlRead($opc[0][2])
If $res1c = 1 Then
    $resul1 = $inco
    $letra1 = "C"
EndIf
$res1d = GUICtrlRead($opc[0][3])
If $res1d = 1 Then
    $resul1 = $inco
    $letra1 = "D"
EndIf

;Respuesta 2
$res2a = GUICtrlRead($opc[1][0])
If $res2a = 1 Then
    $resul2 = $inco
    $letra2 = "A"
EndIf
$res2b = GUICtrlRead($opc[1][1])
If $res2b = 1 Then
    $resul2 = $inco
    $letra2 = "B"
EndIf
$res2c = GUICtrlRead($opc[1][2])
If $res2c = 1 Then
	$contar = $contar + 1
    $resul2 = $corr
    $letra2 = "C"
EndIf
$res2d = GUICtrlRead($opc[1][3])
If $res2d = 1 Then
    $resul2 = $inco
    $letra2 = "D"
EndIf

;Respuesta 3
$res3a = GUICtrlRead($opc[2][0])
If $res3a = 1 Then
	$contar = $contar + 1
    $resul3 = $corr
    $letra3 = "A"
EndIf
$res3b = GUICtrlRead($opc[2][1])
If $res3b = 1 Then
    $resul3 = $inco
    $letra3 = "B"
EndIf
$res3c = GUICtrlRead($opc[2][2])
If $res3c = 1 Then
    $resul3 = $inco
    $letra3 = "C"
EndIf
$res3d = GUICtrlRead($opc[2][3])
If $res3d = 1 Then
    $resul3 = $inco
    $letra3 = "D"
EndIf

;Respuesta 4
$res4a = GUICtrlRead($opc[3][0])
If $res4a = 1 Then
	$resul4 = $inco
    $letra4 = "A"
EndIf
$res4b = GUICtrlRead($opc[3][1])
If $res4b = 1 Then
    $contar = $contar + 1
    $resul4 = $corr
    $letra4 = "B"
EndIf
$res4c = GUICtrlRead($opc[3][2])
If $res4c = 1 Then
    $resul4 = $inco
    $letra4 = "C"
EndIf
$res4d = GUICtrlRead($opc[3][3])
If $res4d = 1 Then
    $resul4 = $inco
    $letra4 = "D"
EndIf

;Respuesta 5
$res5a = GUICtrlRead($opc[4][0])
If $res5a = 1 Then
	$contar = $contar + 1
    $resul5 = $corr
    $letra5 = "A"
EndIf
$res5b = GUICtrlRead($opc[4][1])
If $res5b = 1 Then
    $resul5 = $inco
    $letra5 = "B"
EndIf
$res5c = GUICtrlRead($opc[4][2])
If $res5c = 1 Then
    $resul5 = $inco
    $letra5 = "C"
EndIf
$res5d = GUICtrlRead($opc[4][3])
If $res5d = 1 Then
    $resul5 = $inco
    $letra5 = "D"
EndIf

;Respuesta 6
$res6a = GUICtrlRead($opc[5][0])
If $res6a = 1 Then
    $resul6 = $inco
    $letra6 = "A"
EndIf
$res6b = GUICtrlRead($opc[5][1])
If $res6b = 1 Then
    $resul6 = $inco
    $letra6 = "B"
EndIf
$res6c = GUICtrlRead($opc[5][2])
If $res6c = 1 Then
	$contar = $contar + 1
    $resul6 = $corr
    $letra6 = "C"
EndIf
$res6d = GUICtrlRead($opc[5][3])
If $res6d = 1 Then
    $resul6 = $inco
    $letra6 = "D"
EndIf

;Respuesta 7
$res7a = GUICtrlRead($opc[6][0])
If $res7a = 1 Then
    $resul7 = $inco
    $letra7 = "A"
EndIf
$res7b = GUICtrlRead($opc[6][1])
If $res7b = 1 Then
    $resul7 = $inco
    $letra7 = "B"
EndIf
$res7c = GUICtrlRead($opc[6][2])
If $res7c = 1 Then
    $resul7 = $inco
    $letra7 = "C"
EndIf
$res7d = GUICtrlRead($opc[6][3])
If $res7d = 1 Then
	$contar = $contar + 1
    $resul7 = $corr
    $letra7 = "D"
EndIf

;Respuesta 8
$res8a = GUICtrlRead($opc[7][0])
If $res8a = 1 Then
    $resul8 = $inco
    $letra8 = "A"
EndIf
$res8b = GUICtrlRead($opc[7][1])
If $res8b = 1 Then
	$contar = $contar + 1
    $resul8 = $corr
    $letra8 = "B"
EndIf
$res8c = GUICtrlRead($opc[7][2])
If $res8c = 1 Then
    $resul8 = $inco
    $letra8 = "C"
EndIf
$res8d = GUICtrlRead($opc[7][3])
If $res8d = 1 Then
    $resul8 = $inco
    $letra8 = "D"
EndIf

;Respuesta 9
$res9a = GUICtrlRead($opc[8][0])
If $res9a = 1 Then
    $resul9 = $inco
    $letra9 = "A"
EndIf
$res9b = GUICtrlRead($opc[8][1])
If $res9b = 1 Then
    $resul9 = $inco
    $letra9 = "B"
EndIf
$res9c = GUICtrlRead($opc[8][2])
If $res9c = 1 Then
	$contar = $contar + 1
    $resul9 = $corr
    $letra9 = "C"
EndIf
$res9d = GUICtrlRead($opc[8][3])
If $res9d = 1 Then
    $resul9 = $inco
    $letra9 = "D"
EndIf

;Respuesta 10
$res10a = GUICtrlRead($opc[9][0])
If $res10a = 1 Then
	$contar = $contar + 1
    $resul10 = $corr
    $letra10 = "A"
EndIf
$res10b = GUICtrlRead($opc[9][1])
If $res10b = 1 Then
    $resul10 = $inco
    $letra10 = "B"
EndIf
$res10c = GUICtrlRead($opc[9][2])
If $res10c = 1 Then
    $resul10 = $inco
    $letra10 = "C"
EndIf
$res10d = GUICtrlRead($opc[9][3])
If $res10d = 1 Then
    $resul10 = $inco
    $letra10 = "D"
EndIf

;Respuesta 11
$res11a = GUICtrlRead($opc[10][0])
If $res11a = 1 Then
    $resul11 = $inco
    $letra11 = "A"
EndIf
$res11b = GUICtrlRead($opc[10][1])
If $res11b = 1 Then
	$contar = $contar + 1
    $resul11 = $corr
    $letra11 = "B"
EndIf
$res11c = GUICtrlRead($opc[10][2])
If $res11c = 1 Then
    $resul11 = $inco
    $letra11 = "C"
EndIf
$res11d = GUICtrlRead($opc[10][3])
If $res11d = 1 Then
    $resul11 = $inco
    $letra11 = "D"
EndIf

;Respuesta 12
$res12a = GUICtrlRead($opc[11][0])
If $res12a = 1 Then
    $resul12 = $inco
    $letra12 = "A"
EndIf
$res12b = GUICtrlRead($opc[11][1])
If $res12b = 1 Then
    $resul12 = $inco
    $letra12 = "B"
EndIf
$res12c = GUICtrlRead($opc[11][2])
If $res12c = 1 Then
    $resul12 = $inco
    $letra12 = "C"
EndIf
$res12d = GUICtrlRead($opc[11][3])
If $res12d = 1 Then
	$contar = $contar + 1
    $resul12 = $corr
    $letra12 = "D"
EndIf

If $contar > 28 Then
	$aviso = "Felicidades eres un genio, tu esfuerzo a dado frutos"&@CRLF&@CRLF&"Estoy orgulloso de ti"
EndIf
If $contar > 20 and $contar < 28 Then
	$aviso = "Muy bien, pero puedes hacerlo mejor"&@CRLF&@CRLF&"Yo se que tienes el poder de hacerlo"
EndIf
If $contar > 15 and $contar < 20 Then
	$aviso = "Debes mejorar, preocupate y esfuerzate mas"&@CRLF&@CRLF&"Dedicale un poco mas de tiempo a los estudios"
EndIf
If $contar < 20 Then
	$aviso = "Tienes que estudiar mas, tus calificaciones son muy bajas"&@CRLF&@CRLF&"Si deseas ayuda, dimelo que con mucho gusto te ayudare"
EndIf
MsgBox(0,"Examen del Teclado","Su puntuacion es de "&$contar&" de 30"&@CRLF&@CRLF&$aviso)

EndFunc

Func _comenzar($Activ)

		For $x = 0 To UBound($opc) - 1 ; nº de preguntas para recorrer.
For $y = 0 To UBound($opc, 2) - 1
GUICtrlSetState($opc[$x][$y], $Activ)
	 Next
	 Next
 EndFunc

Func _Imprimir()

	If GUICtrlRead($nivel1) = 1 Then
		 $nivel = "Nivel 1"
		 EndIf
		 If GUICtrlRead($nivel2) = 1 Then
		 $nivel = "Nivel 2"
		 EndIf
		 If GUICtrlRead($nivel3) = 1 Then
		 $nivel = "Nivel 3"
		 EndIf
		 If GUICtrlRead($nivel4) = 1 Then
		 $nivel = "Nivel 4"
	  	 EndIf
	  $nombre = GUICtrlRead($inNombre)
	  $fecha = GUICtrlRead($inFecha)
	  $titulo = GUICtrlRead($lTitulo)
	  $horario = GUICtrlRead($dia)
	  $ttlSelec = GUICtrlRead($lttlSelec)

	$arreglo = StringTrimRight($ttlSelec,52)

	$file = FileOpen(@DesktopCommonDir&"\Examen Teclado "&$nombre&".doc",1)
	Sleep(2000)
		$txtttl = "					"&$titulo&@CRLF&@CRLF&"Puntuacion total: "&$contar&" de 30"&@CRLF&@CRLF&"Nombre: "&$nombre&"		Fecha: "&$fecha&@CRLF&@CRLF&"Nivel: "&$nivel&"		Horario de clases: "&$horario&@CRLF&@CRLF&"				"&$arreglo&@CRLF&@CRLF
$txt1 = GUICtrlRead($ttlpreg1)&@CRLF&@CRLF&GUICtrlRead($opc[0][0],1)&@CRLF&GUICtrlRead($opc[0][1],1)&@CRLF&GUICtrlRead($opc[0][2],1)&@CRLF&GUICtrlRead($opc[0][3],1)&@CRLF&"Opción: "&$letra1&" "&$resul1&@CRLF&@CRLF
$txt2 = GUICtrlRead($ttlpreg2)&@CRLF&@CRLF&GUICtrlRead($opc[1][0],1)&@CRLF&GUICtrlRead($opc[1][1],1)&@CRLF&GUICtrlRead($opc[1][2],1)&@CRLF&GUICtrlRead($opc[1][3],1)&@CRLF&"Opción: "&$letra2&" "&$resul2&@CRLF&@CRLF
$txt3 = GUICtrlRead($ttlpreg3)&@CRLF&@CRLF&GUICtrlRead($opc[2][0],1)&@CRLF&GUICtrlRead($opc[2][1],1)&@CRLF&GUICtrlRead($opc[2][2],1)&@CRLF&GUICtrlRead($opc[2][3],1)&@CRLF&"Opción: "&$letra3&" "&$resul3&@CRLF&@CRLF
$txt4 = GUICtrlRead($ttlpreg4)&@CRLF&@CRLF&GUICtrlRead($opc[3][0],1)&@CRLF&GUICtrlRead($opc[3][1],1)&@CRLF&GUICtrlRead($opc[3][2],1)&@CRLF&GUICtrlRead($opc[3][3],1)&@CRLF&"Opción: "&$letra4&" "&$resul4&@CRLF&@CRLF
$txt5 = GUICtrlRead($ttlpreg5)&@CRLF&@CRLF&GUICtrlRead($opc[4][0],1)&@CRLF&GUICtrlRead($opc[4][1],1)&@CRLF&GUICtrlRead($opc[4][2],1)&@CRLF&GUICtrlRead($opc[4][3],1)&@CRLF&"Opción: "&$letra5&" "&$resul5&@CRLF&@CRLF
$txt6 = GUICtrlRead($ttlpreg6)&@CRLF&@CRLF&GUICtrlRead($opc[5][0],1)&@CRLF&GUICtrlRead($opc[5][1],1)&@CRLF&GUICtrlRead($opc[5][2],1)&@CRLF&GUICtrlRead($opc[5][3],1)&@CRLF&"Opción: "&$letra6&" "&$resul6&@CRLF&@CRLF
$txt7 = GUICtrlRead($ttlpreg7)&@CRLF&@CRLF&GUICtrlRead($opc[6][0],1)&@CRLF&GUICtrlRead($opc[6][1],1)&@CRLF&GUICtrlRead($opc[6][2],1)&@CRLF&GUICtrlRead($opc[6][3],1)&@CRLF&"Opción: "&$letra7&" "&$resul7&@CRLF&@CRLF
$txt8 = GUICtrlRead($ttlpreg8)&@CRLF&@CRLF&GUICtrlRead($opc[7][0],1)&@CRLF&GUICtrlRead($opc[7][1],1)&@CRLF&GUICtrlRead($opc[7][2],1)&@CRLF&GUICtrlRead($opc[7][3],1)&@CRLF&"Opción: "&$letra8&" "&$resul8&@CRLF&@CRLF
$txt9 = GUICtrlRead($ttlpreg9)&@CRLF&@CRLF&GUICtrlRead($opc[8][0],1)&@CRLF&GUICtrlRead($opc[8][1],1)&@CRLF&GUICtrlRead($opc[8][2],1)&@CRLF&GUICtrlRead($opc[8][3],1)&@CRLF&"Opción: "&$letra9&" "&$resul9&@CRLF&@CRLF
$txt10 = GUICtrlRead($ttlpreg10)&@CRLF&@CRLF&GUICtrlRead($opc[9][0],1)&@CRLF&GUICtrlRead($opc[9][1],1)&@CRLF&GUICtrlRead($opc[9][2],1)&@CRLF&GUICtrlRead($opc[9][3],1)&@CRLF&"Opción: "&$letra10&" "&$resul10&@CRLF&@CRLF
$txt11 = GUICtrlRead($ttlpreg11)&@CRLF&@CRLF&GUICtrlRead($opc[10][0],1)&@CRLF&GUICtrlRead($opc[10][1],1)&@CRLF&GUICtrlRead($opc[10][2],1)&@CRLF&GUICtrlRead($opc[10][3],1)&@CRLF&"Opción: "&$letra11&" "&$resul11&@CRLF&@CRLF
$txt12 = GUICtrlRead($ttlpreg12)&@CRLF&@CRLF&GUICtrlRead($opc[11][0],1)&@CRLF&GUICtrlRead($opc[11][1],1)&@CRLF&GUICtrlRead($opc[11][2],1)&@CRLF&GUICtrlRead($opc[11][3],1)&@CRLF&"Opción: "&$letra12&" "&$resul12&@CRLF&@CRLF

FileWrite($file,$txtttl)
FileWrite($file,$txt1)
FileWrite($file,$txt2)
FileWrite($file,$txt3)
FileWrite($file,$txt4)
FileWrite($file,$txt5)
FileWrite($file,$txt6)
FileWrite($file,$txt7)
FileWrite($file,$txt8)
FileWrite($file,$txt9)
FileWrite($file,$txt10)
FileWrite($file,$txt11)
FileWrite($file,$txt12)
	Sleep(2000)
	FileSetAttrib(@DesktopCommonDir&"\Examen Teclado "&$nombre&".doc","+RS")
	FileClose($file)

EndFunc
Avatar de Usuario
juantxo
Hacker del Foro
Mensajes: 78
Registrado: 02 Abr 2008, 13:36

Re: Ayuda array

Mensaje por juantxo »

Guau! Esto que has hecho tiene muy buena pinta!!!

Solo una sugerencia, para ahorrarte muuuchas lineas de codigo, y errores de copy/paste... ARRAYS

Si tienes que hacer una tarea varias veces, piensa en un bucle FOR y un Array para hacerlo.

Por ejemplo, me he tomado la libertad de modificar tu codigo, para que la comprobacion de las respuestas se haga en un bucle. Para hacerlo en la creacion de los controles he creado un nuevo elemento en el Array que guarda la respuesta correcta.

Código: Seleccionar todo

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <File.au3>
#include <Array.au3>
#include <UpDownConstants.au3>
#include <EditConstants.au3>
;#include <WorD).au3>

GUICreate("Examen de EL TECLADO", 1015, 705, 1, 1)

$lTitulo = GUICtrlCreateLabel("Examen de EL TECLADO", 400, 5, 600, 25)
GUICtrlSetFont(-1, 16, 400, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)

Global $resul1, $resul2, $resul3, $resul4, $resul5, $resul6, $resul7, $resul8, $resul9, $resul10, $resul11, $resul12, $resul13, $resul14, $resul15
Global $resul16, $resul17, $resul18, $resul19, $resul20, $resul21, $resul22, $resul23, $resul24, $resul25, $resul26, $resul27, $resul28, $resul29, $resul30
Global $letra1, $letra2, $letra3, $letra4, $letra5, $letra6, $letra7, $letra8, $letra9, $letra10, $letra11, $letra12, $letra13, $letra14, $letra15
Global $letra16, $letra17, $letra18, $letra19, $letra20, $letra21, $letra22, $letra23, $letra24, $letra25, $letra26, $letra27, $letra28, $letra29, $letra30
Global $aviso, $nombre, $fecha, $titulo, $horario, $ttlselec, $lselec, $lttlSelec
Global $res, $contar, $corr = "Correcto", $inco = "Incorrecto", $lTitulo, $contar = 0, $file

Global $grupIzq = 5, $grup1Ar = 100, $grupLrg = 335, $grupAlt = 150
Global $radIzq = 15, $radAr = 125, $radLrg = 315, $radAlt = 30

;Botones

$btnIngrestDat = GUICtrlCreateButton("Ingresar Datos", 830, 25, 180, 30)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)

$btnComExa = GUICtrlCreateButton("Comenzar el Examen", 830, 25, 180, 30)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetState($btnComExa, $GUI_HIDE)

$btnRevisar = GUICtrlCreateButton("Revisar el Examen", 830, 25, 180, 30)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetState($btnRevisar, $GUI_HIDE)

$btnslr = GUICtrlCreateButton("Salir", 830, 60, 180, 30)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)

;Informaciones

$lIngresDat = GUICtrlCreateLabel("Haga clic en el boton [ Ingresar Datos ] e ingrese sus datos", 250, 70, 550, 25)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
;GUICtrlSetState($lIngresDat,$GUI_HIDE)

$lComExa = GUICtrlCreateLabel("Haga clic en el botón [ COMENZAR EXAMEN ]", 300, 70, 500, 25)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetState($lComExa, $GUI_HIDE)

$lselecComEx = GUICtrlCreateLabel("Llene los datos y haga clic en el boton [ COMENZAR EXAMEN ]", 250, 70, 550, 25)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetState($lselecComEx, $GUI_HIDE)

$lttlSelec = GUICtrlCreateLabel("Seleccione las respuestas correctas y luego haga clic en el botón [ REVISAR EL EXAMEN ]", 190, 70, 630, 25)
GUICtrlSetFont(-1, 10, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetState($lttlSelec, $GUI_HIDE)

$lCompare = GUICtrlCreateLabel("Las correctas estan activadas y las que usted selecciono desactivadas", 230, 70, 580, 25)
GUICtrlSetFont(-1, 10, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetState($lCompare, $GUI_HIDE)

;Area de Datos
$lNombre = GUICtrlCreateLabel("Nombre: ", 10, 45, 65, 25)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)

$inNombre = GUICtrlCreateInput("", 80, 45, 200, 20)
GUICtrlSetState($inNombre, $GUI_DISABLE)

$lFecha = GUICtrlCreateLabel("Fecha: ", 290, 45, 55, 25)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)

$fecha = @MDAY
$mes = @MON
$ano = @YEAR

$InFecha = GUICtrlCreateInput($fecha & "/" & $mes & "/" & $ano, 348, 45, 80, 20)
GUICtrlSetState($InFecha, $GUI_DISABLE)

$dia = GUICtrlCreateCombo("", 710, 45, 100, 20)
GUICtrlSetData(-1, "Martes P.M.|Miércoles P.M.|Jueves P.M.|Viernes P.M.|Sábado A).M.|Sábado P.M.|Domingo A).M.|Domingo P.M.", "Martes P.M.")
GUICtrlSetState($dia, $GUI_DISABLE)
;$lselec = GUICtrlCreateLabel("Seleccione la respuesta correcta",370,110,350,25)

GUICtrlCreateGroup("Nivel", 435, 32, 270, 35)
$nivel1 = GUICtrlCreateRadio("1er Nivel ", 440, 45, 60, 20)
$nivel2 = GUICtrlCreateRadio("2do Nivel ", 505, 45, 62, 20)
$nivel3 = GUICtrlCreateRadio("3er Nivel ", 575, 45, 60, 20)
$nivel4 = GUICtrlCreateRadio("4to Nivel ", 640, 45, 60, 20)
GUICtrlSetState($nivel1, $GUI_CHECKED)
GUICtrlSetState($nivel1, $GUI_DISABLE)
GUICtrlSetState($nivel2, $GUI_DISABLE)
GUICtrlSetState($nivel3, $GUI_DISABLE)
GUICtrlSetState($nivel4, $GUI_DISABLE)

;Preguntas y Respuestas
Global $preg1 = "ESC (Escape)", $resp1 = "Cancela procesos y advertencias"
Global $preg2 = "TAB (Tabulación)", $resp2 = "A. Crea 5 espacios entre letras, B. Selecciona entre botones o pestañas"
Global $preg3 = "Bloq Mayus (Bloquear Mayúsculas)", $resp3 = "Activa todas las letras en mayúsculas"
Global $preg4 = "Shift", $resp4 = "A. Presionada permite escribir en mayúsculas, B. Saca el segundo símbolo de las teclas"
Global $preg5 = "Ctrl (Control)", $resp5 = "Tecla comodín, se combina con otras teclas (Ctrl + C = copiar)"
Global $preg6 = "Win (Logo de Windows)", $resp6 = "A. Abre el menú Inicio, B. Se puede combinar con teclas alfabéticas"
Global $preg7 = "Alt (Alterar)", $resp7 = "A. Activa la barra de menús en los programas, B. Se combina con otras teclas"
Global $preg8 = "Espacio (Space)", $resp8 = "A. Crea un espacio entre letras, B. Activa o desactiva cuadros de chequeo"
Global $preg9 = "Alt Gr (Alterar Gr)", $resp9 = "Saca el tercer símbolo de las teclas"
Global $preg10 = "Menú Contextual", $resp10 = "Abre un menú igual que el botón derecho del ratón"
Global $preg11 = "Enter o Intro (Entrar)", $resp11 = "A. Ejecuta lo seleccionado, B. Crea una nueva línea en el texto"
Global $preg12 = "Back Space (Retroceso)", $resp12 = "Borra los caracteres ubicados a la izquierda del puntero"
Global $preg13 = "F2", $resp13 = "Para renombrar los archivos seleccionados"
Global $preg14 = "Imp Pant (Imprimir Pantalla)", $resp14 = "Crea una copia exacta de lo que hay en la pantalla"
Global $preg15 = "Sup o Del (Suprimir)", $resp15 = "A. Elimina los archivos seleccionados, B. Borra los caracteres ubicados a la derecha del puntero"
Global $preg16 = "Ini (Inicio)", $resp16 = "Nos lleva al comienzo de la página"
Global $preg17 = "End (Fin)", $resp17 = "Nos lleva al final de la página"
Global $preg18 = "Re Pag (Página Arriba)", $resp18 = "Nos lleva a la página anterior"
Global $preg19 = "Av Pag (Página Abajo)", $resp19 = "Nos lleva a la siguiente página"
Global $preg20 = "Bloq Num (Bloqueo Numérico)", $resp20 = "Activa o desactiva el teclado numérico"
Global $preg21 = "/ (Pleca)", $resp21 = "Operador matemático de División"
Global $preg22 = "* (Asterisco)", $resp22 = "Operador matemático de multiplicación"
Global $preg23 = "- (Guión)", $resp23 = "Operador matemático de Resta"
Global $preg24 = "+ (Cruz)", $resp24 = "Operador matemático de Suma"
Global $preg25 = "F6", $resp25 = "Activa la barra de direcciones"
Global $preg26 = "Alt + F4", $resp26 = "Cierra las ventanas abiertas"
Global $preg27 = "F1", $resp27 = "Abre una ventana de ayuda o barra de ayuda"
Global $preg28 = "Alt + Tab", $resp28 = "Selecciona entre las ventanas abiertas"
Global $preg29 = "Ctrl + Alt + Sup", $resp29 = "Ejecuta el administrador de tareas de Windows"
Global $preg30 = "Logo de Windows + R", $resp30 = "Inicia el ejecutor de comandos"

GUICtrlCreateTab(1, 75, 1014, 630)
Dim $opc[30][5]
Dim $ar_LetraResp [12]

GUICtrlCreateTabItem("PAGINA 1")
;Pregunta 1
$ttlpreg1 = GUICtrlCreateGroup("1. " & $preg1, $grupIzq, $grup1Ar, $grupLrg, $grupAlt, $WS_DLGFRAME)

$opc[0][0] = GUICtrlCreateRadio("A). " & $resp1, $radIzq, $radAr, $radLrg, $radAlt, $BS_MULTILINE)
$opc[0][1] = GUICtrlCreateRadio("B). " & $resp8, $radIzq, $radAr + 30, $radLrg, $radAlt, $BS_MULTILINE)
$opc[0][2] = GUICtrlCreateRadio("C). " & $resp15, $radIzq, $radAr + (30 * 2), $radLrg, $radAlt, $BS_MULTILINE)
$opc[0][3] = GUICtrlCreateRadio("D). " & $resp22, $radIzq, $radAr + (30 * 3), $radLrg, $radAlt, $BS_MULTILINE)
$opc[0][4] = 0 ; Respuesta correcta
;Pregunta 2
$ttlpreg2 = GUICtrlCreateGroup("2. " & $preg8, $grupIzq + 335, $grup1Ar, $grupLrg, $grupAlt, $WS_DLGFRAME)

$opc[1][0] = GUICtrlCreateRadio("A). " & $resp29, $radIzq + 335, $radAr, $radLrg, $radAlt, $BS_MULTILINE)
$opc[1][1] = GUICtrlCreateRadio("B). " & $resp6, $radIzq + 335, $radAr + 30, $radLrg, $radAlt, $BS_MULTILINE)
$opc[1][2] = GUICtrlCreateRadio("C). " & $resp8, $radIzq + 335, $radAr + (30 * 2), $radLrg, $radAlt, $BS_MULTILINE)
$opc[1][3] = GUICtrlCreateRadio("D). " & $resp13, $radIzq + 335, $radAr + (30 * 3), $radLrg, $radAlt, $BS_MULTILINE)
$opc[1][4] = 2 ; Respuesta correcta

;Pregunta 3
$ttlpreg3 = GUICtrlCreateGroup("3. " & $preg15, $grupIzq + (335 * 2), $grup1Ar, $grupLrg, $grupAlt, $WS_DLGFRAME)

$opc[2][0] = GUICtrlCreateRadio("A). " & $resp15, $radIzq + (335 * 2), $radAr, $radLrg, $radAlt, $BS_MULTILINE)
$opc[2][1] = GUICtrlCreateRadio("B). " & $resp20, $radIzq + (335 * 2), $radAr + 30, $radLrg, $radAlt, $BS_MULTILINE)
$opc[2][2] = GUICtrlCreateRadio("C). " & $resp27, $radIzq + (335 * 2), $radAr + (30 * 2), $radLrg, $radAlt, $BS_MULTILINE)
$opc[2][3] = GUICtrlCreateRadio("D). " & $resp4, $radIzq + (335 * 2), $radAr + (30 * 3), $radLrg, $radAlt, $BS_MULTILINE)
$opc[2][4] = 0 ; Respuesta correcta

;Pregunta 4
$ttlpreg4 = GUICtrlCreateGroup("4. " & $preg22, $grupIzq, $grup1Ar + 150, $grupLrg, $grupAlt, $WS_DLGFRAME)

$opc[3][0] = GUICtrlCreateRadio("A). " & $resp11, $radIzq, $radAr + 150, $radLrg, $radAlt, $BS_MULTILINE)
$opc[3][1] = GUICtrlCreateRadio("B). " & $resp22, $radIzq, $radAr + 30 + 150, $radLrg, $radAlt, $BS_MULTILINE)
$opc[3][2] = GUICtrlCreateRadio("C). " & $resp18, $radIzq, $radAr + (30 * 2) + 150, $radLrg, $radAlt, $BS_MULTILINE)
$opc[3][3] = GUICtrlCreateRadio("D). " & $resp25, $radIzq, $radAr + (30 * 3) + 150, $radLrg, $radAlt, $BS_MULTILINE)
$opc[3][4] = 1 ; Respuesta correcta

;Pregunta 5
$ttlpreg5 = GUICtrlCreateGroup("5. " & $preg29, $grupIzq + 335, $grup1Ar + 150, $grupLrg, $grupAlt, $WS_DLGFRAME)

$opc[4][0] = GUICtrlCreateRadio("A). " & $resp29, $radIzq + 335, $radAr + 150, $radLrg, $radAlt, $BS_MULTILINE)
$opc[4][1] = GUICtrlCreateRadio("B). " & $resp2, $radIzq + 335, $radAr + 30 + 150, $radLrg, $radAlt, $BS_MULTILINE)
$opc[4][2] = GUICtrlCreateRadio("C). " & $resp9, $radIzq + 335, $radAr + (30 * 2) + 150, $radLrg, $radAlt, $BS_MULTILINE)
$opc[4][3] = GUICtrlCreateRadio("D). " & $resp16, $radIzq + 335, $radAr + (30 * 3) + 150, $radLrg, $radAlt, $BS_MULTILINE)
$opc[4][4] = 0 ; Respuesta correcta

;Pregunta 6
$ttlpreg6 = GUICtrlCreateGroup("6. " & $preg6, $grupIzq + (335 * 2), $grup1Ar + 150, $grupLrg, $grupAlt, $WS_DLGFRAME)

$opc[5][0] = GUICtrlCreateRadio("A). " & $resp23, $radIzq + (335 * 2), $radAr + 150, $radLrg, $radAlt, $BS_MULTILINE)
$opc[5][1] = GUICtrlCreateRadio("B). " & $resp30, $radIzq + (335 * 2), $radAr + 30 + 150, $radLrg, $radAlt, $BS_MULTILINE)
$opc[5][2] = GUICtrlCreateRadio("C). " & $resp6, $radIzq + (335 * 2), $radAr + (30 * 2) + 150, $radLrg, $radAlt, $BS_MULTILINE)
$opc[5][3] = GUICtrlCreateRadio("D). " & $resp1, $radIzq + (335 * 2), $radAr + (30 * 3) + 150, $radLrg, $radAlt, $BS_MULTILINE)
$opc[5][4] = 2 ; Respuesta correcta

;Pregunta 7
$ttlpreg7 = GUICtrlCreateGroup("7. " & $preg13, $grupIzq, $grup1Ar + (150 * 2), $grupLrg, $grupAlt, $WS_DLGFRAME)

$opc[6][0] = GUICtrlCreateRadio("A). " & $resp8, $radIzq, $radAr + (150 * 2), $radLrg, $radAlt, $BS_MULTILINE)
$opc[6][1] = GUICtrlCreateRadio("B). " & $resp15, $radIzq, $radAr + 30 + (150 * 2), $radLrg, $radAlt, $BS_MULTILINE)
$opc[6][2] = GUICtrlCreateRadio("C). " & $resp22, $radIzq, $radAr + (30 * 2) + (150 * 2), $radLrg, $radAlt, $BS_MULTILINE)
$opc[6][3] = GUICtrlCreateRadio("D). " & $resp13, $radIzq, $radAr + (30 * 3) + (150 * 2), $radLrg, $radAlt, $BS_MULTILINE)
$opc[6][3] = 2 ; Respuesta correcta

;Pregunta 8
$ttlpreg8 = GUICtrlCreateGroup("8. " & $preg20, $grupIzq + 335, $grup1Ar + (150 * 2), $grupLrg, $grupAlt, $WS_DLGFRAME)

$opc[7][0] = GUICtrlCreateRadio("A). " & $resp29, $radIzq + 335, $radAr + (150 * 2), $radLrg, $radAlt, $BS_MULTILINE)
$opc[7][1] = GUICtrlCreateRadio("B). " & $resp20, $radIzq + 335, $radAr + 30 + (150 * 2), $radLrg, $radAlt, $BS_MULTILINE)
$opc[7][2] = GUICtrlCreateRadio("C). " & $resp6, $radIzq + 335, $radAr + (30 * 2) + (150 * 2), $radLrg, $radAlt, $BS_MULTILINE)
$opc[7][3] = GUICtrlCreateRadio("D). " & $resp13, $radIzq + 335, $radAr + (30 * 3) + (150 * 2), $radLrg, $radAlt, $BS_MULTILINE)
$opc[7][4] = 1 ; Respuesta correcta

;Pregunta 9
$ttlpreg9 = GUICtrlCreateGroup("9. " & $preg27, $grupIzq + (335 * 2), $grup1Ar + (150 * 2), $grupLrg, $grupAlt, $WS_DLGFRAME)

$opc[8][0] = GUICtrlCreateRadio("A). " & $resp20, $radIzq + (335 * 2), $radAr + (150 * 2), $radLrg, $radAlt, $BS_MULTILINE)
$opc[8][1] = GUICtrlCreateRadio("B). " & $resp4, $radIzq + (335 * 2), $radAr + 30 + (150 * 2), $radLrg, $radAlt, $BS_MULTILINE)
$opc[8][2] = GUICtrlCreateRadio("C). " & $resp27, $radIzq + (335 * 2), $radAr + (30 * 2) + (150 * 2), $radLrg, $radAlt, $BS_MULTILINE)
$opc[8][3] = GUICtrlCreateRadio("D). " & $resp11, $radIzq + (335 * 2), $radAr + (30 * 3) + (150 * 2), $radLrg, $radAlt, $BS_MULTILINE)
$opc[8][4] = 2 ; Respuesta correcta

;Pregunta 10
$ttlpreg10 = GUICtrlCreateGroup("10. " & $preg4, $grupIzq, $grup1Ar + (150 * 3), $grupLrg, $grupAlt, $WS_DLGFRAME)

$opc[9][0] = GUICtrlCreateRadio("A). " & $resp4, $radIzq, $radAr + (150 * 3), $radLrg, $radAlt, $BS_MULTILINE)
$opc[9][1] = GUICtrlCreateRadio("B). " & $resp18, $radIzq, $radAr + 30 + (150 * 3), $radLrg, $radAlt, $BS_MULTILINE)
$opc[9][2] = GUICtrlCreateRadio("C). " & $resp25, $radIzq, $radAr + (30 * 2) + (150 * 3), $radLrg, $radAlt, $BS_MULTILINE)
$opc[9][3] = GUICtrlCreateRadio("D). " & $resp2, $radIzq, $radAr + (30 * 3) + (150 * 3), $radLrg, $radAlt, $BS_MULTILINE)
$opc[9][4] = 0 ; Respuesta correcta

;Pregunta 11
$ttlpreg11 = GUICtrlCreateGroup("11. " & $preg11, $grupIzq + 335, $grup1Ar + (150 * 3), $grupLrg, $grupAlt, $WS_DLGFRAME)

$opc[10][0] = GUICtrlCreateRadio("A). " & $resp9, $radIzq + 335, $radAr + (150 * 3), $radLrg, $radAlt, $BS_MULTILINE)
$opc[10][1] = GUICtrlCreateRadio("B). " & $resp11, $radIzq + 335, $radAr + 30 + (150 * 3), $radLrg, $radAlt, $BS_MULTILINE)
$opc[10][2] = GUICtrlCreateRadio("C). " & $resp16, $radIzq + 335, $radAr + (30 * 2) + (150 * 3), $radLrg, $radAlt, $BS_MULTILINE)
$opc[10][3] = GUICtrlCreateRadio("D). " & $resp23, $radIzq + 335, $radAr + (30 * 3) + (150 * 3), $radLrg, $radAlt, $BS_MULTILINE)
$opc[10][4] = 1 ; Respuesta correcta

;Pregunta 12
$ttlpreg12 = GUICtrlCreateGroup("12. " & $preg18, $grupIzq + (335 * 2), $grup1Ar + (150 * 3), $grupLrg, $grupAlt, $WS_DLGFRAME)

$opc[11][0] = GUICtrlCreateRadio("A). " & $resp30, $radIzq + (335 * 2), $radAr + (150 * 3), $radLrg, $radAlt, $BS_MULTILINE)
$opc[11][1] = GUICtrlCreateRadio("B). " & $resp7, $radIzq + (335 * 2), $radAr + 30 + (150 * 3), $radLrg, $radAlt, $BS_MULTILINE)
$opc[11][2] = GUICtrlCreateRadio("C). " & $resp14, $radIzq + (335 * 2), $radAr + (30 * 2) + (150 * 3), $radLrg, $radAlt, $BS_MULTILINE)
$opc[11][3] = GUICtrlCreateRadio("D). " & $resp18, $radIzq + (335 * 2), $radAr + (30 * 3) + (150 * 3), $radLrg, $radAlt, $BS_MULTILINE)
$opc[11][4] = 3 ; Respuesta correcta

GUISetState(@SW_SHOW)

Global $Accion1 = $GUI_DISABLE, $Accion2 = $GUI_ENABLE
_desactivados($Accion1)
;_correctas()

While 1

	$nMsg = GUIGetMsg()

	Switch $nMsg

		Case $btnIngrestDat
			GUICtrlSetState($btnIngrestDat, $GUI_HIDE)
			GUICtrlSetState($btnComExa, $GUI_SHOW)
			GUICtrlSetState($lselecComEx, $GUI_SHOW)
			GUICtrlSetState($lIngresDat, $GUI_HIDE)
			_activarUsuario()

		Case $btnComExa
			If GUICtrlRead($inNombre) = "" Then
				MsgBox(0, "Advertencia", "Debe ingresar su nombre")
			Else
				GUICtrlSetState($btnComExa, $GUI_HIDE)
				GUICtrlSetState($btnRevisar, $GUI_SHOW)
				GUICtrlSetState($lttlSelec, $GUI_SHOW)
				_comenzar($Accion2)
				_desactivarUsuario()
			EndIf
		Case $btnRevisar
			GUICtrlSetState($lttlSelec, $GUI_HIDE)
			GUICtrlSetState($lIngresDat, $GUI_HIDE)
			GUICtrlSetState($btnRevisar, $GUI_DISABLE)
			GUICtrlSetState($lselecComEx, $GUI_HIDE)
			GUICtrlSetState($lCompare, $GUI_SHOW)
			_desactivados($Accion1)
			;_contar()
			_estado()
			_Imprimir()

			$lpuntuacion = GUICtrlCreateLabel("Su puntuación es de " & $contar & " de 30", 10, 10, 250, 25)
			GUICtrlSetFont(-1, 12, 600, 0, "Arial")
			GUICtrlSetColor(-1, 0xFF0000)
		Case $btnslr
			Exit

		Case $GUI_EVENT_CLOSE
			Exit

	EndSwitch
WEnd


Func _desactivados($Desac)

	For $x = 0 To UBound($opc) - 1 ; nº de preguntas para recorrer.
		For $y = 0 To UBound($opc, 2) - 1 ; suma de pregunta y nº de respuestas. Si en vez de empezar en 0 empieza en 1 no desactiva el texto, solo las respuestas
			GUICtrlSetState($opc[$x][$y], $Desac)
		Next
	Next
EndFunc   ;==>_desactivados

Func _activarUsuario()
	GUICtrlSetState($inNombre, $GUI_ENABLE)
	GUICtrlSetState($InFecha, $GUI_ENABLE)
	GUICtrlSetState($nivel1, $GUI_ENABLE)
	GUICtrlSetState($nivel2, $GUI_ENABLE)
	GUICtrlSetState($nivel3, $GUI_ENABLE)
	GUICtrlSetState($nivel4, $GUI_ENABLE)
	GUICtrlSetState($dia, $GUI_ENABLE)
EndFunc   ;==>_activarUsuario

Func _desactivarUsuario()
	GUICtrlSetState($inNombre, $GUI_DISABLE)
	GUICtrlSetState($InFecha, $GUI_DISABLE)
	GUICtrlSetState($nivel1, $GUI_DISABLE)
	GUICtrlSetState($nivel2, $GUI_DISABLE)
	GUICtrlSetState($nivel3, $GUI_DISABLE)
	GUICtrlSetState($nivel4, $GUI_DISABLE)
	GUICtrlSetState($dia, $GUI_DISABLE)
EndFunc   ;==>_desactivarUsuario

Func _estado()
	Dim $ar_LetraResp [12]
	Dim $Letras[4]= ["A","B","C","D"]

	For $Preguntas = 0 To 11
		For $Respuestas = 0 To 3
			$respDada =GUICtrlRead($opc[$Preguntas][$Respuestas])
			If $respDada = 1 Then ; Si es la respuesta marcada...
				If $Respuestas = $opc[$Preguntas][4] Then ; Si conincide la respuesta dada con la correcta:
					$contar+=1
					$ar_LetraResp[$Preguntas]= $Letras[$Respuestas] &" - " &$corr
					Else
					$ar_LetraResp[$Preguntas]= $Letras[$Respuestas] &" - " &$inco
				EndIf
			EndIf
		Next
	Next
#cs
	;Respuesta 1
	$res1a = GUICtrlRead($opc[0][0]) ;Lee el estado de los checkbox
	If $res1a = 1 Then
		$contar = $contar + 1
		$resul1 = $corr
		$letra1 = "A"
	EndIf
	$res1b = GUICtrlRead($opc[0][1])
	If $res1b = 1 Then
		$resul1 = $inco
		$letra1 = "B"
	EndIf
	$res1c = GUICtrlRead($opc[0][2])
	If $res1c = 1 Then
		$resul1 = $inco
		$letra1 = "C"
	EndIf
	$res1d = GUICtrlRead($opc[0][3])
	If $res1d = 1 Then
		$resul1 = $inco
		$letra1 = "D"
	EndIf

	;Respuesta 2
	$res2a = GUICtrlRead($opc[1][0])
	If $res2a = 1 Then
		$resul2 = $inco
		$letra2 = "A"
	EndIf
	$res2b = GUICtrlRead($opc[1][1])
	If $res2b = 1 Then
		$resul2 = $inco
		$letra2 = "B"
	EndIf
	$res2c = GUICtrlRead($opc[1][2])
	If $res2c = 1 Then
		$contar = $contar + 1
		$resul2 = $corr
		$letra2 = "C"
	EndIf
	$res2d = GUICtrlRead($opc[1][3])
	If $res2d = 1 Then
		$resul2 = $inco
		$letra2 = "D"
	EndIf

	;Respuesta 3
	$res3a = GUICtrlRead($opc[2][0])
	If $res3a = 1 Then
		$contar = $contar + 1
		$resul3 = $corr
		$letra3 = "A"
	EndIf
	$res3b = GUICtrlRead($opc[2][1])
	If $res3b = 1 Then
		$resul3 = $inco
		$letra3 = "B"
	EndIf
	$res3c = GUICtrlRead($opc[2][2])
	If $res3c = 1 Then
		$resul3 = $inco
		$letra3 = "C"
	EndIf
	$res3d = GUICtrlRead($opc[2][3])
	If $res3d = 1 Then
		$resul3 = $inco
		$letra3 = "D"
	EndIf

	;Respuesta 4
	$res4a = GUICtrlRead($opc[3][0])
	If $res4a = 1 Then
		$resul4 = $inco
		$letra4 = "A"
	EndIf
	$res4b = GUICtrlRead($opc[3][1])
	If $res4b = 1 Then
		$contar = $contar + 1
		$resul4 = $corr
		$letra4 = "B"
	EndIf
	$res4c = GUICtrlRead($opc[3][2])
	If $res4c = 1 Then
		$resul4 = $inco
		$letra4 = "C"
	EndIf
	$res4d = GUICtrlRead($opc[3][3])
	If $res4d = 1 Then
		$resul4 = $inco
		$letra4 = "D"
	EndIf

	;Respuesta 5
	$res5a = GUICtrlRead($opc[4][0])
	If $res5a = 1 Then
		$contar = $contar + 1
		$resul5 = $corr
		$letra5 = "A"
	EndIf
	$res5b = GUICtrlRead($opc[4][1])
	If $res5b = 1 Then
		$resul5 = $inco
		$letra5 = "B"
	EndIf
	$res5c = GUICtrlRead($opc[4][2])
	If $res5c = 1 Then
		$resul5 = $inco
		$letra5 = "C"
	EndIf
	$res5d = GUICtrlRead($opc[4][3])
	If $res5d = 1 Then
		$resul5 = $inco
		$letra5 = "D"
	EndIf

	;Respuesta 6
	$res6a = GUICtrlRead($opc[5][0])
	If $res6a = 1 Then
		$resul6 = $inco
		$letra6 = "A"
	EndIf
	$res6b = GUICtrlRead($opc[5][1])
	If $res6b = 1 Then
		$resul6 = $inco
		$letra6 = "B"
	EndIf
	$res6c = GUICtrlRead($opc[5][2])
	If $res6c = 1 Then
		$contar = $contar + 1
		$resul6 = $corr
		$letra6 = "C"
	EndIf
	$res6d = GUICtrlRead($opc[5][3])
	If $res6d = 1 Then
		$resul6 = $inco
		$letra6 = "D"
	EndIf

	;Respuesta 7
	$res7a = GUICtrlRead($opc[6][0])
	If $res7a = 1 Then
		$resul7 = $inco
		$letra7 = "A"
	EndIf
	$res7b = GUICtrlRead($opc[6][1])
	If $res7b = 1 Then
		$resul7 = $inco
		$letra7 = "B"
	EndIf
	$res7c = GUICtrlRead($opc[6][2])
	If $res7c = 1 Then
		$resul7 = $inco
		$letra7 = "C"
	EndIf
	$res7d = GUICtrlRead($opc[6][3])
	If $res7d = 1 Then
		$contar = $contar + 1
		$resul7 = $corr
		$letra7 = "D"
	EndIf

	;Respuesta 8
	$res8a = GUICtrlRead($opc[7][0])
	If $res8a = 1 Then
		$resul8 = $inco
		$letra8 = "A"
	EndIf
	$res8b = GUICtrlRead($opc[7][1])
	If $res8b = 1 Then
		$contar = $contar + 1
		$resul8 = $corr
		$letra8 = "B"
	EndIf
	$res8c = GUICtrlRead($opc[7][2])
	If $res8c = 1 Then
		$resul8 = $inco
		$letra8 = "C"
	EndIf
	$res8d = GUICtrlRead($opc[7][3])
	If $res8d = 1 Then
		$resul8 = $inco
		$letra8 = "D"
	EndIf

	;Respuesta 9
	$res9a = GUICtrlRead($opc[8][0])
	If $res9a = 1 Then
		$resul9 = $inco
		$letra9 = "A"
	EndIf
	$res9b = GUICtrlRead($opc[8][1])
	If $res9b = 1 Then
		$resul9 = $inco
		$letra9 = "B"
	EndIf
	$res9c = GUICtrlRead($opc[8][2])
	If $res9c = 1 Then
		$contar = $contar + 1
		$resul9 = $corr
		$letra9 = "C"
	EndIf
	$res9d = GUICtrlRead($opc[8][3])
	If $res9d = 1 Then
		$resul9 = $inco
		$letra9 = "D"
	EndIf

	;Respuesta 10
	$res10a = GUICtrlRead($opc[9][0])
	If $res10a = 1 Then
		$contar = $contar + 1
		$resul10 = $corr
		$letra10 = "A"
	EndIf
	$res10b = GUICtrlRead($opc[9][1])
	If $res10b = 1 Then
		$resul10 = $inco
		$letra10 = "B"
	EndIf
	$res10c = GUICtrlRead($opc[9][2])
	If $res10c = 1 Then
		$resul10 = $inco
		$letra10 = "C"
	EndIf
	$res10d = GUICtrlRead($opc[9][3])
	If $res10d = 1 Then
		$resul10 = $inco
		$letra10 = "D"
	EndIf

	;Respuesta 11
	$res11a = GUICtrlRead($opc[10][0])
	If $res11a = 1 Then
		$resul11 = $inco
		$letra11 = "A"
	EndIf
	$res11b = GUICtrlRead($opc[10][1])
	If $res11b = 1 Then
		$contar = $contar + 1
		$resul11 = $corr
		$letra11 = "B"
	EndIf
	$res11c = GUICtrlRead($opc[10][2])
	If $res11c = 1 Then
		$resul11 = $inco
		$letra11 = "C"
	EndIf
	$res11d = GUICtrlRead($opc[10][3])
	If $res11d = 1 Then
		$resul11 = $inco
		$letra11 = "D"
	EndIf

	;Respuesta 12
	$res12a = GUICtrlRead($opc[11][0])
	If $res12a = 1 Then
		$resul12 = $inco
		$letra12 = "A"
	EndIf
	$res12b = GUICtrlRead($opc[11][1])
	If $res12b = 1 Then
		$resul12 = $inco
		$letra12 = "B"
	EndIf
	$res12c = GUICtrlRead($opc[11][2])
	If $res12c = 1 Then
		$resul12 = $inco
		$letra12 = "C"
	EndIf
	$res12d = GUICtrlRead($opc[11][3])
	If $res12d = 1 Then
		$contar = $contar + 1
		$resul12 = $corr
		$letra12 = "D"
	EndIf
#ce
	If $contar > 28 Then
		$aviso = "Felicidades eres un genio, tu esfuerzo a dado frutos" & @CRLF & @CRLF & "Estoy orgulloso de ti"
	EndIf
	If $contar > 20 And $contar < 28 Then
		$aviso = "Muy bien, pero puedes hacerlo mejor" & @CRLF & @CRLF & "Yo se que tienes el poder de hacerlo"
	EndIf
	If $contar > 15 And $contar < 20 Then
		$aviso = "Debes mejorar, preocupate y esfuerzate mas" & @CRLF & @CRLF & "Dedicale un poco mas de tiempo a los estudios"
	EndIf
	If $contar < 20 Then
		$aviso = "Tienes que estudiar mas, tus calificaciones son muy bajas" & @CRLF & @CRLF & "Si deseas ayuda, dimelo que con mucho gusto te ayudare"
	EndIf
	MsgBox(0, "Examen del Teclado", "Su puntuacion es de " & $contar & " de 30" & @CRLF & @CRLF & $aviso)

EndFunc   ;==>_estado

Func _comenzar($Activ)

	For $x = 0 To UBound($opc) - 1 ; nº de preguntas para recorrer.
		For $y = 0 To UBound($opc, 2) - 1
			GUICtrlSetState($opc[$x][$y], $Activ)
		Next
	Next
EndFunc   ;==>_comenzar

Func _Imprimir()

	If GUICtrlRead($nivel1) = 1 Then
		$nivel = "Nivel 1"
	EndIf
	If GUICtrlRead($nivel2) = 1 Then
		$nivel = "Nivel 2"
	EndIf
	If GUICtrlRead($nivel3) = 1 Then
		$nivel = "Nivel 3"
	EndIf
	If GUICtrlRead($nivel4) = 1 Then
		$nivel = "Nivel 4"
	EndIf
	$nombre = GUICtrlRead($inNombre)
	$fecha = GUICtrlRead($InFecha)
	$titulo = GUICtrlRead($lTitulo)
	$horario = GUICtrlRead($dia)
	$ttlSelec = GUICtrlRead($lttlSelec)

	$arreglo = StringTrimRight($ttlSelec, 52)

	$file = FileOpen(@ScriptDir & "\Examen Teclado " & $nombre & ".doc", 1)
	Sleep(2000)
	$txtttl = "               " & $titulo & @CRLF & @CRLF & "Puntuacion total: " & $contar & " de 30" & @CRLF & @CRLF & "Nombre: " & $nombre & "      Fecha: " & $fecha & @CRLF & @CRLF & "Nivel: " & $nivel & "      Horario de clases: " & $horario & @CRLF & @CRLF & "            " & $arreglo & @CRLF & @CRLF
	$txt1 = GUICtrlRead($ttlpreg1) & @CRLF & @CRLF & GUICtrlRead($opc[0][0], 1) & @CRLF & GUICtrlRead($opc[0][1], 1) & @CRLF & GUICtrlRead($opc[0][2], 1) & @CRLF & GUICtrlRead($opc[0][3], 1) & @CRLF & "Opción: " & $ar_LetraResp[0] & @CRLF & @CRLF
	$txt2 = GUICtrlRead($ttlpreg2) & @CRLF & @CRLF & GUICtrlRead($opc[1][0], 1) & @CRLF & GUICtrlRead($opc[1][1], 1) & @CRLF & GUICtrlRead($opc[1][2], 1) & @CRLF & GUICtrlRead($opc[1][3], 1) & @CRLF & "Opción: "  & $ar_LetraResp[1] & $resul2 & @CRLF & @CRLF
	$txt3 = GUICtrlRead($ttlpreg3) & @CRLF & @CRLF & GUICtrlRead($opc[2][0], 1) & @CRLF & GUICtrlRead($opc[2][1], 1) & @CRLF & GUICtrlRead($opc[2][2], 1) & @CRLF & GUICtrlRead($opc[2][3], 1) & @CRLF & "Opción: "  & $ar_LetraResp[2] & $resul3 & @CRLF & @CRLF
	$txt4 = GUICtrlRead($ttlpreg4) & @CRLF & @CRLF & GUICtrlRead($opc[3][0], 1) & @CRLF & GUICtrlRead($opc[3][1], 1) & @CRLF & GUICtrlRead($opc[3][2], 1) & @CRLF & GUICtrlRead($opc[3][3], 1) & @CRLF & "Opción: "  & $ar_LetraResp[3] & $resul4 & @CRLF & @CRLF
	$txt5 = GUICtrlRead($ttlpreg5) & @CRLF & @CRLF & GUICtrlRead($opc[4][0], 1) & @CRLF & GUICtrlRead($opc[4][1], 1) & @CRLF & GUICtrlRead($opc[4][2], 1) & @CRLF & GUICtrlRead($opc[4][3], 1) & @CRLF & "Opción: "  & $ar_LetraResp[4] & $resul5 & @CRLF & @CRLF
	$txt6 = GUICtrlRead($ttlpreg6) & @CRLF & @CRLF & GUICtrlRead($opc[5][0], 1) & @CRLF & GUICtrlRead($opc[5][1], 1) & @CRLF & GUICtrlRead($opc[5][2], 1) & @CRLF & GUICtrlRead($opc[5][3], 1) & @CRLF & "Opción: "  & $ar_LetraResp[5] & $resul6 & @CRLF & @CRLF
	$txt7 = GUICtrlRead($ttlpreg7) & @CRLF & @CRLF & GUICtrlRead($opc[6][0], 1) & @CRLF & GUICtrlRead($opc[6][1], 1) & @CRLF & GUICtrlRead($opc[6][2], 1) & @CRLF & GUICtrlRead($opc[6][3], 1) & @CRLF & "Opción: "  & $ar_LetraResp[6] & $resul7 & @CRLF & @CRLF
	$txt8 = GUICtrlRead($ttlpreg8) & @CRLF & @CRLF & GUICtrlRead($opc[7][0], 1) & @CRLF & GUICtrlRead($opc[7][1], 1) & @CRLF & GUICtrlRead($opc[7][2], 1) & @CRLF & GUICtrlRead($opc[7][3], 1) & @CRLF & "Opción: "  & $ar_LetraResp[7] & $resul8 & @CRLF & @CRLF
	$txt9 = GUICtrlRead($ttlpreg9) & @CRLF & @CRLF & GUICtrlRead($opc[8][0], 1) & @CRLF & GUICtrlRead($opc[8][1], 1) & @CRLF & GUICtrlRead($opc[8][2], 1) & @CRLF & GUICtrlRead($opc[8][3], 1) & @CRLF & "Opción: "  & $ar_LetraResp[8] & $resul9 & @CRLF & @CRLF
	$txt10 = GUICtrlRead($ttlpreg10) & @CRLF & @CRLF & GUICtrlRead($opc[9][0], 1) & @CRLF & GUICtrlRead($opc[9][1], 1) & @CRLF & GUICtrlRead($opc[9][2], 1) & @CRLF & GUICtrlRead($opc[9][3], 1) & @CRLF & "Opción: " & $ar_LetraResp[9] & $resul10 & @CRLF & @CRLF
	$txt11 = GUICtrlRead($ttlpreg11) & @CRLF & @CRLF & GUICtrlRead($opc[10][0], 1) & @CRLF & GUICtrlRead($opc[10][1], 1) & @CRLF & GUICtrlRead($opc[10][2], 1) & @CRLF & GUICtrlRead($opc[10][3], 1) & @CRLF & "Opción: "  & $ar_LetraResp[10] & $resul11 & @CRLF & @CRLF
	$txt12 = GUICtrlRead($ttlpreg12) & @CRLF & @CRLF & GUICtrlRead($opc[11][0], 1) & @CRLF & GUICtrlRead($opc[11][1], 1) & @CRLF & GUICtrlRead($opc[11][2], 1) & @CRLF & GUICtrlRead($opc[11][3], 1) & @CRLF & "Opción: "  & $ar_LetraResp[11] & $resul12 & @CRLF & @CRLF

	FileWrite($file, $txtttl)
	FileWrite($file, "                                                                         ")
	FileWrite($file, "-------------------------------------------------------------------------")
	FileWrite($file, $txt1)
	FileWrite($file, "-------------------------------------------------------------------------")
	FileWrite($file, $txt2)
	FileWrite($file, "-------------------------------------------------------------------------")
	FileWrite($file, $txt3)
	FileWrite($file, "-------------------------------------------------------------------------")
	FileWrite($file, $txt4)
	FileWrite($file, "-------------------------------------------------------------------------")
	FileWrite($file, $txt5)
	FileWrite($file, "-------------------------------------------------------------------------")
	FileWrite($file, $txt6)
	FileWrite($file, "-------------------------------------------------------------------------")
	FileWrite($file, $txt7)
	FileWrite($file, "-------------------------------------------------------------------------")
	FileWrite($file, $txt8)
	FileWrite($file, "-------------------------------------------------------------------------")
	FileWrite($file, $txt9)
	FileWrite($file, "-------------------------------------------------------------------------")
	FileWrite($file, $txt10)
	FileWrite($file, "-------------------------------------------------------------------------")
	FileWrite($file, $txt11)
	FileWrite($file, "-------------------------------------------------------------------------")
	FileWrite($file, $txt12)
	FileWrite($file, "-------------------------------------------------------------------------")
	Sleep(2000)
	FileSetAttrib(@ScriptDir & "\Examen Teclado " & $nombre & ".doc", "+RS")
	FileClose($file)

EndFunc   ;==>_Imprimir
Tambien he cambiado la ruta del .doc que crea, porque en mi caso al menos (Windows 7) no tengo permisos en la carpeta Escritorio de All Users/Public.

Una mejora que puedes hacer, es que el examen sea aleatorio tanto en preguntas como en respuestas... Pero eso es para nivel avanzado. Te puede llevar bastante tiempo.

Pero animo, que la cosa va muy muy bien. Elegante y funcional.
wbueso
Aprendiz de Mago
Mensajes: 61
Registrado: 31 Dic 2013, 01:02

Re: Ayuda array

Mensaje por wbueso »

Gracias juantxo, me has leido la mente con lo de que las respuestas y las preguntas sean aleatorias, si pudieras darme una pequeña muestra con algo simple para eso.
Sobre los For y los array he estado practicando y creo que lo he captado, mejorando asi mi codigo.

Agradesco la ayuda, Dios te bendiga grandemente.
Avatar de Usuario
juantxo
Hacker del Foro
Mensajes: 78
Registrado: 02 Abr 2008, 13:36

Re: Ayuda array

Mensaje por juantxo »

Te propongo que en vez de darte todo el código hecho, que lleva su tiempo depurar y precisamente tiempo no sobra, te marco un poco los pasos del procedimiento. Si te atascas, te doy un empujon sin problema. Es la mejor forma de aprender :smt023

En programación es muy importante el ‘Divide y venceras’ no se trata de atacar un problema complejo de frente e intentar abarcar todo de una vez sino dividir en pequeños problemas sencillos. Ahí está la clave del éxito.

- Definir un Array con las preguntas, y la respuesta correcta.
- Para cada cuestión del cuestionario, seleccionar aleatoriamente la pregunta y tres respuestas que no se repitan, y que no sea la correcta. Puedes hacer que la respuesta correcta se guarde en la posición 1 por ejemplo.
- Para evitar duplicados, puedes ir borrando las preguntas de la tabla y comprobar que no metes ninguna pregunta vacia.
- Mezclar aleatoriamente las respuestas en un Array auxiliar que te sirva para ‘Pintar’ el formulario con las preguntas y respuestas. Acuerdate de guardar en una posición determinada la respuesta correcta.

Así, parece sencillo, pero ya veras como no lo es. Es la gracia que tiene. No es difícil poner un ‘Boton’ en un formulario. Lo difícil es hacerlo funcionar!

Animo, y ya sabes donde consultar tus dudas.
wbueso
Aprendiz de Mago
Mensajes: 61
Registrado: 31 Dic 2013, 01:02

Re: Ayuda array

Mensaje por wbueso »

La verdad es que como soy muy novato en esto, y voy asimilando las cosas poco a poco, de los array todavia no se mucho, todavia estoy tratando de enteder su funcionamiento y por lo que he visto hasta ahora es muy complejo.
siempre tomo codigos que hacen lo que yo quiero y los leo, asi voy haciendo pruevas y los entiendo.
Pero algo como eso de lo que me hablas, no tengo ni idea de como empezar.
Solo me gustaria un pequeño ejemplo y yo lo leeria, haria algunas pruevas y trataria de hacer por mi cuenta un poco mas complejo, o aplicarlo a lo que yo deseo hacer.
Te agradesco la ayuda, y espero no incomodarte con tantas preguntas.
PDF
Hacker del Foro
Mensajes: 152
Registrado: 18 Ene 2013, 23:23

Re: Ayuda array

Mensaje por PDF »

wbueso ..
He estado mirando tu código, le he hecho modificaciones, :smt024 :smt024
Por si te interese lo dejo cometado:

Código: Seleccionar todo

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <File.au3>
#include <Array.au3>
#include <UpDownConstants.au3>
#include <EditConstants.au3>
;#include <WorD).au3>

;=========================================================================================================================
; DECLARACION DE VARIABLES
;=========================================================================================================================
; En esta parte del codigo definimos las matrices o array's $preg[31] $resp[31]
Global $preg[31]
Global $contar
Global $resp[31]
Global $opc[30][4]
Global $ttlpreg[13]
Dim $Letras[4] = ["A", "B", "C", "D"]

; Aqui le asignamos valor a cada indice de los array's con las preguntas y respuestas de los items
$preg[1] = "ESC (Escape)" ;Ej $preg[1] ahora vale "ESC (Escape)"
$resp[1] = "Cancela procesos y advertencias"
$preg[2] = "TAB (Tabulación)"
$resp[2] = "A. Crea 5 espacios entre letras, B. Selecciona entre botones o pestañas"
$preg[3] = "Bloq Mayus (Bloquear Mayúsculas)"
$resp[3] = "Activa todas las letras en mayúsculas"
$preg[4] = "Shift"
$resp[4] = "A. Presionada permite escribir en mayúsculas, B. Saca el segundo símbolo de las teclas"
$preg[5] = "Ctrl (Control)"
$resp[5] = "Tecla comodín, se combina con otras teclas (Ctrl + C] = copiar)"
$preg[6] = "Win (Logo de Windows)"
$resp[6] = "A. Abre el menú Inicio, B. Se puede combinar con teclas alfabéticas"
$preg[7] = "Alt (Alterar)"
$resp[7] = "A. Activa la barra de menús en los programas, B. Se combina con otras teclas"
$preg[8] = "Espacio (Space)"
$resp[8] = "A. Crea un espacio entre letras, B. Activa o desactiva cuadros de chequeo"
$preg[9] = "Alt Gr (Alterar Gr)"
$resp[9] = "Saca el tercer símbolo de las teclas"
$preg[10] = "Menú Contextual"
$resp[10] = "Abre un menú igual que el botón derecho del ratón"
$preg[11] = "Enter o Intro (Entrar)"
$resp[11] = "A. Ejecuta lo seleccionado, B. Crea una nueva línea en el texto"
$preg[12] = "Back Space (Retroceso)"
$resp[12] = "Borra los caracteres ubicados a la izquierda del puntero"
$preg[13] = "F2"
$resp[13] = "Para renombrar los archivos seleccionados"
$preg[14] = "Imp Pant (Imprimir Pantalla)"
$resp[14] = "Crea una copia exacta de lo que hay en la pantalla"
$preg[15] = "Sup o Del (Suprimir)"
$resp[15] = "A. Elimina los archivos seleccionados, B. Borra los caracteres ubicados a la derecha del puntero"
$preg[16] = "Ini (Inicio)"
$resp[16] = "Nos lleva al comienzo de la página"
$preg[17] = "End (Fin)"
$resp[17] = "Nos lleva al final de la página"
$preg[18] = "Re Pag (Página Arriba)"
$resp[18] = "Nos lleva a la página anterior"
$preg[19] = "Av Pag (Página Abajo)"
$resp[19] = "Nos lleva a la siguiente página"
$preg[20] = "Bloq Num (Bloqueo Numérico)"
$resp[20] = "Activa o desactiva el teclado numérico"
$preg[21] = "/ (Pleca)"
$resp[21] = "Operador matemático de División"
$preg[22] = "* (Asterisco)"
$resp[22] = "Operador matemático de multiplicación"
$preg[23] = "- (Guión)"
$resp[23] = "Operador matemático de Resta"
$preg[24] = "+ (Cruz)"
$resp[24] = "Operador matemático de Suma"
$preg[25] = "F6"
$resp[25] = "Activa la barra de direcciones"
$preg[26] = "Alt + F4"
$resp[26] = "Cierra las ventanas abiertas"
$preg[27] = "F1"
$resp[27] = "Abre una ventana de ayuda o barra de ayuda"
$preg[28] = "Alt + Tab"
$resp[28] = "Selecciona entre las ventanas abiertas"
$preg[29] = "Ctrl + Alt + Sup"
$resp[29] = "Ejecuta el administrador de tareas de Windows"
$preg[30] = "Logo de Windows + R"
$resp[30] = "Inicia el ejecutor de comandos"

$fecha = @MDAY
$mes = @MON
$ano = @YEAR

Global $grupIzq = 5, $grup1Ar = 100, $grupLrg = 335, $grupAlt = 150
Global $radIzq = 15, $radAr = $grup1Ar + 25, $radLrg = 315, $radAlt = 30

;=========================================================================================================================


$Exa_Gui = GUICreate("Examen de EL TECLADO", 1015, 705, 1, 1)

$lTitulo = GUICtrlCreateLabel("Examen de EL TECLADO", 400, 5, 600, 25)
GUICtrlSetFont(-1, 16, 400, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)

;Botones

$btnIngrestDat = GUICtrlCreateButton("Ingresar Datos", 830, 25, 180, 30)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)

$btnComExa = GUICtrlCreateButton("Comenzar el Examen", 830, 25, 180, 30)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetState($btnComExa, $GUI_HIDE)

$btnRevisar = GUICtrlCreateButton("Revisar el Examen", 830, 25, 180, 30)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetState($btnRevisar, $GUI_HIDE)

$btnslr = GUICtrlCreateButton("Salir", 830, 60, 180, 30)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)

;Informaciones

$lIngresDat = GUICtrlCreateLabel("Haga clic en el boton [ Ingresar Datos ] e ingrese sus datos", 250, 70, 550, 25)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
;GUICtrlSetState($lIngresDat,$GUI_HIDE)

$lComExa = GUICtrlCreateLabel("Haga clic en el botón [ COMENZAR EXAMEN ]", 300, 70, 500, 25)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetState($lComExa, $GUI_HIDE)

$lselecComEx = GUICtrlCreateLabel("Llene los datos y haga clic en el boton [ COMENZAR EXAMEN ]", 250, 70, 550, 25)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetState($lselecComEx, $GUI_HIDE)

$lttlSelec = GUICtrlCreateLabel("Seleccione las respuestas correctas y luego haga clic en el botón [ REVISAR EL EXAMEN ]", 190, 70, 630, 25)
GUICtrlSetFont(-1, 10, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetState($lttlSelec, $GUI_HIDE)

$lCompare = GUICtrlCreateLabel("Las correctas estan activadas y las que usted selecciono desactivadas", 230, 70, 580, 25)
GUICtrlSetFont(-1, 10, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)
GUICtrlSetState($lCompare, $GUI_HIDE)

;Area de Datos
$lNombre = GUICtrlCreateLabel("Nombre: ", 10, 45, 65, 25)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)

$inNombre = GUICtrlCreateInput("", 80, 45, 200, 20)
GUICtrlSetState($inNombre, $GUI_DISABLE)

$lFecha = GUICtrlCreateLabel("Fecha: ", 290, 45, 55, 25)
GUICtrlSetFont(-1, 12, 600, 0, "Arial")
GUICtrlSetColor(-1, 0x0000FF)

$InFecha = GUICtrlCreateInput($fecha & "/" & $mes & "/" & $ano, 348, 45, 80, 20)
GUICtrlSetState($InFecha, $GUI_DISABLE)

$dia = GUICtrlCreateCombo("", 710, 45, 100, 20)
GUICtrlSetData(-1, "Martes P.M.|Miércoles P.M.|Jueves P.M.|Viernes P.M.|Sábado A).M.|Sábado P.M.|Domingo A).M.|Domingo P.M.", "Martes P.M.")
GUICtrlSetState($dia, $GUI_DISABLE)
;$lselec = GUICtrlCreateLabel("Seleccione la respuesta correcta",370,110,350,25)

GUICtrlCreateGroup("Nivel", 435, 32, 270, 35)
$nivel1 = GUICtrlCreateRadio("1er Nivel ", 440, 45, 60, 20)
$nivel2 = GUICtrlCreateRadio("2do Nivel ", 505, 45, 62, 20)
$nivel3 = GUICtrlCreateRadio("3er Nivel ", 575, 45, 60, 20)
$nivel4 = GUICtrlCreateRadio("4to Nivel ", 640, 45, 60, 20)
GUICtrlSetState($nivel1, $GUI_CHECKED)
GUICtrlSetState($nivel1, $GUI_DISABLE)
GUICtrlSetState($nivel2, $GUI_DISABLE)
GUICtrlSetState($nivel3, $GUI_DISABLE)
GUICtrlSetState($nivel4, $GUI_DISABLE)

;Preguntas y Respuestas
GUICtrlCreateTab(1, 75, 1014, 630)
Dim $opc[30][5]
Dim $ar_LetraResp[12]

GUICtrlCreateTabItem("PAGINA 1")
;Pregunta 1

;=========================================================================================================================
;Para evitar varias lineas utilizamos el bucle For... Next
;=========================================================================================================================
; Utilzizamos el bucle fo next para crear los grupos con las preguntas enumeradas
For $i = 1 To 12
	$ttlpreg[$i] = GUICtrlCreateGroup($i & ". " & $preg[$i], $grupIzq, $grup1Ar, $grupLrg, $grupAlt, $WS_DLGFRAME)
	$Excluir = "|"; Esto solo define la variable que contendra los numeros de items a excluir para evitar preguntas repetidas
	$ale = Random(0, 3, 1); Esto genera un numero aleatorio del 0 al 3 que correspondera al numero de radio en la cual se encontrará la respuesta correcta
	For $o = 0 To 3 ; esto creará los cuatro radios de respuestas
		If $ale = $o Then ; si el numero aleatorio es igual al numero de radio, le ubicamos la respuesta correcta
			$Excluir &= $i & "|"; Excluimos este item de la lista
			; Creamos el radio con la respuesta correcta
			$opc[$i][$o] = GUICtrlCreateRadio($Letras[$o] & "). " & $resp[$i], $grupIzq + 10, $radAr, $radLrg, $radAlt, $BS_MULTILINE)
		Else ; si el numero aleatorio es distinto al nro de item
			$Array = StringSplit(StringTrimRight($Excluir, 1), "|"); Crea un array con las exclusiones
			$Ale2 = _Random(1, 30, $Array); Genera un numero aleatorio de item excluyendo otros..
			$Excluir &= $Ale2 & "|";añade el numero generado a las exclusiones
			; Creamos la respuesta incorrecta
			$opc[$i][$o] = GUICtrlCreateRadio($Letras[$o] & "). " & $resp[$Ale2], $grupIzq + 10, $radAr, $radLrg, $radAlt, $BS_MULTILINE)
		EndIf
		$radAr += 30 ; Añadimos 30 para el atributo arriba del radio
	Next
	$radAr = $radAr - 120;  Si corresponde a otra pregunta reducimos 120 para ubicarlo al principio
	$grupIzq += 335 ; Añade 335 si corresponde crear otro grupo
	If $grupIzq = 1010 Then ; si es el cuarto grupo
		$grupIzq = 5 ; reducimos para evitar que el grupo salga del form
		$grup1Ar += 150 ; aumentamos al atrbuto top del grupo para evitar que se encimen
		$radAr = $grup1Ar + 25 ; aumentamos top al radio para ubicarlo dentro del grupo a crear
	EndIf

Next

_desactivados($GUI_DISABLE)
GUISetState(@SW_SHOW)


While 1

	$nMsg = GUIGetMsg()

	Switch $nMsg

		Case $GUI_EVENT_CLOSE, $btnslr
			Exit
		Case $btnIngrestDat
			GUICtrlSetState($btnIngrestDat, $GUI_HIDE)
			GUICtrlSetState($btnComExa, $GUI_SHOW)
			GUICtrlSetState($lselecComEx, $GUI_SHOW)
			GUICtrlSetState($lIngresDat, $GUI_HIDE)
			_ActDesUsuario($GUI_ENABLE)
		Case $btnComExa
			If GUICtrlRead($inNombre) = "" Then
				MsgBox(0, "Advertencia", "Debe ingresar su nombre")
			Else
				GUICtrlSetState($btnComExa, $GUI_HIDE)
				GUICtrlSetState($btnRevisar, $GUI_SHOW)
				GUICtrlSetState($lttlSelec, $GUI_SHOW)
				_desactivados($GUI_ENABLE)
				_ActDesUsuario($GUI_DISABLE)
			EndIf
		Case $btnRevisar
			GUICtrlSetState($lttlSelec, $GUI_HIDE)
			GUICtrlSetState($lIngresDat, $GUI_HIDE)
			GUICtrlSetState($btnRevisar, $GUI_DISABLE)
			GUICtrlSetState($lselecComEx, $GUI_HIDE)
			GUICtrlSetState($lCompare, $GUI_SHOW)
			_desactivados($GUI_DISABLE)
			;_contar()
			_estado()
			_Imprimir()

			$lpuntuacion = GUICtrlCreateLabel("Su puntuación es de " & $contar & " de 30", 10, 10, 250, 25)
			GUICtrlSetFont(-1, 12, 600, 0, "Arial")
			GUICtrlSetColor(-1, 0xFF0000)
	EndSwitch
WEnd

; Hize una modificacion aqui para evitar utilizar dos funciones _activarUsuario() y _desactivarUsuario()le envias el parametro $GUI_ENABLE o $GUI_DISABLE
Func _ActDesUsuario($STATE)
	GUICtrlSetState($inNombre, $STATE)
	GUICtrlSetState($InFecha, $STATE)
	GUICtrlSetState($nivel1, $STATE)
	GUICtrlSetState($nivel2, $STATE)
	GUICtrlSetState($nivel3, $STATE)
	GUICtrlSetState($nivel4, $STATE)
	GUICtrlSetState($dia, $STATE)
	ControlFocus($Exa_Gui, "", $inNombre) ; para enfocar el input
EndFunc   ;==>_ActDesUsuario

; Aqui esta la razon de porque no se repiten las respuestas en los grupos
Func _Random($Min, $Max, $Exc)
	Local $sRet = Random($Min, $Max, 1); genera el aleatorio
	If Not IsArray($Exc) Then Return $sRet
	For $i = 1 To UBound($Exc) - 1
		If $Exc[$i] = $sRet Then $sRet = _Random($Min, $Max, $Exc); si el numero generado ya existe vuelve a crear otro
	Next
	Return $sRet
EndFunc   ;==>_Random

Func _desactivados($Desac)
	For $x = 0 To UBound($opc) - 1 ; nº de preguntas para recorrer.
		For $y = 0 To UBound($opc, 2) - 1 ; suma de pregunta y nº de respuestas. Si en vez de empezar en 0 empieza en 1 no desactiva el texto, solo las respuestas
			GUICtrlSetState($opc[$x][$y], $Desac)
		Next
	Next
EndFunc   ;==>_desactivados

Func _estado()
	$contar = 0
	For $r = 1 To 12
		For $P = 0 To 3
			If GUICtrlRead($opc[$r][$P]) = $GUI_CHECKED Then ; Respuesta marcada
				If StringTrimLeft(GUICtrlRead($opc[$r][$P], 1), 4) == $resp[$r] Then ; Si contiene la respuesta correcta
					$contar += 1
				EndIf
			EndIf
		Next
	Next
	If $contar > 28 Then
		$aviso = "Felicidades eres un genio, tu esfuerzo a dado frutos" & @CRLF & @CRLF & "Estoy orgulloso de ti"
	EndIf
	If $contar > 20 And $contar < 28 Then
		$aviso = "Muy bien, pero puedes hacerlo mejor" & @CRLF & @CRLF & "Yo se que tienes el poder de hacerlo"
	EndIf
	If $contar > 15 And $contar < 20 Then
		$aviso = "Debes mejorar, preocupate y esfuerzate mas" & @CRLF & @CRLF & "Dedicale un poco mas de tiempo a los estudios"
	EndIf
	If $contar < 20 Then
		$aviso = "Tienes que estudiar mas, tus calificaciones son muy bajas" & @CRLF & @CRLF & "Si deseas ayuda, dimelo que con mucho gusto te ayudare"
	EndIf
	MsgBox(0, "Examen del Teclado", "Su puntuacion es de " & $contar & " de 30" & @CRLF & @CRLF & $aviso)

EndFunc   ;==>_estado

Func _Imprimir()

	If GUICtrlRead($nivel1) = 1 Then
		$nivel = "Nivel 1"
	EndIf
	If GUICtrlRead($nivel2) = 1 Then
		$nivel = "Nivel 2"
	EndIf
	If GUICtrlRead($nivel3) = 1 Then
		$nivel = "Nivel 3"
	EndIf
	If GUICtrlRead($nivel4) = 1 Then
		$nivel = "Nivel 4"
	EndIf
	$nombre = GUICtrlRead($inNombre)
	$fecha = GUICtrlRead($InFecha)
	$titulo = GUICtrlRead($lTitulo)
	$horario = GUICtrlRead($dia)
	$ttlSelec = GUICtrlRead($lttlSelec)

	$arreglo = StringTrimRight($ttlSelec, 52)

	$file = FileOpen(@ScriptDir & "\Examen Teclado " & $nombre & ".txt", 2)
	Sleep(2000)
	$txtttl = "               " & $titulo & @CRLF & @CRLF & "Puntuacion total: " & $contar & " de 30" & @CRLF & @CRLF & "Nombre: " & $nombre & "      Fecha: " & $fecha & @CRLF & @CRLF & "Nivel: " & $nivel & "      Horario de clases: " & $horario & @CRLF & @CRLF & "            " & $arreglo & @CRLF & @CRLF
	FileWrite($file, $txtttl)
	FileWrite($file, "                                                                         ")
	FileWrite($file, "-------------------------------------------------------------------------")
	For $e = 1 To 12
		$txt1 = GUICtrlRead($ttlpreg[$e]) & @CRLF & @CRLF & GUICtrlRead($opc[$e][0], 1) & @CRLF & GUICtrlRead($opc[$e][1], 1) & @CRLF & GUICtrlRead($opc[$e][2], 1) & @CRLF & GUICtrlRead($opc[$e][3], 1)  & @CRLF & @CRLF
		FileWrite($file, $txt1)
		FileWrite($file, "-------------------------------------------------------------------------")
	Next
	Sleep(2000)
	FileSetAttrib(@ScriptDir & "\Examen Teclado " & $nombre & ".txt", "+RS")
	FileClose($file)
	ShellExecute(@ScriptDir & "\Examen Teclado " & $nombre & ".txt")
EndFunc   ;==>_Imprimir
Por el momento solo muestra las respuestas aleatoriamente, pero puedes estudiarlo y modificarlo, habrá mejores maneras de hacerlo, lo que te propongo es solo algo básico..
Saludos
Avatar de Usuario
Dany
Profesional del Autoit
Mensajes: 651
Registrado: 28 Mar 2012, 22:49

Re: Ayuda array

Mensaje por Dany »

Podrían mejorar declarando las variables. y quizás usando notación húngara, para comodidad al leer el código.

gracias luego lo miro bien.
  • ............................................Imagen
    ......................................Imagen
wbueso
Aprendiz de Mago
Mensajes: 61
Registrado: 31 Dic 2013, 01:02

Re: Ayuda array

Mensaje por wbueso »

PDF, estuve leyendo tu código y fue muy excitante, esta vez aprendí algo nuevo de como usar los array, estoy intentando reproducirlos, me preguntaba que paso con los items [0] en las $preg y en $resp, pues comienzan con el numero 1 ($preg[1], $resp[1]), pero eso no es tan impórtate, mi asunto es que este programa es de 4 paginas (GuiCtrlCreateTabItem) y no se como crear, de la misma forma que tú, los grupos, los radios y mas en la pagina 2, si aprendo como hacerlo en la pagina 2, se que lo haré también con las otras paginas, otro detalle es que no me escribe en el documento cual es la opción que Eligio el usuario.
Gracias a todos por la valiosa ayuda.
PDF
Hacker del Foro
Mensajes: 152
Registrado: 18 Ene 2013, 23:23

Re: Ayuda array

Mensaje por PDF »

Dany escribió:Podrían mejorar declarando las variables. y quizás usando notación húngara, para comodidad al leer el código.
No tenia conocimento de esto, me parece una muy buena idea, de ahora en mas a utilizar esto en los códigos..
wbueso escribió:me
preguntaba que paso con los items [0] en las $preg y en $resp, pues comienzan con el numero 1 ($preg[1], $resp[1])
Disculpa debería de comenzar en cero, los items 0 no tienen valor, algo que se me paso :smt003
wbueso escribió:mi asunto es que este programa es de 4 paginas (GuiCtrlCreateTabItem) y no se como crear, de la misma forma que tú, los grupos, los radios y mas en la página 2, si aprendo como hacerlo en la pagina 2, se que lo haré también con las otras paginas
Deberias de mirar el codigo, hacer pruebas, toma el consejo de juanxto..
La clave esta en esta parte del codigo que te presenté:

Código: Seleccionar todo

For $i = 1 To 12
     $ttlpreg[$i] = GUICtrlCreateGroup($i & ". " & $preg[$i], $grupIzq, $grup1Ar, $grupLrg, $grupAlt, $WS_DLGFRAME)
     $Excluir = "|"; Esto solo define la variable que contendra los numeros de items a excluir para evitar preguntas repetidas
     $ale = Random(0, 3, 1); Esto genera un numero aleatorio del 0 al 3 que correspondera al numero de radio en la cual se encontrará la respuesta correcta
     For $o = 0 To 3 ; esto creará los cuatro radios de respuestas
          If $ale = $o Then ; si el numero aleatorio es igual al numero de radio, le ubicamos la respuesta correcta
               $Excluir &= $i & "|"; Excluimos este item de la lista
               ; Creamos el radio con la respuesta correcta
               $opc[$i][$o] = GUICtrlCreateRadio($Letras[$o] & "). " & $resp[$i], $grupIzq + 10, $radAr, $radLrg, $radAlt, $BS_MULTILINE)
          Else ; si el numero aleatorio es distinto al nro de item
               $Array = StringSplit(StringTrimRight($Excluir, 1), "|"); Crea un array con las exclusiones
               $Ale2 = _Random(1, 30, $Array); Genera un numero aleatorio de item excluyendo otros..
               $Excluir &= $Ale2 & "|";añade el numero generado a las exclusiones
               ; Creamos la respuesta incorrecta
               $opc[$i][$o] = GUICtrlCreateRadio($Letras[$o] & "). " & $resp[$Ale2], $grupIzq + 10, $radAr, $radLrg, $radAlt, $BS_MULTILINE)
          EndIf
          $radAr += 30 ; Añadimos 30 para el atributo arriba del radio
     Next
     $radAr = $radAr - 120;  Si corresponde a otra pregunta reducimos 120 para ubicarlo al principio
     $grupIzq += 335 ; Añade 335 si corresponde crear otro grupo
     If $grupIzq = 1010 Then ; si es el cuarto grupo
          $grupIzq = 5 ; reducimos para evitar que el grupo salga del form
          $grup1Ar += 150 ; aumentamos al atrbuto top del grupo para evitar que se encimen
          $radAr = $grup1Ar + 25 ; aumentamos top al radio para ubicarlo dentro del grupo a crear
     EndIf
Next
Tu podrías analizarlo y como tienes 4 páginas, podrías volver a utilizar el mismo bucle, haz pruebas y llegaras al objetivo :smt023
wbueso escribió:otro detalle es que no me escribe en el documento cual es la opción que Eligio el usuario.
Lo puedes hacer de la misma forma como lo habías hecho.. :smt024 :smt024
Salu2.
wbueso
Aprendiz de Mago
Mensajes: 61
Registrado: 31 Dic 2013, 01:02

Re: Ayuda array

Mensaje por wbueso »

amigos, estoy bloqueado y entre mas lo intento mas me confundo, hago que funcione en las otras paginas, pero como elimina las respuestas utilizadas, las ultimas aparecen repetidas, ayudaaaaaaaaaaaaaaaaaaaaaaaa.
Avatar de Usuario
juantxo
Hacker del Foro
Mensajes: 78
Registrado: 02 Abr 2008, 13:36

Re: Ayuda array

Mensaje por juantxo »

Hola wbueso.

A ver si te entiendo...

Tu atasco se produce porque en las ultimas preguntas, como ya no quedan respuestas, salen repetidas ¿verdad?

Ten en cuenta que en una prueba con 10 preguntas, si vas eliminando las respuestas, vas a necesitar 40 respuestas. De estas 30 serán incorrectas y 10 validas.

Si solo quieres jugar con 10 respuestas, y montar cada pregunta con 1 correcta + 3 respuestas de otras preguntas (incorrectas), tendras que controlar que no se repitan, pero no eliminarlas. Una misma respuesta te tiene que aparecer en 4 preguntas aproximadamente.

¿te he ayudado?
Avatar de Usuario
juantxo
Hacker del Foro
Mensajes: 78
Registrado: 02 Abr 2008, 13:36

Re: Ayuda array

Mensaje por juantxo »

Me he picado con este tema... :smt024

Este es un Script que te puede servir como ejemplo. Esta comentado, pero te cuento lo que hace brevemente.

Primero prepara el escenario.
Define el nº de preguntas y genera una tabla con pregunta+ respuesta correcta.
Despues Mete 3 respuestas aleatorias diferentes en cada pregunta.
Mezcla las 4 respuestas
Guarda la respuesta correcta.

A ver si te ayuda....

Código: Seleccionar todo

#include <Array.au3>
#Region Definimos variables necesarias para el proceso

Global $n_Preguntas = 20 ; Cuantas preguntas hay en la prueba.

Dim $a_Preguntas[$n_Preguntas][6] ; Array de preguntas y respuesta correcta.
Dim $a_Auxiliar[4] ; para almacenar las respuestas y mezclarlas.
Dim  $Ale1, $Ale2, $Ale3, $Ale4 ; Variables donde se generan los nº aleatorios
#EndRegion

#Region Generacion de pregunta y respuesta
For $i = 0 To $n_Preguntas - 1
	; para cada pregunta
	$a_Preguntas[$i][0] = "Pregunta numero: " & $i + 1
	$a_Preguntas[$i][1] = "Respuesta Correcta a pregunta numero: " & $i + 1

Next
_ArrayDisplay($a_Preguntas)
#EndRegion Generacion de pregunta y respuesta

#Region Tratamiento de pregunta/respuesta

#Region Añadir respuestas incorrectas.

For $i = 0 To $n_Preguntas - 1	
	Do
		$Ale1 = Random(0, $n_Preguntas - 1, 1)
	Until $Ale1 <> $i ; para evitar que el nº aleatorio sea igual que la pregunta que tratamos. Si no controlamos esto, la respuesta correcta aparece dos veces.
	Do
		$Ale2 = Random(0, $n_Preguntas - 1, 1)
	Until $Ale1 <> $Ale2 And $Ale2 <> $i ; El nº generado no puede ser igual al generado anteriormente, ni al indice de la pregunta actual
	Do
		$Ale3 = Random(0, $n_Preguntas - 1, 1)
	Until $Ale3 <> $Ale2 And $Ale3 <> $Ale1 And $Ale3 <> $i ; El nº generado no puede ser igual al generado anteriormente, ni al indice de la pregunta actual

	ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : ' & @CRLF & 'Pregunta ' & $i & @CRLF & '$Ale1 = ' & $Ale1 & @CRLF & '$Ale2 = ' & $Ale2 & @CRLF & '$Ale3 = ' & $Ale3 & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console

	$a_Preguntas[$i][2] = $a_Preguntas[$Ale1][1]
	$a_Preguntas[$i][3] = $a_Preguntas[$Ale2][1]
	$a_Preguntas[$i][4] = $a_Preguntas[$Ale3][1]

Next
_ArrayDisplay($a_Preguntas)
#EndRegion Añadir respuestas incorrectas.
	
#Region Mezclamos las respuestas.
For $i = 0 To $n_Preguntas - 1 ; esta parte se podria meter en el bucle anterior, pero para que veas la ejecucion, la pongo aparte...
	; Generamos 4 numeros aleatorios diferentes
	$Ale1 = Random(1, 4, 1)
	Do
		$Ale2 = Random(1, 4, 1)
	Until $Ale1 <> $Ale2 ; El nº generado no puede ser igual al generado anteriormente
	Do
		$Ale3 = Random(1, 4, 1)
	Until $Ale3 <> $Ale2 And $Ale3 <> $Ale1 ; El nº generado no puede ser igual al generado anteriormente.
	; Para evitar que se pueda tirar mucho rato generando el 4º numero, lo calculamos de forma un poco 'rara' pero eficaz.
	; la suma de todos los numeros generados tiene que ser siempre 10 (1+2+3+4) Si restamos los numeros generados, saldrá el que falta.
	$Ale4 = 10 - ($Ale1 + $Ale2 + $Ale3)
	; almacenamos las respuestas en una tabla auxiliar.
	For $j = 0 To UBound($a_Auxiliar) - 1
		$a_Auxiliar[$j] = $a_Preguntas[$i][$j + 1]
	Next

	;pasamos los valores de la auxiliar a la real
	$a_Preguntas[$i][$Ale1] = $a_Auxiliar[0]
	$a_Preguntas[$i][$Ale2] = $a_Auxiliar[1]
	$a_Preguntas[$i][$Ale3] = $a_Auxiliar[2]
	$a_Preguntas[$i][$Ale4] = $a_Auxiliar[3]

	; La respuesta correcta ahora ocupa la posicion marcada por $Ale1. Guardamos el indice en la tabla general para luego poder saber cual es
	$a_Preguntas[$i][5] = $Ale1
Next
_ArrayDisplay($a_Preguntas)
#EndRegion Mezclamos las respuestas.
#EndRegion Tratamiento de pregunta/respuesta
Exit
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Ayuda array

Mensaje por Chefito »

Mmmmmm.....esta es una solución fácil que se me ocurrió hace mucho tiempo. La idea es muy sencilla. Simplemente lo que se debe hacer es coger el array el cual no quieres que se repitan los elementos, e ir extrayendo elementos de este array aleatoriamente. Cada elemento que se extraiga, se debe eliminar. Como? Pues asignando el valor del último elemento del array a la posición del elemento que hemos extraído. Después redimensionamos el array a un elemento menos, lo cual eliminará el último elemento del array que ya hemos recuperada anteriormente. Para lioso, pero es muy simple (dos líneas de código).

Os dejo un ejemplo de lo que digo:

Código: Seleccionar todo

Global $aRespuestasFalsas=["falsa1", "falsa2", "falsa3", "falsa4", "falsa5", "falsa6", "falsa7", "falsa8", "falsa9", "falsa10", "falsa11", "falsa12", "falsa13", "falsa14", "falsa15"]
Global $aRespuestasVerdaderas=["Verdadera1", "Verdadera2", "Verdadera3", "Verdadera4", "Verdadera5"]
Global $a4respuestas[4], $cont
For $n=0 To (UBound($aRespuestasFalsas)/3)-1
	$posRespuestaVerdadera=Random(0, 3, 1)
	$a4respuestas[$posRespuestaVerdadera]=$aRespuestasVerdaderas[$n]
	$cont=0
	For $n2=0 To 2
		$respuestaFalsaRandom=Random(0, UBound($aRespuestasFalsas)-1, 1)
		If $n2=$posRespuestaVerdadera Then $cont+=1
		$a4respuestas[$cont]=$aRespuestasFalsas[$respuestaFalsaRandom]
		$cont+=1
		;redimensiono el array restandole un elemento. Esto hace que se elimine el último elemento del array de falsas. Para no perder el último elemento, antes de redimensionar,
		;guardo éste en la posición del elemento que he utilizado. Esto también hace que no se repita el elemento utilizado.
		$aRespuestasFalsas[$respuestaFalsaRandom]=$aRespuestasFalsas[UBound($aRespuestasFalsas)-1]
		ReDim $aRespuestasFalsas[UBound($aRespuestasFalsas)-1]
	Next
	For $n3=0 To 3
		ConsoleWrite($a4respuestas[$n3] & @CR)
	Next
	ConsoleWrite("-----------------------" & @CR)
Next
Por supuesto, si queréis conservar el array original, tendríais que hacer una copia de este array y trabajar con la copia (una simple asignación).

Si dudáis en algo, preguntad.

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
wbueso
Aprendiz de Mago
Mensajes: 61
Registrado: 31 Dic 2013, 01:02

Re: Ayuda array

Mensaje por wbueso »

Amigos, termine el código que estaba haciendo, me lee un archivo INI en donde están las preguntas y respuestas, lo del random no lo hice pues todavía estoy en eso.
Mas o menos lo que quiero es que me coloque la pregunta y que me muestre cuatro opciones A, B, C, D, entre ellas la respuesta correcta en una de las 4 opciones, en las otras 3 opciones coloca respuestas que toma de las otras preguntas, por lo tanto cada respuesta aparecerá varias veces en el examen.
Hay 30 preguntas y 30 respuestas, y no quiero que la respuesta se repita en la misma pregunta, ejemplo: la Respuesta No 1 aparecerá en Pregunta No 1 como verdadera, en la Pregunta No 8 como falsa, en la Pregunta No 15 como falsa, en la Pregunta No 22 como falsa y en la Pregunta No 29 como falsa.
El problema de eliminar la respuesta utilizada es, que en las últimas preguntas salen repetidas las respuestas.
Yo entendí que hay que hacer que escoja una respuesta cada 7, ejemplo: 1,8,15,22,29, en la siguiente ya no comienza con el 1 sino con el 6,13,20,27 y así sucesivamente.
Talvez me entiendan, pero la idea me gusta, también he creado un programa donde escribo las preguntas con sus respectivas respuestas y luego lo guarda en un archivo INI, luego este otro programa lee el INI y prepara el examen.
Les envío el código para que ustedes le den lectura.
Adjuntos
Programa para Examenes MLV.au3
(116.15 KiB) Descargado 157 veces
Creador del Examen.au3
(16.97 KiB) Descargado 162 veces
Avatar de Usuario
Chefito
Profesional del Autoit
Mensajes: 2035
Registrado: 21 Feb 2008, 18:42
Ubicación: Albacete/Cuenca (España)

Re: Ayuda array

Mensaje por Chefito »

Mmmmmm......a ver, solo tienes las mismas respuestas verdaderas para todo. Eso cambia mucho la cosa.
Supongo que el ejemplo que dices, sea solo un ejemplo, porque pienso que la mejor forma para hacer esto es utilizar cada respuesta 4 veces, una verdadera y 3 falsas. Así todas las respuestas se utilizarían un número de veces igual. Y si en vez de ponerlas en el mismo número de pregunta se ponen en preguntas totalmente distintas sería rizar el rizo no?. Pues todo eso también se puede hacer :smt003 . Y no es muy complicado.

Saludos.
Cita vista en algún lugar de la red: En este mundo hay 10 tipos de personas, los que saben binario y los que no ;).
Responder