FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Sleep ; une alternative de PAUSE Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Sleep ; une alternative de PAUSE Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Sleep ; une alternative de PAUSE Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Sleep ; une alternative de PAUSE Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Sleep ; une alternative de PAUSE Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Sleep ; une alternative de PAUSE Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Sleep ; une alternative de PAUSE Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Sleep ; une alternative de PAUSE Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Sleep ; une alternative de PAUSE Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Sleep ; une alternative de PAUSE Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Sleep ; une alternative de PAUSE Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Sleep ; une alternative de PAUSE Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Sleep ; une alternative de PAUSE Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Sleep ; une alternative de PAUSE Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Sleep ; une alternative de PAUSE Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -29%
DYSON V8 Origin – Aspirateur balai sans fil
Voir le deal
269.99 €

 

 Sleep ; une alternative de PAUSE

Aller en bas 
5 participants
AuteurMessage
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Sleep ; une alternative de PAUSE Empty
MessageSujet: Sleep ; une alternative de PAUSE   Sleep ; une alternative de PAUSE EmptyMar 21 Fév 2017 - 4:11

Code:

rem ============================================================================
rem          Fonction Sleep de la kernel32.dll
rem ============================================================================
rem Une alternative de la commande PAUSE
rem La fonction Sleep suspend l exécution du programme pour un temps indiqué en ms.
rem
rem ============================================================================
dim sleep% ,t1,t2
caption 0, " Veuillez patienter 3 secondes .... Sleep"
font_bold 0
dll_on "kernel32"
t1 = number_ticks
sleep% = dll_call1("Sleep",3000)
t2 = number_ticks
print "Sleep   : Il s'est écoulé : " + str$((t2-t1)/1000) + " s"

caption 0, " Veuillez patienter 3 secondes .... Pause"
t1 = number_ticks
pause 3000
t2 = number_ticks
print "PAUSE : Il s'est écoulé : " + str$((t2-t1)/1000) + " s"

caption 0, " Veuillez patienter 3 secondes .... Wait"
t1 = number_ticks
wait 3000
t2 = number_ticks
print "WAIT   : Il s'est écoulé : " + str$((t2-t1)/1000) + " s"
rem ============================================================================
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Sleep ; une alternative de PAUSE Empty
MessageSujet: Re: Sleep ; une alternative de PAUSE   Sleep ; une alternative de PAUSE EmptyMer 22 Fév 2017 - 9:53

en effet ça peut répondre à un besoin
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Sleep ; une alternative de PAUSE Empty
MessageSujet: Re: Sleep ; une alternative de PAUSE   Sleep ; une alternative de PAUSE EmptyMer 22 Fév 2017 - 12:26

Ben oui.
Qui ne veut d'un SLEEP ? Laughing
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Sleep ; une alternative de PAUSE Empty
MessageSujet: Re: Sleep ; une alternative de PAUSE   Sleep ; une alternative de PAUSE EmptyMer 22 Fév 2017 - 13:13

Bonjour à tous !

Merci Papydall pour ce SLEEP !  Very Happy

J'ai testé, ta routine marche parfaitement bien mais...
je n'arrive pas à générer des temps inférieurs à 15ms, tout comme WAIT et PAUSE.  Sad
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Sleep ; une alternative de PAUSE Empty
MessageSujet: Re: Sleep ; une alternative de PAUSE   Sleep ; une alternative de PAUSE EmptyMer 22 Fév 2017 - 13:23

Il y a un temps minimal en dessous duquel tu ne pourras pas descendre: le temps qu'il y ai un cycle pour appeler la fonction, l'exécuter puis revenir à ton programme. Cela est dû au fonctionnement du langage interprété et au mécanisme d'appel de la fonction d'une DLL par un programme. C'est assez rapide somme toute mais ça prend du temps (un temps qui devrait varier en fonction des performances du PC de surcrois )
Si ton temps minimum est de 15ms, idéalement, prévois une marge de sécurité et essaye de tout concevoir pour une boucle avec un temps de 30ms par exemple.
Revenir en haut Aller en bas
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Sleep ; une alternative de PAUSE Empty
MessageSujet: Re: Sleep ; une alternative de PAUSE   Sleep ; une alternative de PAUSE EmptyMer 22 Fév 2017 - 13:59

Salut Jicehel,

15 ms, et a fortiori 30 ms, est beaucoup trop lent pour réguler le déplacement d'une image ou d'un sprite. Sad
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 7017
Age : 74
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Sleep ; une alternative de PAUSE Empty
MessageSujet: Re: Sleep ; une alternative de PAUSE   Sleep ; une alternative de PAUSE EmptyMer 22 Fév 2017 - 14:11

Code:

dim sleep% ,t1,t2
dll_on "kernel32"
t1 = number_ticks
sleep% = dll_call1("Sleep",0) : ' Modifier la durée du sleep (entre 0 et ... beaucoup)
t2 = number_ticks
message "Sleep   : Il s'est écoulé : " + str$(t2-t1) + " ms"
end
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Sleep ; une alternative de PAUSE Empty
MessageSujet: Re: Sleep ; une alternative de PAUSE   Sleep ; une alternative de PAUSE EmptyMer 22 Fév 2017 - 16:18

Merci Papydall, mais en dessous de 16ms c'est la panique, les résultats sont erronés chez moi.

Sleep ; une alternative de PAUSE Time10
Revenir en haut Aller en bas
silverman

silverman


Nombre de messages : 970
Age : 52
Localisation : Picardie
Date d'inscription : 18/03/2015

Sleep ; une alternative de PAUSE Empty
MessageSujet: Re: Sleep ; une alternative de PAUSE   Sleep ; une alternative de PAUSE EmptyMer 22 Fév 2017 - 18:26

Marc37 a écrit:
15 ms, et a fortiori 30 ms, est beaucoup trop lent pour réguler le déplacement d'une image ou d'un sprite.
Je suis curieux de voir comment tu procèdes
Revenir en haut Aller en bas
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Sleep ; une alternative de PAUSE Empty
MessageSujet: Re: Sleep ; une alternative de PAUSE   Sleep ; une alternative de PAUSE EmptyMer 22 Fév 2017 - 19:16

Salut Sylverman,

Par exemple, dans le code ci-dessous, la vitesse de déplacement est ajustée, par dépit, par la boucle FOR/NEXT ligne 122.
Suivant le PC utilisé, la durée de cette boucle FOR/NEXT n'est pas la même. Il me faudrait pouvoir utiliser PAUSE.
Avec PAUSE, peu importe la vitesse du PC, le délai est toujours le même.

Il me faut une variation de 1ms à 15ms.

Mais de 1ms à 15ms, il n'y a aucune différence de temps, c'est toujours du 15ms !
Délai trop long qui empêche donc d'accélérer le déplacement.

La boucle FOR/NEXT permet d'établir des délais très rapides, bien en dessous du milliseconde.

Tu peux supprimer la totalité de la boucle et la remplacer par PAUSE x.
En dessous de 15, pas moyen d’accélérer. Avec la boucle FOR/NEXT, pas de problème pour accélérer, mais dépendant de la vitesse du PC.

Le déplacement est ordonné par la position de la souris.

Code:
' ------------------------------------------------------------------------------
'  Essai de déplacement 4 axes avec la souris.
'  4 plans identiques utilisés + vitesse variable
'  MARC37 - Février 2017 - Panoramic v0.9.27
'  http://panoramic-language.pagesperso-orange.fr/French/index.html
' ------------------------------------------------------------------------------

WIDTH 0, 400
HEIGHT 0, 400
LEFT 0,(SCREEN_X-WIDTH(0))/2
TOP 0,(SCREEN_Y-HEIGHT(0))/2
LABEL Quitter
LABEL Deplace
DIM x%,y% : ' offset variable incrémenté par la souris
DIM Map%(4,2) : ' offset fixe des Sprites
DIM x_souris%, y_souris%
DIM i% : ' boucle de vitesse
DIM Vitesse%
DIM h%,w%
    w% = WIDTH_CLIENT(0)
    h% = HEIGHT_CLIENT(0)
ON_CLOSE 0, Quitter
espace_sideral()
WHILE 0=0
    x_souris%= MOUSE_X_POSITION(10)
    y_souris%= MOUSE_Y_POSITION(10)
    Vitesse% = (ABS(y_souris%-(h%/2))+ABS(x_souris%-(w%/2)))/2
    Vitesse% = (vitesse%*(-1*227))+20520
    IF y_souris%>(1/2*h%+10) THEN y%=y%+1: ' vers le bas
    IF y_souris%<(1/2*h%-10) THEN y%=y%-1: ' vers le haut
    IF x_souris%>(1/2*w%+10) THEN x%=x%+1: ' vers la droite
    IF x_souris%<(1/2*w%-10) THEN x%=x%-1: ' vers la gauche
    IF x% = w% THEN x% = 0
    IF y% = h% THEN y% = 0
    IF x% = (-1*w%) THEN x% = 0
    IF y% = (-1*h%) THEN y% = 0
    IF x%=>0 AND y%=>0
        Map%(1,1)=(-1*w%)+x%
        Map%(2,1)=0+x%
        Map%(3,1)=0+x%
        Map%(4,1)=(-1*w%)+x%
        Map%(1,2)=0+y%
        Map%(2,2)=0+y%
        Map%(3,2)=(-1*h%)+y%
        Map%(4,2)=(-1*h%)+y%
    END_IF
    IF x%=<0 AND y%=<0
        Map%(1,1)=w%+x%
        Map%(2,1)=0+x%
        Map%(3,1)=0+x%
        Map%(4,1)=w%+x%
        Map%(1,2)=0+y%
        Map%(2,2)=0+y%
        Map%(3,2)=h%+y%
        Map%(4,2)=h%+y%
    END_IF
    IF x%=>0 AND y%=<0
        Map%(1,1)=(-1*w%)+x%
        Map%(2,1)=0+x%
        Map%(3,1)=0+x%
        Map%(4,1)=(-1*w%)+x%
        Map%(1,2)=0+y%
        Map%(2,2)=0+y%
        Map%(3,2)=h%+y%
        Map%(4,2)=h%+y%
    END_IF
    IF x%=<0 AND y%=>0
        Map%(1,1)=w%+x%
        Map%(2,1)=0+x%
        Map%(3,1)=0+x%
        Map%(4,1)=w%+x%
        Map%(1,2)=0+y%
        Map%(2,2)=0+y%
        Map%(3,2)=(-1*h%)+y%
        Map%(4,2)=(-1*h%)+y%
    END_IF
    GOSUB Deplace
END_WHILE
END
' ------------------------------------------------------------------------------
SUB Espace_sideral()
    DIM_LOCAL i%, j%
    PICTURE 20
    FULL_SPACE 20
    COLOR 20,j%*20,j%*20,0
    2D_TARGET_IS 20
    2D_PEN_COLOR 255,255,255
    FOR i%=1 TO 500
        2D_POINT INT(RND(w%)),INT(RND(h%))
    NEXT i%
    FOR i%=1 TO 50
        2D_CIRCLE INT(RND(w%)),INT(RND(h%)),2
    NEXT i%
    IMAGE 30
        2D_IMAGE_COPY 30,0,0,w%,h%
    CLS
    SCENE2D 10
    FULL_SPACE 10
    SPRITE_CREATE_HIDE
    FOR i% = 1 to 4
        SPRITE i%
    NEXT i%
    FOR i% = 1 to 4
        SPRITE_IMAGE_LOAD i%,30
    NEXT i%
    x%=0
    y%=0
    SPRITE_POSITION 1,x%,y%-h%
    SPRITE_POSITION 2,x%,y%
    SPRITE_POSITION 3,x%,y%+h%
    SPRITE_POSITION 4,x%-w%,y%-h%
    FOR i% = 1 to 4
        SPRITE_SHOW i%
    NEXT i%
END_SUB
' ------------------------------------------------------------------------------
deplace:
    SPRITE_POSITION 1,Map%(1,1),Map%(1,2)
    SPRITE_POSITION 2,Map%(2,1),Map%(2,2)
    SPRITE_POSITION 3,Map%(3,1),Map%(3,2)
    SPRITE_POSITION 4,Map%(4,1),Map%(4,2)
    FOR i% = 0 TO vitesse%
    NEXT i%
    DISPLAY
RETURN
' ------------------------------------------------------------------------------
Quitter:
    TERMINATE
RETURN
' --------------------------
Revenir en haut Aller en bas
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Sleep ; une alternative de PAUSE Empty
MessageSujet: Re: Sleep ; une alternative de PAUSE   Sleep ; une alternative de PAUSE EmptyMer 22 Fév 2017 - 19:49

Marc,
Pour plus de précision, tu pourrais faire comme ceci:
Code:
' pause de ps millisecondes
nt = NUMBER_TICKS
WHILE NUMBER_TICKS < (nt + ps): END_WHILE
mais c'est bloquant (pas plus que la boucle FOR/NEXT)

PS ERREUR, pareil, on ne descend pas au-dessous des 16 ms chez moi...
Revenir en haut Aller en bas
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Sleep ; une alternative de PAUSE Empty
MessageSujet: Re: Sleep ; une alternative de PAUSE   Sleep ; une alternative de PAUSE EmptyMer 22 Fév 2017 - 20:57

Salut JL35 !

J'ai déjà exploité ta solution et, comme tu l'as remarqué, tu es bloqué à 16ms.
Donc, toujours cette maudite barrière à 15 ou 16 ms... Crying or Very sad

Merci de ton intervention. En attendant, je continue avec FOR/NEXT, mais ce n'est pas la panacée !
Revenir en haut Aller en bas
Contenu sponsorisé





Sleep ; une alternative de PAUSE Empty
MessageSujet: Re: Sleep ; une alternative de PAUSE   Sleep ; une alternative de PAUSE Empty

Revenir en haut Aller en bas
 
Sleep ; une alternative de PAUSE
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Alternative à la fonction rnd() de Panoramic
» Une pause
» Wait / Pause
» NUMBER_TICKS et PAUSE
» Une pause dans la tempête

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: