Rechercher
Résultats par :
Recherche avancée
Qui est en ligne ?
Il y a en tout 3 utilisateurs en ligne :: 0 Enregistré, 0 Invisible et 3 Invités

Aucun

Voir toute la liste


Partagez
Voir le sujet précédentAller en basVoir le sujet suivant
avatar
Site Admin
Messages : 1036
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

Bogue avec le verbe temporiser

le Wed 19 Dec - 21:42
bonsoir,

Je signale à l'auteur de langage Linote que j'ai découvert un bogue :

[php]
principale :
début
appelle bogue
temporise
"affiche mince" !

bogue :
début
attends 2 secondes
reviens
[/php]

Au boulot !!
Senior Member
Messages : 340
Date d'inscription : 2010-08-31
Voir le profil de l'utilisateurhttp://zamirhlinotte.monsite-orange.fr/

RE: Bogue avec le verbe temporiser

le Thu 20 Dec - 1:34
Vive le dédoublement de personnalité...
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Bogue avec le verbe temporiser

le Thu 27 Dec - 15:27
Bonjour,

Le verbe Temporiser semble corrigé dans ton exemple.

En revanche, avec cet exemple :

[php]
Interaction avec le clavier :
information est un graffiti, x vaut 211, y vaut 261
action est un texte
début
Projette information
Tant que vrai, lis
Temporise
"test" !
action vaut touche
Si action est non vide, texte de information vaut action
ferme
[/php]

Le verbe Temporiser ne fonctionne pas.
avatar
Site Admin
Messages : 1036
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Bogue avec le verbe temporiser

le Fri 28 Dec - 12:55
Il marche bien cet exemple.
Quel est le problème ?
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Bogue avec le verbe temporiser

le Fri 28 Dec - 14:02
Le verbe Temporiser n'est pas sensé mettre le programme en pause, en attendant qu'une touche soit enfoncée ?

Dans mon exemple, le programme tourne en boucle indéfiniment, même si l'on appui sur aucune touche...

Voici un autre exemple, trouvé dans le tuto Découvrir Linotte 2010, que j'ai passé en 2.0 :

[php]
Globale
information est un graffiti, x vaut 211, y vaut 261

Décor :
début
Projette information
Va vers affichage

Affichage :
action est un texte
début
Temporise
"test" !
action vaut touche
si action est vide, va vers affichage
texte de information vaut action
Va vers affichage
[/php]

A quoi sert le verbe Temporiser ?
avatar
Site Admin
Messages : 1036
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Bogue avec le verbe temporiser

le Fri 28 Dec - 14:14

Le verbe Temporiser n'est pas sensé mettre le programme en pause, en attendant qu'une touche soit enfoncée ...

et que la souris bouge ...
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Bogue avec le verbe temporiser

le Fri 28 Dec - 15:15
C'est donc ça que j'oubliais...

Mais si on ne traite pas l'évènement, pourrait-on le désactiver ?

Car, dans mon exemple précédent, si on désactivait les mouvements de la souris, le verbe Temporiser serait encore plus efficace, non ?

Et comment sa fonctionne avec l'IHM ?

[php]
globale
// Fenêtre principale
Fenêtre_principale :: formulaire, titre vaut "Editeur de cartes", hauteur vaut 800, largeur vaut 1400

// Fenêtre nouveau quadrillage
Fenêtre_nouveau_quadrillage :: formulaire, hauteur vaut 140, largeur vaut 300, titre vaut "Nouveau quadrillage", visible vaut "non", x vaut 450, y vaut 255
txt_Fnq1 :: étiquette, texte vaut "Nombre de cases en largeur :", x vaut 10, y vaut 12
txt_Fnq2 :: étiquette, texte vaut "Nombre de cases en hauteur :", x vaut 10, y vaut 32
txt_Fnq3 :: étiquette, texte vaut "Largeur des cases :", x vaut 10, y vaut 52
txt_Fnq4 :: étiquette, texte vaut "Hauteur des cases :", x vaut 10, y vaut 72
choix_case_largeur :: champ, x vaut 200, y vaut 10, taille vaut 3
choix_case_hauteur :: champ, x vaut 200, y vaut 30, taille vaut 3
choix_taille_largeur_case :: champ, x vaut 200, y vaut 50, taille vaut 3
choix_taille_hauteur_case :: champ, x vaut 200, y vaut 70, taille vaut 3
bouton_valider_Fnq :: bouton, texte vaut "Valider", x vaut 70, y vaut 110
bouton_annuler_Fnq :: bouton, texte vaut "Annuler", x vaut 160, y vaut 110

// Menus
menu1 :: menu, texte vaut "Tileset"
menu1s1 :: sousmenu, texte vaut "Nouveau quadrillage"

// Toile
fond :: toile, x vaut 0, y vaut 35, hauteur vaut 740, largeur vaut 1400, couleur vaut "blanc", pointeur vaut "flèche"
xtoile :: xtoile, x vaut 0, y vaut 35
bordure_gauche :: rectangle, x vaut 0, y vaut 0, position vaut 1, hauteur vaut hauteur de fond, largeur vaut 150, plein vaut "oui", couleur vaut "blanc"

Fenêtre_principale :
début
// Construction des fenêtres

Ajoute txt_Fnq1 & txt_Fnq2 & txt_Fnq3 & txt_Fnq4 & choix_case_largeur & choix_case_hauteur & choix_taille_largeur_case & choix_taille_hauteur_case & bouton_valider_Fnq & bouton_annuler_Fnq dans Fenêtre_nouveau_quadrillage
Fais réagir Fenêtre_nouveau_quadrillage à "clic souris" pour Fermer_fenêtre_nouveau_quadrillage
Fais réagir bouton_annuler_Fnq à "clic souris" pour Fermer_fenêtre_nouveau_quadrillage

// Début du programme

Ajoute xtoile dans Fenêtre_principale
visible de Fenêtre_principale vaut "oui"
Ajoute menu1 dans Fenêtre_principale
Ajoute menu1s1 dans menu1
Fais réagir Fenêtre_principale à "clic souris" pour Fermer_fenêtre_principale
Fais réagir menu1s1 à "clic souris" pour Fenêtre_nouveau_quadrillage

Tant que 1 != 2, lis
Temporise
ferme

Fenêtre_nouveau_quadrillage :
début
visible de Fenêtre_nouveau_quadrillage vaut "oui"

Fermer_fenêtre_principale :
*f :: formulaire
début
Efface toile
Termine

Fermer_fenêtre_nouveau_quadrillage :
début
visible de Fenêtre_nouveau_quadrillage vaut "non"
Reviens
[/php]

Le verbe Temporiser permet de maintenir l'affichage de la fenêtre principale, n'est-ce pas ?

Mais est-ce que c'est le verbe Temporiser qui repère ces évènements :

[php]
Fais réagir Fenêtre_nouveau_quadrillage à "clic souris" pour Fermer_fenêtre_nouveau_quadrillage
Fais réagir bouton_annuler_Fnq à "clic souris" pour Fermer_fenêtre_nouveau_quadrillage
[/php]

Où ces évènements sont-ils gérés indépendamment ?

Car dans ce cas, on pourrais également désactiver les mouvements de la souris.

[php]
Tant que 1 != 2, lis
Temporise
ferme
[/php]

Ainsi, ça éviterais que cette boucle soit active en permanence et le programme serait "réellement" en pause.
avatar
Site Admin
Messages : 1036
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Bogue avec le verbe temporiser

le Fri 28 Dec - 15:50
Les mouvements de la souris sont détectés sur la toile.

Le code avec le verbe temporise et la boucle infinie empeche juste ton livre de terminer.

Tu pourrais mettre :
Code:

Tant que 1 != 2, lis
attends 5 secondes
ferme

ou pire :
Code:

Tant que 1 != 2, lis
ferme

La notion d'évènements et l'utilisation du verbe temporiser sont indépendantes.
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Bogue avec le verbe temporiser

le Fri 28 Dec - 16:05
Ainsi, l'intérêt d'ajouter le verbe Temporiser dans cette boucle :

[php]
Tant que 1 != 2, lis
ferme
[/php]

Est bien d'éviter qu'elle ne fasse des tours inutilement, non ?
Ainsi, tant qu'une touche n'est pas enfoncée ou que la souris n'est pas déplacée, la boucle reste figée :

[php]
Tant que 1 != 2, lis
Temporise
ferme
[/php]

Mais justement, si dans notre programme on ne traite pas le déplacement de la souris :
alors si on pouvait dire au verbe Temporiser de ne pas se débloquer dès que la toile repère un mouvement de souris, cela rendrait le verbe Temporiser encore plus efficace et utile, non ?
avatar
Site Admin
Messages : 1036
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Bogue avec le verbe temporiser

le Fri 28 Dec - 16:54
Oui, ce que tu dis est juste.
L'idéal serait d'avoir un verbe "attendre indéfiniment" et ça serait plus simple à comprendre ?
Senior Member
Messages : 585
Date d'inscription : 2012-01-11
Voir le profil de l'utilisateur

RE: Bogue avec le verbe temporiser

le Fri 28 Dec - 17:05
Dans mon idée, ce serait plus :

Temporiser : met le programme en pause sans prendre en compte aucuns évènements.

Attendre souris : met le programme en pause et se débloque lorsqu'un déplacement de la souris est repéré.

Attendre clavier : met le programme en pause et se débloque lorsqu’une touche est enfoncée.

Attendre souris et clavier : met le programme en pause et se débloque lorsqu'un déplacement de la souris est repéré ou lorsqu'une touche est enfoncée.
Contenu sponsorisé

Re: Bogue avec le verbe temporiser

Voir le sujet précédentRevenir en hautVoir le sujet suivant
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum