FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Logiciel de soutien scolaire en langues.
par Pedro Alvarez Aujourd'hui à 16:52

» KGF_dll - nouvelles versions
par Klaus Aujourd'hui à 14:16

» Compilateur FBPano
par Ouf_ca_passe Aujourd'hui à 12:25

» mise a jour calculatrice
par papydall Aujourd'hui à 2:01

» double guillemets "" dans un EDIT
par Marc Hier à 23:43

» Documentation de KGF
par Klaus Lun 20 Nov 2017 - 22:52

» Zoom sur une portion d'écran
par JL35 Lun 20 Nov 2017 - 21:51

» Recherche d'une expression dans un source
par Marc Lun 20 Nov 2017 - 13:08

» Tracer une grille n'importe où sur l'écran
par JL35 Dim 19 Nov 2017 - 22:14

» TourD Version 2
par Klaus Sam 18 Nov 2017 - 23:58

» La métamatière et le peuple
par JL35 Ven 17 Nov 2017 - 21:18

» Capture d'une zone de l'écran total
par JL35 Ven 17 Nov 2017 - 18:41

» qui peut résoudre mon prb
par pascal10000 Jeu 16 Nov 2017 - 17:30

» évènements et objets système : listage automatique
par Jean Claude Jeu 16 Nov 2017 - 11:15

» Panoramic et la reconnaissance vocale.
par papydall Jeu 16 Nov 2017 - 3:45

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2017
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
27282930   
CalendrierCalendrier

Partagez | 
 

 Sleep ; une alternative de PAUSE

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
papydall

avatar

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

MessageSujet: Sleep ; une alternative de PAUSE   Mar 21 Fév 2017 - 6: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
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jicehel

avatar

Nombre de messages : 5860
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Sleep ; une alternative de PAUSE   Mer 22 Fév 2017 - 11:53

en effet ça peut répondre à un besoin
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Sleep ; une alternative de PAUSE   Mer 22 Fév 2017 - 14:26

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



Nombre de messages : 515
Localisation : TOURS
Date d'inscription : 18/03/2014

MessageSujet: Re: Sleep ; une alternative de PAUSE   Mer 22 Fév 2017 - 15: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
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5860
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Sleep ; une alternative de PAUSE   Mer 22 Fév 2017 - 15: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
Voir le profil de l'utilisateur
Marc



Nombre de messages : 515
Localisation : TOURS
Date d'inscription : 18/03/2014

MessageSujet: Re: Sleep ; une alternative de PAUSE   Mer 22 Fév 2017 - 15: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
Voir le profil de l'utilisateur
papydall

avatar

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

MessageSujet: Re: Sleep ; une alternative de PAUSE   Mer 22 Fév 2017 - 16: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
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Marc



Nombre de messages : 515
Localisation : TOURS
Date d'inscription : 18/03/2014

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

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

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
silverman

avatar

Nombre de messages : 471
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: Sleep ; une alternative de PAUSE   Mer 22 Fév 2017 - 20: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
Voir le profil de l'utilisateur
Marc



Nombre de messages : 515
Localisation : TOURS
Date d'inscription : 18/03/2014

MessageSujet: Re: Sleep ; une alternative de PAUSE   Mer 22 Fév 2017 - 21: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
Voir le profil de l'utilisateur
JL35



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

MessageSujet: Re: Sleep ; une alternative de PAUSE   Mer 22 Fév 2017 - 21: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
Voir le profil de l'utilisateur
Marc



Nombre de messages : 515
Localisation : TOURS
Date d'inscription : 18/03/2014

MessageSujet: Re: Sleep ; une alternative de PAUSE   Mer 22 Fév 2017 - 22: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
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Sleep ; une alternative de PAUSE   

Revenir en haut Aller en bas
 
Sleep ; une alternative de PAUSE
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Le service de rattrapage TV en mode pause et pas seulement?
» Alternative à la Bbox TV
» Une alternative à nRoute: GPSVP
» [Résolu] Stopper puis rejouer un diaporama
» Pratique : hébergez vos rapports sur Cjoint

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: