Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Cuestion Y Tiempo
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Cuestion Y Tiempo 
 
Hola!.

Tengo que mejorar el titulo y la descripción de este mensaje.

Quería usar el comando input y timer en un ejemplo de consola.
Pero me dio problemas. Timer no hace nada hasta que se escribe algo.
La idea era que si se tardaba en responder mas de la cuenta, de alguna manera la aplicación avisa.

Es lo mas parecido a los concursos. Cuando te pasas de tiempo en responder.

Hice dos ejemplos parecidos. Se nota una programación distinta.

Este es el primero con un input. Una vez escrito se comprueba el tiempo que ha tardado
y avisa si el tiempo fue mayor del deseado. Pero no se temporiza mientras no se escribe nada.

Public Sub Comprueba_Tiempo()
  Dim nombre As String
  Dim hora_al_inicio As Date
  Dim hora_al_final As Date
  Dim segundos As Integer
  
  Print "Ingrese su nombre: "  
  hora_al_inicio = Time(Now)
  Do While Not nombre
    Input nombre       'Cualquier texto
  Loop  
  hora_al_final = Time(Now)
  segundos = Abs(DateDiff(hora_al_final, hora_al_inicio, gb.Second))
  
  If segundos > 10 Then
    Print "Ha tardado demasiado en escribir su nombre"
  Else
    Print "Ha tardado en escribir su nombre en : " & segundos & " segundos"  
  Endif
End
 


Ahora el ejemplo con un formulario. Es distinto. Se controla mejor. Aquí si va mejor Timer.

Private ha_escrito_algo As Boolean
Private contador As Integer

Public Sub _new()
  
End

Public Sub Form_Open()
  
  Timer1.Delay = 1000
  Timer1.Start  
  
End

Public Sub Timer1_Timer()
  
  If ha_escrito_algo Then  
    Print "Ha ingresado un nombre"    
    Print "Ha tardado en escribirlo: " & contador & " segundos"    
    Timer1.Stop
  Else If contador >= 10 Then
    Print "Ha tardado más de diez segundos en escribirlo"      
    Timer1.Stop
  Else If contador < 10 Then
    contador += 1    
  Endif
  
End

Public Sub txtNombre_KeyPress()
  
  If Key.Code = Key.Return Then ha_escrito_algo = True
  
End
 


No se si en consola esto tendrá solución.  

Imaginar los interpretes de basic antiguo. Una linea de comando que esta esperando a que escribas algo y no se hace.
La aplicación no acabaría nunca   


Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Martes, 24 Diciembre 2013, 19:34; editado 1 vez 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cuestion Y Tiempo 
 
No he entendido absolutamente nada, pero Feliz Navidad, shell!  
 




===================
Jesús Guardón

Por favor, usemos el corrector ortográfico antes de pulsar el botón "Enviar".

"uo ǝs ʇɐu pıɟıɔıן ɐdɹǝupǝɹ ɐ dɹoƃɹɐɯɐɹ, soןo ɥɐʎ bnǝ dɹodouǝɹsǝןo"
 
jguardon - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cuestion Y Tiempo 
 
jajaja.

Vale, me explico de otra forma. Imagina que estas esperando una respuesta de alguien y el tiempo
que tiene en responder es limitado.

Lo que me interesa es que en modo consola cuando el usuario entra algo mediante input,
tenga un tiempo limitado para escribir algo. Pero en modo consola, no con formularios.  

Estos dos ejemplos son distintos, el primero que hice en modo consola usaba input y timer,
pero no funcionaba como yo quería. Lo busco y lo subo para que veas el comportamiento que hace.

En estos ejemplos distintos, en el que es con formulario se cumple lo que quiero.
Solo es cuestión de arrancar el timer al principio y comprobar que el usuario ha pulsado la tecla Enter o Return.
Si lo hace antes de tiempo, muestra el tiempo que ha necesitado en escribir algo.
Escriba o no escriba algo el usuario, el timer es independiente y va avisar de que se ha pasado el usuario o no en tiempo.

En el modo consola, casi es lo que quiero. Solo que se hace la comprobación al final, cuando el usuario ya ha escrito algo.
No hay nada que limite el tiempo de escritura del usuario en este ejemplo de consola.

Entonces, como en el ejemplo de consola, la aplicación se ejecuta una instrucción tras otra, no
se pueda hacer algo que si se puede hacer en la programación dirigida por eventos.

Espero haberme explicado mejor, esta vez.  

Feliz navidad Jesús.
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cuestion Y Tiempo 
 
Ejemplo 1.

Imagino que vais a decir. ¿ Como es que no salta a la instrucción del Timer y va y ejecuta el Input ?.
Y hasta que Input no se ejecuta, no comienza Timer. Podéis probar ejecutando con F8.

( Visto de alguna manera si salta a Reloj_Timer, nunca se ejecutaría print e input )  

- Si se escribes algo, te dirá que es un segundo.
- Si no escribes nada, no se ejecuta Timer.
- Si das a intro y esperas, al rato te dirá que se ha excedido el tiempo.


Private temporizador As Timer
Private cuenta_tiempo As Integer
Private ha_escrito_algo As String

Public Sub Main()

  temporizador = New Timer As "Reloj"
  temporizador.Delay = 1000
  temporizador.Start
  
  Print "Escriba algo"
  Input ha_escrito_algo
  
End

Public Sub Reloj_Timer()
  
  cuenta_tiempo += 1
  If cuenta_tiempo >= 10 And Not ha_escrito_algo Then
    Print "Limite de tiempo excedido"
    temporizador.Stop
  Else If cuenta_tiempo < 10 And ha_escrito_algo Then
    Print "Ha necesitado " & cuenta_tiempo & " segundos. Para escribir: " & ha_escrito_algo    
    temporizador.Stop
  Endif
  
End
 


Entonces digo yo. Y si añado el input en el timer.
Veremos...

No descanso ni en navidades. ¿ Sera vicio ?.  

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cuestion Y Tiempo 
 
No puedo añadir input en el timer, se pararía todo....
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cuestion Y Tiempo 
 
Shell:

En el basic antiguo existia una funcion llamada INKEY$, que lo que hacia era leer el teclado y devolver la letra pulsada. La metias en un bucle while y ibas recibiendo todas las letras pulsadas hasta que se cumpliera una condicion.

Se usaba mucho en el tema de programar juegos.

En gambas  no la he visto, pero supongo que se podria implementar con una funcion externa en C, usando getch().

Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Cuestion Y Tiempo 
 
Julio:

INKEY$ era solo para una tecla. Cierto. jeje, WHILE. Mas bien digamos un GO TO. GOSUB,RETURN.
A lo mas teníamos teníamos el bucle FOR. Eso en Spectrum Sinclair.

Sin llegar a código maquina esto se tenia que hacer de alguna forma.
A ver si encuentro algún juego antiguo hecho en basic con esta idea.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes ¿formularios En Tiempo De Ejecución O En... jsoto61 General 1 Jueves, 10 Diciembre 2009, 00:54 Ver último mensaje
fabianfv
No hay nuevos mensajes Cuestion Sobre Variables Shell General 2 Sabado, 14 Abril 2012, 17:26 Ver último mensaje
shordi
No hay nuevos mensajes Cuestion De Gustos O No? v3ctor General 5 Sabado, 14 Junio 2014, 21:04 Ver último mensaje
Shell
No hay nuevos mensajes Cuestion Sobre Key.Code Shell General 2 Viernes, 12 Septiembre 2014, 00:04 Ver último mensaje
Shell
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron