Quelques propositions

Xcas devel: interface utilisateur/user interface

Modérateur : xcasadmin

parisse
Messages : 5082
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Quelques propositions

Message par parisse » sam. janv. 30, 2010 7:07 am

Je vais essayer de rajouter un flush pour forcer le refresh de l'affichage. Sinon avec getKey(-1) c'est normal que la mémoire augmente, car comme il n'y a pas de pause, à chaque itération de la boucle, un nouveau polygone est tracé (et même s'il est identique au précédent, ça prend de la place).

cdeval
Messages : 172
Inscription : mer. juin 03, 2009 4:28 pm

Re: Quelques propositions

Message par cdeval » mar. févr. 02, 2010 8:03 pm

Bonjour Bernard,

le flush marche bien. Mon polygone s'affiche après chaque appui sur une touche.
J'ai encore quelques soucis avec la boite de dialogue getKey :
je pense que la position d'affichage est un peu aléatoire ce qui fait que parfois elle n'apparaît pas dans la fenêtre xcas. Malgré tout elle prend les entrées clavier.
Quand elle est visible, je n'ai pas l'encadrement classique d'une fenêtre et c'est comme si elle était transparente, si je clic dessus, je tombe sur ce qu'il y a dessous. Pas moyen, donc, de la redimensionner pour voir mes phrase en entier.
Ci dessous un exemple où le bas de cette fenêtre est visible au dessus du bouton "sauve".
screenshot_089.png
screenshot_089.png (129.94 Kio) Consulté 2882 fois
Une autre curiosité (mais je suis spécialiste pour tomber sur des bugs incensés) :
dans le texte de mon programme :

Code : Tout sélectionner

polygone_tortue(n,r):={
// n représente le nombre de cotés du polygone régulier
// r le rayon du cercle circonscrit
local k;
efface;
repete n, avance(2*r*sin(180/n)), tourne_gauche(360/n);
}
:;

approx_pi():={
local n,c,r,p;
n:=5;
r:=100;
for(;;){
  c:=getKey("q : stopper le programme","+ : augmente le nombre de côtés de 1","- : diminue le nombre de côtés de 1","* : multiplie le nombre de côtés par 2","/ : divise le nombre de côtés de 2");
  switch(c){
  case 43:{n++;} // +
  case 45:{n--;} // -
  case 42:{n:=n*2;} // *
  case 47:{n:=floor(n/2);} // /
  };
  if (c==113) break;
  polygone_tortue(n,r);afficher("Polygone à "&n&" côtés, longueur à pi="&evalf(pi-n*sin(180/n)));
}
}:;
j'ai la ligne :

Code : Tout sélectionner

afficher("Polygone à "&n&" côtés, longueur à pi="&evalf(pi-n*sin(180/n)));
où je n'ai jamais écrit le mot "longueur". Mais quand j'écris "distance", que je sauvegarde et que je rouvre le fichier, je me retrouve avec le mot "longueur" :shock:
A+

parisse
Messages : 5082
Inscription : mar. déc. 20, 2005 4:02 pm
Contact :

Re: Quelques propositions

Message par parisse » mar. févr. 02, 2010 8:45 pm

oui, parfois la fenetre getKey n'a pas de cadre, et je ne sais pas du tout pourquoi (mais la plupart du temps elle a bien son cadre). Il est possible que j'utilise les instructions d'ouverture à un moment où il ne faudrait pas le faire, mais pour l'instant je ne sais pas faire autrement.
Pour longueur, il est victime de la traduction, distance etant le mot-clef correspondant en anglais. Il faudrait lors des sauvegardes/chargement detecter quand on est dans une chaine de caractères et suspendre la traduction, mais ça n'est pas évident. Les mots-clefs traduits sont dans doc/fr/keywords, il suffit de les éviter pour le moment:-)

Répondre