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
» Reprise du développement et de la documentation
par Fredisland Aujourd'hui à 12:53

» Une copie de Panoramic Editeur
par Jean Claude Hier à 21:03

» Objet 3D_PLANE, réalisation d'un dé en 3D
par Marc Hier à 0:33

» Cacher la barre des tâches
par Klaus Lun 21 Mai 2018 - 21:27

» Une "base de connaissance" - pour jouer ou plus si affinité
par Minibug Lun 21 Mai 2018 - 10:29

» quel est ce comportement de Panoramic_editor
par Oscaribout Lun 21 Mai 2018 - 0:22

» Des FORM(s) Colorés
par Jean Claude Dim 20 Mai 2018 - 20:58

» Recherches dans un fichier texte
par JL35 Dim 20 Mai 2018 - 20:18

» Problème d'affichage des pages du forum (Résolu)
par Jean Claude Dim 20 Mai 2018 - 20:00

» Créer une application *.exe
par Yannick Ven 18 Mai 2018 - 20:01

» [RÉSOLU] Priorité affichage des objets : comment la définir?
par papydall Ven 18 Mai 2018 - 18:22

» Aucune différence entre ON_CLICK et ON_DOUBLE_CLICK
par Jean Claude Jeu 17 Mai 2018 - 8:37

» [Résolu] Récuperer les fonctions systeme de Panoramic
par Minibug Mar 15 Mai 2018 - 23:21

» Est-ce qu'un fichier est inclus dans l'application ?
par Yannick Mar 15 Mai 2018 - 12:04

» Création d'une application avec Panoramic_Editor
par Klaus Mar 15 Mai 2018 - 0:36

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2018
LunMarMerJeuVenSamDim
 123456
78910111213
14151617181920
21222324252627
28293031   
CalendrierCalendrier

Partagez | 
 

 Sleep ; une alternative de PAUSE

Aller en bas 
AuteurMessage
papydall

avatar

Nombre de messages : 5906
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 - 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 : 5916
Age : 45
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 : 5906
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 - 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 : 740
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 : 5916
Age : 45
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 : 740
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 : 5906
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: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 : 740
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 : 614
Age : 45
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 : 740
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 : 6257
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 : 740
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

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: