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
» ajouter des blancs dans un TXT
par lepetitmarocain Hier à 13:00

» Planétarium virtuel.
par Oscaribout Mar 14 Aoû 2018 - 19:45

» 11 (en analyse): commandes sur TAB et SUB_MENU.
par Jack Mar 14 Aoû 2018 - 14:10

» 10 (en analyse): Erreur sur variable locale.
par Jack Mar 14 Aoû 2018 - 14:05

» Métamatière, éternité et renouvellement
par Oscaribout Mar 14 Aoû 2018 - 12:40

» De retour...
par Yannick Lun 13 Aoû 2018 - 15:11

» bug SEVERE fnc+sub : (35)name already defined
par Oscaribout Dim 12 Aoû 2018 - 23:55

» Encadrement
par Jean Claude Dim 12 Aoû 2018 - 11:53

» Des rectangles...
par JL35 Dim 12 Aoû 2018 - 10:53

» TRIGGER_KEY_COMBINED_TOUCH
par Jean Claude Mar 7 Aoû 2018 - 20:58

» ITEM_SELECT N,L pour synedit
par Jean Claude Mar 7 Aoû 2018 - 19:11

» amélioration panoramic
par silverman Dim 5 Aoû 2018 - 18:34

» Commande file_readln.
par Pedro Alvarez Dim 5 Aoû 2018 - 17:08

» Klaus ?
par Jack Sam 4 Aoû 2018 - 22:48

» Défragmentation du disque dur
par JL35 Sam 4 Aoû 2018 - 21:06

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Août 2018
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier

Partagez | 
 

 Sleep ; une alternative de PAUSE

Aller en bas 
AuteurMessage
papydall

avatar

Nombre de messages : 5983
Age : 68
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 - 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
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jicehel

avatar

Nombre de messages : 5929
Age : 46
Localisation : 77500
Date d'inscription : 18/04/2011

MessageSujet: Re: Sleep ; une alternative de PAUSE   Mer 22 Fév 2017 - 9: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 : 5983
Age : 68
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 - 12: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

avatar

Nombre de messages : 809
Age : 57
Localisation : TOURS
Date d'inscription : 17/03/2014

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

avatar

Nombre de messages : 5929
Age : 46
Localisation : 77500
Date d'inscription : 18/04/2011

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

avatar

Nombre de messages : 809
Age : 57
Localisation : TOURS
Date d'inscription : 17/03/2014

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

avatar

Nombre de messages : 5983
Age : 68
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: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

avatar

Nombre de messages : 809
Age : 57
Localisation : TOURS
Date d'inscription : 17/03/2014

MessageSujet: Re: Sleep ; une alternative de PAUSE   Mer 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.

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

avatar

Nombre de messages : 664
Age : 46
Localisation : Picardie
Date d'inscription : 18/03/2015

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

avatar

Nombre de messages : 809
Age : 57
Localisation : TOURS
Date d'inscription : 17/03/2014

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



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

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

avatar

Nombre de messages : 809
Age : 57
Localisation : TOURS
Date d'inscription : 17/03/2014

MessageSujet: Re: Sleep ; une alternative de PAUSE   Mer 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
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
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: