Rechercher
Résultats par :
Recherche avancée
Mots-clés

vider  caractères  taille  convertir  

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
Junior Member
Messages : 5
Date d'inscription : 2013-10-25
Voir le profil de l'utilisateur

Probleme de rotation d'une ligne

le Sat 14 Dec - 15:01
Bonjour à tous,

je viens vers vous car j'essai de faire tourner une ligne qui est ajouter dans un casier de ligne.

Voici le code
Code:

globale
ecran est une toile, visible vaut "oui", couleur vaut "blanc"
ligne_passe est une ligne, visible vaut "oui", couleur vaut "bleu", x1 vaut 450, y1 vaut 50, x2 vaut 500, y2 vaut 50, taille vaut 10
Liste_ligne est un casier de ligne valant ligne_passe
ligne_casier est un casier de ligne
programme_encours est un drapeau valant vrai
texte1 est un texte

Principale :

début
projette ecran
pour chaque Liste_ligne,lis
projette joker
// Fais réagir joker à "glisser-déposer" pour test
Fais réagir joker à "clic souris" pour crea
ferme
Tant que programme_encours, lis
/*boucle infinie*/
Temporise
texte1 vaut touche
si texte1 est non vide, lis
// texte de affichage vaut texte1
// affiche texte1
si texte1 = "Echap", programme_encours = faux
ferme
Vide touches
Vide texte1
Ferme

crea :

*li est un ligne
début
parcours creation avec #li
reviens

creation :

*li est un ligne

début
visible @ li vaut "oui"
y1 @ li vaut y1 @ li + 100
y2 @ li vaut y2 @ li + 100
angle @ li vaut 0
projette li
ajoute li dans ligne_casier
Fais réagir li à "glisser-déposer" pour changement ligne
Fais réagir li à "début glisser-déposer" pour début changement ligne
Fais réagir li à "clic souris" pour rien ligne
Fais réagir li à "clic droit souris" pour rotation ligne
Reviens

changement ligne :

*li est un ligne
début
transparence @ li vaut 100
Reviens

début changement ligne :

*li est un ligne
début
transparence @ li vaut 50
Reviens

rien ligne :

*li est un ligne
début
// créer uniquement pour faire marcher clic droit souris (rotation) dans les évènements
reviens

rotation ligne :

*li est un ligne
b est un nombre
texte_recu est un texte
début
vide touche
b = 1
tant que b , lis
texte_recu vaut touche
temporise
affiche texte_recu
x2 @ li = sourisx
y2 @ li = sourisy
si texte_recu = "Clique" , b = 0
ferme
Reviens

Pour essayer, cliquez sur la ligne du haut.
Sur la nouvelle ligne en dessous, faire clique droit de la souris et déplacer.
Le problème est que je ne récupère jamais "clique" et que la boucle ne s'arrête plus.:huh::huh:

Cordialement
avatar
Site Admin
Messages : 1029
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Probleme de rotation d'une ligne

le Sat 14 Dec - 17:47
Bonjour rbug,

Regarde l'exemple collision_drag_and_drop.liv :
[php] Fais réagir palet à "début glisser-déposer" pour début changement palet
[/php]


ça devrait correspondre à ce que tu souhaites faire ?
avatar
Site Admin
Messages : 1029
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Probleme de rotation d'une ligne

le Sat 14 Dec - 18:17
oups, ma réponse n'est pas bonne. je regarde ton livre et je reviens vers toi.
avatar
Site Admin
Messages : 1029
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Probleme de rotation d'une ligne

le Sat 14 Dec - 18:42
J'ai contourné le problème :
[php]
globale
ecran est une toile, visible vaut "oui", couleur vaut "blanc"
ligne_passe est une ligne, visible vaut "oui", couleur vaut "bleu", x1 vaut 450, y1 vaut 50, x2 vaut 500, y2 vaut 50, taille vaut 10
Liste_ligne est un casier de ligne valant ligne_passe
ligne_casier est un casier de ligne
programme_encours est un drapeau valant vrai
texte1 est un texte
stop_rotation est un nombre valant vrai

Principale :
début
projette ecran
pour chaque Liste_ligne,lis
projette joker
// Fais réagir joker à "glisser-déposer" pour test
Fais réagir joker à "clic souris" pour crea
ferme
Tant que programme_encours, lis
/*boucle infinie*/
Temporise
texte1 vaut touche
si texte1 est non vide, lis
// texte de affichage vaut texte1
// affiche texte1
si texte1 = "Echap", programme_encours = faux
ferme
Vide touches
Vide texte1
Ferme

crea :
*li est un ligne
début
parcours creation avec #li
reviens

creation :
*li est un ligne
début
visible @ li vaut "oui"
y1 @ li vaut y1 @ li + 100
y2 @ li vaut y2 @ li + 100
angle @ li vaut 0
projette li
ajoute li dans ligne_casier
Fais réagir li à "glisser-déposer" pour changement ligne
Fais réagir li à "début glisser-déposer" pour début changement ligne
Fais réagir li à "clic souris" pour rien ligne
Fais réagir li à "clic droit souris" pour rotation ligne
Reviens

changement ligne :
*li est un ligne
début
transparence @ li vaut 100
Reviens

début changement ligne :
*li est un ligne
début
transparence @ li vaut 50
Reviens

rien ligne :
*li est un ligne
début
stop_rotation vaut faux
// créer uniquement pour faire marcher clic droit souris (rotation) dans les évènements
reviens

rotation ligne :
*li est un ligne
texte_recu est un texte
début
vide touche
stop_rotation vaut vrai
tant que stop_rotation , lis
texte_recu vaut touche
temporise
affiche texte_recu
x2 @ li = sourisx
y2 @ li = sourisy
si texte_recu = "Clique" ,affiche "clique l"
ferme
Reviens
[/php]
Je vais maintenant regarder si c'est un problème ou un comportement normal.
avatar
Site Admin
Messages : 1029
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Probleme de rotation d'une ligne

le Sat 14 Dec - 18:46
Je viens de trouver le problème, tu avais inversé les lignes suivantes :
[php]
temporise
texte_recu vaut touche
[/php]

Voici ton programme corrigé :
[php]
globale
ecran est une toile, visible vaut "oui", couleur vaut "blanc"
ligne_passe est une ligne, visible vaut "oui", couleur vaut "bleu", x1 vaut 450, y1 vaut 50, x2 vaut 500, y2 vaut 50, taille vaut 10
Liste_ligne est un casier de ligne valant ligne_passe
ligne_casier est un casier de ligne
programme_encours est un drapeau valant vrai
texte1 est un texte

Principale :
début
projette ecran
pour chaque Liste_ligne,lis
projette joker
// Fais réagir joker à "glisser-déposer" pour test
Fais réagir joker à "clic souris" pour crea
ferme
Tant que programme_encours, lis
/*boucle infinie*/
Temporise
texte1 vaut touche
si texte1 est non vide, lis
// texte de affichage vaut texte1
// affiche texte1
si texte1 = "Echap", programme_encours = faux
ferme
Vide touches
Vide texte1
Ferme

crea :
*li est un ligne
début
parcours creation avec #li
reviens

creation :
*li est un ligne

début
visible @ li vaut "oui"
y1 @ li vaut y1 @ li + 100
y2 @ li vaut y2 @ li + 100
angle @ li vaut 0
projette li
ajoute li dans ligne_casier
Fais réagir li à "glisser-déposer" pour changement ligne
Fais réagir li à "début glisser-déposer" pour début changement ligne
Fais réagir li à "clic souris" pour rien ligne
Fais réagir li à "clic droit souris" pour rotation ligne
Reviens

changement ligne :
*li est un ligne
début
transparence @ li vaut 100
Reviens

début changement ligne :
*li est un ligne
début
transparence @ li vaut 50
Reviens

rien ligne :
*li est un ligne
début
// créer uniquement pour faire marcher clic droit souris (rotation) dans les évènements
reviens

rotation ligne :
*li est un ligne
b est un nombre
texte_recu est un texte
début
vide touche
b = 1
tant que b , lis
temporise
texte_recu vaut touche
affiche texte_recu
x2 @ li = sourisx
y2 @ li = sourisy
si texte_recu = "Clique" , b = 0
ferme
Reviens
[/php]

Bravo pour ton programme en tout cas.
Junior Member
Messages : 5
Date d'inscription : 2013-10-25
Voir le profil de l'utilisateur

RE: Probleme de rotation d'une ligne

le Sat 14 Dec - 20:45
Merci beaucoup.
Aussi bien pour tes encouragements que pour ta correction.
Je cherche un moyen d'afficher différent styles de lignes. lignes pointillé, lignes en zigzag.
j'ai déjà eu un retour pour le zigzag en megalithe (voir [url=ligne pointillé et zigzag][/url]), mais je ne peux pas le manipuler comme une ligne (x1,y1;
x2,y2).
Avez-vous des solutions (programmation d'un nouveau type, autre langage, etc...) ?.

C'est pour réaliser un programme de création d'exercices de basket pour entraîneur (la préparation).
A la fin il devra être possibles d'ajouter différents personnages et différentes lignes.
Au début uniquement des lignes droites, puis des courbes, puis d'ajouter des flèches aux bouts des droites.
Je ne sais pas encore tous ce qu'il sera possible de faire.
Ensuite j'aimerais créer un sauvegarde et un rechargement (je pense qu'il faut sauvegarder les casiers où seront les objets et les lignes pour les recharger et les ré-afficher sur la toile).

Edit : Le problème persiste même en inversant les lignes. A mon avis il y a collision entre le premier temporise et le second?
avatar
Site Admin
Messages : 1029
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Probleme de rotation d'une ligne

le Tue 17 Dec - 14:20
Ce que tu demandes est assez compliqué et quelque soit le langage que tu vas utiliser, la solution sera compliquée !

Il existe un exemple d'un tel outil créé il y a quelque temps par $imon (Le paint pour Linotte (ppl.liv) mais je l'ai pas encore converti en Linotte 2.0.
Il faut passer en Linotte 1.X pour l'utiliser...

Linotte peut manipuler le format SVG. ça peut être la solution ?
Junior Member
Messages : 5
Date d'inscription : 2013-10-25
Voir le profil de l'utilisateur

RE: Probleme de rotation d'une ligne

le Fri 20 Dec - 1:04
Bonsoir à tous,

j'ai réussi en modifiant un peu et grâce à la nouvelle version du tutoriel de Wam.
Ce n'est pas des plus fonctionnel mais cela fonctionne en insistant un peu sur le clique droit (2 ou 3 fois et ça bouge tout seule).
Code:

globale
fenetre est un formulaire, largeur vaut 900, hauteur vaut 900, titre vaut "Ma première fenêtre"
vue est une xtoile, x vaut 0, y vaut 0, visible vaut "oui"
ecran est une toile, visible vaut "oui", couleur vaut "blanc", largeur vaut 800, hauteur vaut 800
ligne_passe est une ligne, visible vaut "oui", couleur vaut "vert", x1 vaut 500, y1 vaut 50, x2 vaut 450, y2 vaut 50, taille vaut 10
Liste_ligne est un casier de ligne valant ligne_passe
ligne_casier est un casier de ligne
programme_encours est un drapeau valant vrai
texte1 est un texte
b1 est un bouton, couleurfond vaut "bleu france", couleurtexte vaut "noir", texte vaut "Quitter!", touche vaut "echap", visible vaut "oui", x vaut 800, y vaut 850

Principale :

début
Ajoute b1 & vue dans fenetre
Fais réagir b1 à "clic souris" pour fermer_fenêtre
Fais réagir fenetre à "clic souris" pour fermer_fenêtre
pour chaque Liste_ligne,lis
Projette joker
// Fais réagir joker à "glisser-déposer" pour test
Fais réagir joker à "clic souris" pour crea
ferme
// Boucle infinie
Tant que vrai, lis
Temporise
ferme

fermer_fenêtre :

* bout est un bouton
début
// attends 1 seconde
vide ecran
termine
reviens

crea :

*li est un ligne
début
parcours creation avec #li
reviens

creation :

*li est un ligne
début
visible @ li vaut "oui"
y1 @ li vaut y1 @ li + 100
y2 @ li vaut y2 @ li + 100
angle @ li vaut 0
projette li
ajoute li dans ligne_casier
Fais réagir li à "glisser-déposer" pour changement ligne
Fais réagir li à "début glisser-déposer" pour début changement ligne
Fais réagir li à "clic souris" pour rien ligne
Fais réagir li à "clic droit souris" pour rotation ligne
Reviens

changement ligne :

*li est un ligne
début
transparence @ li vaut 100
Reviens

début changement ligne :

*li est un ligne
début
transparence @ li vaut 50
Reviens

rien ligne :

*li est un ligne
début
// créer uniquement pour faire marcher clic droit souris (rotation) dans les évènements
reviens

rotation ligne :

*li est un ligne
b est un nombre valant 1
texte_recu est un texte
début
tant que b , lis
vide touche
temporise
texte_recu = touche
affiche texte_recu
x2 @ li = sourisx
y2 @ li = sourisy
si texte_recu = "Clique" , b = 0
vide touche
ferme
Reviens

AdminCPC, pour le SVG je vais avoir les même problèmes que pour les objets et les mégalithes.
La rotation central n'est pas envisageable dans ce cas car la personne doit cliquer et déplacer la deuxième extrémité (facilité d'utilisation).
Je voudrais juste savoir comment la ligne s'affiche (en code) et si il n'est pas possible de modifier cette fonction pour afficher d'autre type de ligne, voir des extrémités qui changent ?
Je vous remercie de votre soutien.

PS : une image du projet sur lequel je travail : [attachment=153]
avatar
Site Admin
Messages : 1029
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Probleme de rotation d'une ligne

le Fri 20 Dec - 9:37
Super, je vais regarder ça et analyser cette problématique avec le "clique" et proposer une correction si bogue.
avatar
Site Admin
Messages : 1029
Date d'inscription : 2011-11-03
Voir le profil de l'utilisateur

RE: Probleme de rotation d'une ligne

le Fri 20 Dec - 18:18
En centralisation la gestion du clique sur la toile en un seul endroit, je trouve que c'est plus simple et ça semble marcher :

[php]
globale
fenetre est un formulaire, largeur vaut 900, hauteur vaut 900, titre vaut "Ma première fenêtre"
vue est une xtoile, x vaut 0, y vaut 0, visible vaut "oui"
ecran est une toile, visible vaut "oui", couleur vaut "blanc", largeur vaut 800, hauteur vaut 800
ligne_passe est une ligne, visible vaut "oui", couleur vaut "vert", x1 vaut 500, y1 vaut 50, x2 vaut 450, y2 vaut 50, taille vaut 10
Liste_ligne est un casier de ligne valant ligne_passe
ligne_casier est un casier de ligne
programme_encours est un drapeau valant vrai
texte1 est un texte
b1 est un bouton, couleurfond vaut "bleu france", couleurtexte vaut "noir", texte vaut "Quitter!", touche vaut "echap", visible vaut "oui", x vaut 800, y vaut 850
// On utilise ce drapeau pour gérer le clique sur la toile
traitement est un drapeau valant faux

Principale :
début
Ajoute b1 & vue dans fenetre
Fais réagir b1 à "clic souris" pour fermer_fenêtre
Fais réagir fenetre à "clic souris" pour fermer_fenêtre
pour chaque Liste_ligne,lis
Projette joker
// Fais réagir joker à "glisser-déposer" pour test
Fais réagir joker à "clic souris" pour crea
ferme
// Boucle infinie et gestion du clique sur la toile :
Tant que vrai, lis
Temporise
si touche = "Clique" , traitement vaut faux
ferme

fermer_fenêtre :
//* bout est un bouton
début
// attends 1 seconde
vide ecran
termine
reviens

crea :
*li est un ligne
début
parcours creation avec #li
reviens

creation :
*li est un ligne
début
visible @ li vaut "oui"
y1 @ li vaut y1 @ li + 100
y2 @ li vaut y2 @ li + 100
angle @ li vaut 0
projette li
ajoute li dans ligne_casier
Fais réagir li à "glisser-déposer" pour changement ligne
Fais réagir li à "début glisser-déposer" pour début changement ligne
Fais réagir li à "clic souris" pour rien ligne
Fais réagir li à "clic droit souris" pour rotation ligne
Reviens

changement ligne :
*li est un ligne
début
transparence @ li vaut 100
Reviens

début changement ligne :
*li est un ligne
début
transparence @ li vaut 50
Reviens

rien ligne :
*li est un ligne
début
// créer uniquement pour faire marcher clic droit souris (rotation) dans les évènements
reviens

rotation ligne :
*li est un ligne
b est un nombre valant 1
texte_recu est un texte
début
traitement vaut vrai
tant que traitement , lis
temporise
x2 @ li = sourisx
y2 @ li = sourisy
ferme
Reviens
[/php]
Contenu sponsorisé

Re: Probleme de rotation d'une ligne

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