elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  detener el código
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: detener el código  (Leído 1,735 veces)
Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
detener el código
« en: 14 Enero 2007, 22:23 pm »

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?


En línea

Hendrix
In The Kernel Land
Colaborador
***
Desconectado Desconectado

Mensajes: 2.276



Ver Perfil WWW
Re: detener el código
« Respuesta #1 en: 14 Enero 2007, 22:30 pm »

Puedes pausar el codigo kon este bucle:

Código:
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



En línea

"Todos los días perdemos una docena de genios en el anonimato. Y se van. Y nadie sabe de ellos, de su historia, de su peripecia, de lo que han hecho, de sus angustias, de sus alegrías. Pero al menos una docena de genios se van todos los días sin que sepamos de ellos". - Juan Antonio Cebrián
Hans el Topo


Desconectado Desconectado

Mensajes: 1.754


"Estoy cansado de no hacer nada"


Ver Perfil WWW
Re: detener el código
« Respuesta #2 en: 14 Enero 2007, 23:00 pm »

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

Código:
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
En línea

NYlOn


Desconectado Desconectado

Mensajes: 842


OOOOHHHHHH, TARAGÜIIII xDDDDDD


Ver Perfil WWW
Re: detener el código
« Respuesta #3 en: 15 Enero 2007, 09:22 am »

Lo correcto seria usar la clase Timer:
Código:
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.-
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Detener registraciones spam en vBulletin
Desarrollo Web
85 0 1,963 Último mensaje 9 Abril 2013, 17:34 pm
por 85
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines