Properties
Category
French
Similar Topics
Statistics
Comments
30
Participants
3
Subscribers
4
Votes
1
Views
1532
Share
Answered
Bonjour à tous.
Je débute en scripting sur Geogebra et, en m'inspirant de ce qu'on trouve sur le sujet Script, je voulais créer, via un curseur entier n, la réalisation de n point placés aléatoirement.
J'ai donc placé, via le menu "Propriétés", le script
for(var i =0;i<n;i++) {
ggbApplet.evalCommand("A_"+i+"=(random()*10,random()*10)"); }
dans l'onglet Actualisation
Malheureusement, rien ne se produit et je ne comprends pas vraiment pourquoi.
Pourriez-vous, s'il vous plait, m'éclairer à ce sujet?
- GeoGebra
- Help
- Partners
-
Contact us
- Feedback & Questions
- This email address is being protected from spambots. You need JavaScript enabled to view it.
- +43 677 6137 2693
© 2023 International GeoGebra Institute
Salut,
et tu n'as pas eu de messages d'erreur ?
as-tu vérifié que ton script était bien classé en Javascript et non en GGbscript
les variables ne sont globales, donc ton script doit aller lire la valeur de ton curseur
essaye avec
Merci de cette réponse rapide.
J'ai bien déclaré le script en JS.
Je pensais bien qu'il s'agissait d'obtenir la valeur associée à l'objet curseur.
Je vais tester ça.
J'en profite pour une autre question annexe car je ne trouve pas la réponse sur les wiki.
Est-il possible via script de modifier les propriétés d'un objet Geogebra?
comme je crois comprendre que tu as envie de faire mumuse avec JS
https://wiki.geogebra.org/f...
mais il y a aussi les GGbScript ;-)
Merci encore.
J'essaie de concilier les deux au mieux en fait, sans devoir réinventer la roue.
Mais c'est tellement riche et vaste que je ne sais trop où chercher alors j'expérimente et, dès que je suis vraiment bloqué, je pose une question.
Maintenant, depuis votre première réponse, je sais qu'il faut définir des variables globales associées aux objets numériques pour interagir avec JS, ça ouvre déjà un sacré champ de possibles! Merci encore donc.
Par contre, je n'ai pas trouvé, via les GgbScripts, comment modifier l'état de l'objet, d'où ma volonté de "faire mumuse avec JS" ^^
Bonjour
Dans un GeoGebraScript, on écrit des commandes GeoGebra (comme on les écrirait dans la saisie)
"comment modifier l'état de l'objet"
Regarde toutes les commandes qui commencent par "Soit"
Voici la première (voir toutes les autres dans l'encadré à droite de la page)
https://wiki.geogebra.org/f...
Bien.
Tout d'abord, merci, car avec vos explications claires, j'ai réussi à concevoir un script correspondant à l'affichage de points aux coordonnées aléatoires, avec nommage par indexation et affichage de l'étiquette.
Une question cependant bien que ce script fonctionne:
Le logiciel n'a pas indentifié la commande mise en commentaire, autrement dit la version française de la commande.
Est-ce un bug?
Le script in extenso:
var n = ggbApplet.getValue('n');
for (var i = 1; i <= n; i++) {
ggbApplet.evalCommand("A_{" + i + "}=(random()*10,random()*10)");
ggbApplet.evalCommandGetLabels("A_{" + i + "}");
// ggbApplet.evalCommand("SoitOptionEtiquette(A_{" + i + "}, 0)");
ggbApplet.evalCommand("SetLabelMode(A_{" + i + "}, 0)");
}
oui oui l'anglais prime :-(
mais tu as quand même le loisir de scripter en français en général
SAUF ! pour la commande Exécute
https://wiki.geogebra.org/f...
Chers experts otez-moi d'un doute.
Bien évidemment, si j'opte pour l'usage du JS, c'est essentiellement parce que je pense qu'il n'existe pas de structure de boucle en GgbScript.
Par contre, même pour une simple affectation de variable, je dois repasser par ggbApplet.evalCommand()?
Cher toi ;-)
effectivement il n'y a pas de boucle (d'or) classique for... to... step ... dans GeoGebra, MAIS, la commande Séquence() fait bien souvent le taf !
evalCommand() est pour la création d'objet
pour une affectation de valeur à un objet, dans la majorité des cas, la commande setValue(nom, valeur) est bien adaptée
Merci, ça devrait me faire gagner un temps précieux pour expérimenter plus avant.
Bon, finalement je suis de retour plus vite que prévu, je tourne en rond en cherchant à corriger ce scrit, qui m'envoie un message d'erreur très long, et que je n'arrive ni à interpréter, ni à Googler efficacement. Voilà le code:
ggbApplet.evalCommand("a = RandomBetween( 1, 9)*(-1)^RandomBetween(1, 2)");
ggbApplet.evalCommand("b = RandomBetween( 2, 9)*(-1)^RandomBetween(1, 2)");
ggbApplet.evalCommand("c = RandomBetween( 1, 9)*(-1)^RandomBetween(1, 2)");
ggbApplet.evalCommand("d = RandomBetween( 2, 9)*(-1)^RandomBetween(1, 2)");
if (b<0) {
ggbApplet.setValue(b_1, -b);
ggbApplet.setValue(a_1, -a);
} else {
ggbApplet.setValue(b_1, b);
ggbApplet.setValue(a_1, a);
}
if (d<0) {
ggbApplet.setValue(d_1, -d);
ggbApplet.setValue(c_1, -c);
} else {
ggbApplet.setValue(d_1, d);
ggbApplet.setValue(c_1, c);
}
Je voulais mettre intialement tout le code en gras et on ne peux pas éditer...
Hello
Je ne suis pas très compétent en JS, car je n'ai jamais eu besoin de l'utiliser, vu que j'ai toujours pu faire ce que je voulais faire par GeoGebraScript
Mais il me semble (Noel confirmera) que la bonne syntaxe est :
ggbApplet.evalCommand("SetValue (a_1,-a)")
et puis JS connaît-il ta variable a_1 ?
Non Jean-Luc c'est bon ggbApplet.setValue() mais le 1er paramètre est une str !! donc sans aller fouiller je dirais à Mr Martin
qu'il écrive au moins ggbApplet.setValue('a_1', -a);
mais pourquoi se (nous) faire ch... avec JS pour si peu
@Mr Martin
Pour ton premier fichier, ça dépend de ce que tu veux faire, mais quand tu bouges le curseur, les 50 points restent dans le graphique...
Si tu veux que quand le curseur soit à une valeur (par exemple 16) il n'y ait que 16 points à l'écran
pour cela, il n'y a même pas besoin de script..!
Comments have been locked on this page!