Autoit en español
Aplicaciones con Autoit - Juan Antonio Villalpando
-- Tutorial de iniciación a Autoit --
Volver al índice del tutorial
____________________________
11.- Koda. Adivinar el número.
adivina.exe
- El ordenador creará un número del 1 al 100. El usuario deberá adivinarlo, para ello escribirá un número y la aplicación mostrará un mensaje indicando si el número que has introducido es mayor o menor que el del ordenador.
- Este código es similar al que vimos en App Inventor: Adivina el número .
__________________________
- Ejecutamos Koda para crear el formulario.
- Creamos el siguiente Formulario. Tenemos Label (etiquetas), InputBox y Botones.
- He puesto Fuentes de tamaño: 20 y Style: Blod (negrita)
- Si pulsas Tools / Run Form, verás cómo va quedando.
- Si pulsas en Objetc Inspector la flecha que indica la siguiente imagen, verás el nombre de los componentes creados.
- Pulsamos en Tools / Generate Form Code... y obtenemos el código de situación de los componentes del Formulario.
- Ese código lo copiamos en el Editor SciTE. Borramos las últimas líneas como indico en la imagen.
- Creo el código de Adivina.
- NOTA: El número que se ha de adivinar aparecerá inicialmente en el Label3, solo para hacer comprobaciones de funcionamiento, cuando ya queramos jugar, eliminamos o comentamos mediante punto y coma; la línea del Label3 para que no se vea el número que debemos adivinar.
Código
Adivina |
While 1
$msg = GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
; Cuando presiona el Botón1 crea un número aleatorio del 1 al 100
Case $msg = $Button1 ; Indicamos que el cálculo se realizará cuando pulsemos el Botón1
$ordenador = Random(0,100,1)
GUICtrlSetData($Label3,$ordenador) ; El $ordenador lo escribirá en la Label3. Para comprobaciones.
; Cuando presiona el Botón2 realizará las comparaciones.
Case $msg = $Button2 ; Indicamos que el cálculo se realizará cuando pulsemos el Botón1
$mio = GUICtrlRead($Input1) ; Toma el valor que escribamos en el Input1 y lo asigna a la $mio
if $ordenador > $mio Then
GUICtrlSetData($Label2,"Mi número es mayor.") ; Escribe en Label2 = Mi número es mayor.
EndIf
if $ordenador < $mio Then
GUICtrlSetData($Label2,"Mi número es menor.") ; Escribe en Label2 = Mi número es menor.
EndIf
if $ordenador = $mio Then
GUICtrlSetData($Label2,"HAS ACERTADO.") ; Escribe en Label2 = HAS ACERTADO.
EndIf
EndSelect
Wend
Exit
|
- La parte azul de arriba y abajo la insertaremos también.
Formulario + codigo
adivina.au3 |
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form2 = GUICreate("Adivina el número - Juan A. Villalpando", 586, 337, 189, 129)
$Button1 = GUICtrlCreateButton("Pulsa para nueva partida", 24, 8, 545, 49)
GUICtrlSetFont(-1, 20, 800, 0, "MS Sans Serif")
$Label1 = GUICtrlCreateLabel("Introduce un número", 16, 80, 319, 41)
GUICtrlSetFont(-1, 20, 800, 0, "MS Sans Serif")
$Input1 = GUICtrlCreateInput("Input1", 16, 128, 121, 45)
GUICtrlSetFont(-1, 20, 800, 0, "MS Sans Serif")
$Button2 = GUICtrlCreateButton("¿Es este?", 16, 184, 153, 41)
GUICtrlSetFont(-1, 20, 800, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Label2", 176, 184, 387, 33)
GUICtrlSetFont(-1, 15, 800, 0, "MS Sans Serif")
$Label3 = GUICtrlCreateLabel("Label3", 24, 256, 122, 41)
GUICtrlSetFont(-1, 20, 800, 0, "MS Sans Serif")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
While 1
$msg = GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
; Cuando presiona el Botón1 crea un número aleatorio del 1 al 100
Case $msg = $Button1 ; Indicamos que el cálculo se realizará cuando pulsemos el Botón1
$ordenador = Random(0,100,1)
GUICtrlSetData($Label3,$ordenador) ; El $ordenador lo escribirá en la Label4
; Cuando presiona el Botón2 realizará las comparaciones.
Case $msg = $Button2 ; Indicamos que el cálculo se realizará cuando pulsemos el Botón2
$mio = GUICtrlRead($Input1) ; Toma el valor que escribamos en el Input1 y lo asigna a la $mio
if $ordenador > $mio Then
GUICtrlSetData($Label2,"Mi número es mayor.") ; Escribe en Label2 = Mi número es mayor.
EndIf
if $ordenador < $mio Then
GUICtrlSetData($Label2,"Mi número es menor.") ; Escribe en Label2 = Mi número es menor.
EndIf
if $ordenador = $mio Then
GUICtrlSetData($Label2,"HAS ACERTADO.") ; Escribe en Label2 = HAS ACERTADO.
EndIf
EndSelect
Wend
Exit
|
- Lo ejecutamos: Tools / Go. [En caso de que ya estuviera funcionando pulsamos "Tools / Stop Executing"]
- NOTA: La Etiqueta3 es solo para comprobar el funcionamiento de la aplicación. Cuando comprobemos su buen funcionamiento, borraremos o inhabilitaremos esta Etiqueta3 para no ver el número que debemos acertar.
- La convertimos en autoejecutable mediante Aut2Exe, aqui está: adivina.exe
_________________
- Propuesta.
- Crea un contador que cuente el número de intentos realizados para acertar.
intentos = intentos + 1
__________________________
- Botón que cambia su Caption.
- Mediante GUICtrlSetData podemos cambiar las propiedades de un control que esté creado previamente.
adivina.au3 |
#include <GUIConstantsEx.au3>
#Region ### START Koda GUI section ### Form=
GUICreate("GUICtrlSetData", 200,100)
$button = GUICtrlCreateButton("Iniciar",60, 30, 80, 20)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
$count = 0
While 1
$msg = GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $button
If $count = 1 Then
GUICtrlSetData($button, "Iniciar")
$count = 0
ElseIf $count = 0 Then
GUICtrlSetData($button, "Parar")
$count = 1
EndIf
EndSelect
Wend
Exit
|
__________________________
- Otra manera de realizar el bucle.
- En otros tutoriales verás otra manera de realizar el bucle para la obtención del botón pulsado, mediante Switch.
- En estos tutoriales seguiremos utilizando el primer método.
adivina.au3 |
#include <GUIConstantsEx.au3>
#Region ### START Koda GUI section ### Form=
GUICreate("GUICtrlSetData", 200,100)
$button = GUICtrlCreateButton("Iniciar",60, 30, 80, 20)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
$count = 0
While 1
Switch GuiGetMsg()
Case $button
If $count = 1 Then
GUICtrlSetData($button, "Iniciar")
$count = 0
ElseIf $count = 0 Then
GUICtrlSetData($button, "Parar")
$count = 1
EndIf
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
Wend
|
|