Creando un ejemplo con Python, decidí hacerlo con Gambas.
Con gambas como conozco como va DateDiff no he tenido muchos problemas, con Python aun tengo
que enterarme mejor como va el modulo adecuado para esto.
El ejemplo consiste, en que el usuario debe resolver una suma ( esta vez ).
El usuario da un número de cifras para sumar dos números con el mismo numero de cifras y debe acertar la suma al azar que se
ha generado de estos dos números.
Si acierta, se le mostrara el tiempo que ha tardado en minutos y segundos.
Ejemplo de la salida de la consola:
Citar:
Este es el código:
' gambas module file
Public Sub Main()
Dim numcifras As Integer
Randomize
Print "¿ Número de cifras ?"
Input numcifras
SumaAleatoria(numcifras)
End
Public Function GeneraNumero(numcifras As Integer) As Integer ''Genera un número de n cifras
Dim numero As String
Dim i, cifra As Integer
For i = 1 To numcifras
'No queremos que el número de la izquierda sea un 0
If i = 1 Then
cifra = Rand(1, 9)
Else
cifra = Rand(0, 9)
Endif
numero &= Str(cifra)
Next
Return numero
End
Public Sub SumaAleatoria(ncifras As Integer) ''Crea una suma aleatoria de dos números de n cifras
Dim sentrada As String
Dim ia, ib, isuma As Integer
Dim tiempo As Integer[]
Dim DHoraInicio, DHoraActual As Date
ia = GeneraNumero(ncifras)
ib = GeneraNumero(ncifras)
DHoraInicio = Time(Now)
While Not IsDigit(sentrada)
Print Subst("&{1} + &{2} = ...", ia, ib)
Input sentrada
Wend
isuma = ia + ib
If CInt(sentrada) = isuma Then
Print "Muy bien!"
DHoraActual = Time(Now)
tiempo = Ams(Abs(DateDiff(DHoraActual, DHoraInicio, gb.Second)))
Print Subst$("Ha tardado &{1} minutos y &{2} segundos en responder.", tiempo[0], tiempo[1])
Else
Print Subst("Incorrecto, la respuesta era &{1}", isuma)
Endif
End
Public Function Ams(s As Integer) As Integer[] ''Convierte de segundos a minutos y segundos
Dim minutos As Integer
Dim segundos As Integer
minutos = s \ 60
segundos = s Mod 60
Return [minutos, segundos]
End
Public Sub Main()
Dim numcifras As Integer
Randomize
Print "¿ Número de cifras ?"
Input numcifras
SumaAleatoria(numcifras)
End
Public Function GeneraNumero(numcifras As Integer) As Integer ''Genera un número de n cifras
Dim numero As String
Dim i, cifra As Integer
For i = 1 To numcifras
'No queremos que el número de la izquierda sea un 0
If i = 1 Then
cifra = Rand(1, 9)
Else
cifra = Rand(0, 9)
Endif
numero &= Str(cifra)
Next
Return numero
End
Public Sub SumaAleatoria(ncifras As Integer) ''Crea una suma aleatoria de dos números de n cifras
Dim sentrada As String
Dim ia, ib, isuma As Integer
Dim tiempo As Integer[]
Dim DHoraInicio, DHoraActual As Date
ia = GeneraNumero(ncifras)
ib = GeneraNumero(ncifras)
DHoraInicio = Time(Now)
While Not IsDigit(sentrada)
Print Subst("&{1} + &{2} = ...", ia, ib)
Input sentrada
Wend
isuma = ia + ib
If CInt(sentrada) = isuma Then
Print "Muy bien!"
DHoraActual = Time(Now)
tiempo = Ams(Abs(DateDiff(DHoraActual, DHoraInicio, gb.Second)))
Print Subst$("Ha tardado &{1} minutos y &{2} segundos en responder.", tiempo[0], tiempo[1])
Else
Print Subst("Incorrecto, la respuesta era &{1}", isuma)
Endif
End
Public Function Ams(s As Integer) As Integer[] ''Convierte de segundos a minutos y segundos
Dim minutos As Integer
Dim segundos As Integer
minutos = s \ 60
segundos = s Mod 60
Return [minutos, segundos]
End
Y aquí el código para bajarlo y probarlo.
Por ahora solo hace sumas. Mi idea es mejorarlo y que haga todas las operaciones, llevar un record, tener distintos usuarios..formularios...uuuuu.
Y sera muy simple..como proyecto para empezar no estaría mal, luego aplicar una base de datos...jugando se aprende.
Saludos
TestDeSumas.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | TestDeSumas.tar.gz | |
Tamaño: | 5.86 KB | |
Descargado: | 41 veces |
TestDeSumas.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | TestDeSumas.tar.gz | |
Tamaño: | 5.86 KB | |
Descargado: | 41 veces |
TestDeSumas.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | TestDeSumas.tar.gz | |
Tamaño: | 5.86 KB | |
Descargado: | 41 veces |