buenas, ave quien me exa una mano con un problemilla porque no se me ocurre nada para solventarlo
ando haciendo un jueguecillo basado en turnos
cuando la IA de las tropas controladas por el ordenador se van a mover buscan zonas a su alrededor factibles, baratan posibilidades,
una de esas posibilidades es atacar a otra unidad, entonces aparece una pequeña animación del combate, pero claro como los calculos son rapidismos y la animación es más lenta pues he añadido un timer que controle el tema,
el problema aparece cuando dos unidades atacan a una misma,
usease cuando ataca a una que se supone que esta luchando, puesto que el proceso sigue aunque la animación este apareciendo, mi pregunta es como detener el proceso durante unos instantes,
he probado con sleep pero detiene todo, y un bucle es sobrecargar la cpu sin sentido
¿a alguien se le ocurre alguna solución?
Puedes pausar el codigo kon este bucle:
Private Sub Wait(ByVal nSec As Integer)
'Esperar un número de segundos
Dim t1 As Date, t2 As Date
t1 = Second(Now)
t2 = t1 + nSec
Do
DoEvents
Loop While t2 > Second(Now)
End Sub
No se sobrecargaria gracias al DoEvents.
Es una alternativa al sleep que uso bastante.
Salu2
creo que tu código esta mal no?
guardas lo que devuelve second (un valor variant entre 0-59) en un date, por lo tanto el date te lo inicia a por defecto, que es 1900 bla bla bla
luego le sumas a t2, que es una fecha t1 que es el valor por defecto (t1 y t2 valen lo mismo) le sumas los segundos... y luego comparas una fecha con segundos?
bueno estuve revisandola y creo que asi si queda como pretendias
Private Sub Wait(ByVal nSec As Integer)
'Esperar un número de segundos
Dim t2 As Date
t2 = DateAdd("s", nSec, Now)
Do
DoEvents
Loop While t2 > Now
End Sub
de este modo evitamos el problema que tendríamos al pasarnos del valor 59 si solo lo hiciesemos con segundos
muchas gracias Hendrix
Lo correcto seria usar la clase Timer:
Public Sub Esperar(Segundos As Long)
Dim n1 As Long
n1 = Timer
Do While Timer - n1 < Segundos
DoEvents
Loop
End Sub
Aunque hay muchas alternativas funcionales...
Saludos.-