Forum Liberty Basic France
• Index
La tortue ? Quoiqu'est-ce ? Une incursion dans le domaine de la tortue, une autre manière de faire du graphisme qu'avec l'habituel repère orthonormé et son acolyte le cercle trigonométrique.
On dessine en donnant des ordres comme "avance de tant de pixels", "tourne à gauche", "tourne à droite", "tourne de tant de degrés". Oui, on parle bien de degrés, finies les conversions à faire en radians pour afficher une oblique. En plus, la notation des angles est bien plus naturelle, avec les degrés que nous connaissons depuis toujours, et qui ont la bonne idée d'être disposés comme les graduations du compas des navigateurs : le 0° s'appelle Nord, le 90° est l'Est, 180 le Sud, et 270... eh bien, l'Ouest
Deux petits bémols :
1. à chaque fois qu'on envoie une instruction, je ne serais pas surpris qu'il y ait une petite erreur, probablement infinitésimale, mais qui au final devrait se voir. Je n'ai pas testé trois milions de "avance de 10 pixels" et "tourne de 1°" pour voir si on tourne vraiment en rond.
2. le système garde en mémoire la dernière position et la dernière orientation, si on veut une droite orientée à 30° puis une autre orientée à 70°, on ne peut pas lancer un "turn 30" puis un "turn 70", la deuxième droite serait dessinée à 30+70=100° : il faut remettre à zéro l'orientation en retirant le même angle avec un signe opposé, ou tenir compte de l'orientation de la première droite pour calculer celle de la seconde.
Un petit exemple pour mieux comprendre :
Code VB :
Et voilà l'horloge :
Code VB :
On dessine en donnant des ordres comme "avance de tant de pixels", "tourne à gauche", "tourne à droite", "tourne de tant de degrés". Oui, on parle bien de degrés, finies les conversions à faire en radians pour afficher une oblique. En plus, la notation des angles est bien plus naturelle, avec les degrés que nous connaissons depuis toujours, et qui ont la bonne idée d'être disposés comme les graduations du compas des navigateurs : le 0° s'appelle Nord, le 90° est l'Est, 180 le Sud, et 270... eh bien, l'Ouest
Deux petits bémols :
1. à chaque fois qu'on envoie une instruction, je ne serais pas surpris qu'il y ait une petite erreur, probablement infinitésimale, mais qui au final devrait se voir. Je n'ai pas testé trois milions de "avance de 10 pixels" et "tourne de 1°" pour voir si on tourne vraiment en rond.
2. le système garde en mémoire la dernière position et la dernière orientation, si on veut une droite orientée à 30° puis une autre orientée à 70°, on ne peut pas lancer un "turn 30" puis un "turn 70", la deuxième droite serait dessinée à 30+70=100° : il faut remettre à zéro l'orientation en retirant le même angle avec un signe opposé, ou tenir compte de l'orientation de la première droite pour calculer celle de la seconde.
Un petit exemple pour mieux comprendre :
Code VB :
nomainwin WindowHeight=600 WindowWidth=800 graphicbox #h.cad, 180, 20, 401, 401 open "Dessin avec la tortue" for window as #h #h, "trapclose [quitter]" #h.cad, "down ; fill darkgray" 'couleur de fond du graphicbox #h.cad, "color yellow ; size 1" 'couleur et taille du crayon #h.cad, "home" 'place la tortue au milieu du graphique (fenêtre ou graphicbox) #h.cad, "turn 30"'tourne de 30 degrés à droite #h.cad, "go 75" 'avance de 75 pixels #h.cad, "turn 70"'tourne de 70 degrés à droite #h.cad, "go 75" 'avance de 75 pixels wait [quitter] close #h end
Et voilà l'horloge :
Code VB :
'horloge nomainwin WindowHeight=600 WindowWidth=800 graphicbox #h.cad, 180, 20, 401, 401 open "Horloge" for window as #h #h, "trapclose [quitter]" gosub [initialisation_horloge] 'actualisation de l'heure [top] ancienh$=h$ gosub [donne_heure] if h$<>ancienh$ then gosub [affiche_heure] 'affiche l'heure seulement lorsqu'elle a changé scan'évite que la boucle [top] tourne indéfiniment 'ce qui permet la détection d'évènement utilisateur '(frappes clavier, clics souris...) goto [top] wait [quitter] close #h end [initialisation_horloge] 'dessin des graduations des minutes #h.cad, "down ; fill darkgray" #h.cad, "color yellow ; size 1" mn=360/60 for a=1 to 60 #h.cad, "home" #h.cad, "turn ";mn #h.cad, "go 150" next 'masquage des parties inutiles des graduations #h.cad, "home" #h.cad, "backcolor darkgray ; color darkgray ; circlefilled 140" 'dessin des graduations des heures #h.cad, "color yellow ; size 3" hr=360/12 for a=1 to 12 #h.cad, "home" #h.cad, "turn ";hr #h.cad, "go 150" next 'masquage des parties inutiles des graduations #h.cad, "home" #h.cad, "backcolor darkgray ; color darkgray ; circlefilled 120" 'dessin des aiguilles gosub [donne_heure] gosub [affiche_heure] return [donne_heure] h$=left$(time$(),5) 'on ne garder qu'heures et minutes heure=val(left$(h$,2)) minute=val(right$(h$,2)) 'déterminer ante- ou post-meridiem if heure>12 then heure=heure-12 indic$="PM" else indic$="AM" end if return [affiche_heure] 'on efface l'heure précédente #h.cad, "home" #h.cad, "backcolor darkgray ; color darkgray ; circlefilled 120" 'on affiche la nouvelle heure 'heures degres=heure*hr+minute*0.5 #h.cad, "color yellow" #h.cad, "home" #h.cad, "turn ";degres #h.cad, "go 80" #h.cad, "turn ";degres*-1 ' 'minutes degres=minute*mn #h.cad, "color yellow" #h.cad, "home" #h.cad, "turn ";degres #h.cad, "go 100" #h.cad, "turn ";degres*-1 'avant ou après midi #h.cad, "stringwidth? indic$ lar" #h.cad, "place ";200-lar/2;" ";230 #h.cad, "\"+indic$ return
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
Pas mal.
Une 'trotteuse pour les secondes serait bienvenue
On peut se demander pourquoi on a pas fait des horloges 24 heures par tours (pour les tunnels, caves et autres catacombes...)
Hey, ton post devrait être dans "général", puisque c'est fonctionnel.
"Débutant" c'est pour les questions.
Purée y a pas moyen de renommer les catégories,grrr...

On peut se demander pourquoi on a pas fait des horloges 24 heures par tours (pour les tunnels, caves et autres catacombes...)
Hey, ton post devrait être dans "général", puisque c'est fonctionnel.
"Débutant" c'est pour les questions.
Purée y a pas moyen de renommer les catégories,grrr...
____________________
Roro
Roro
Merci pour le "pas mal", et "non" pour le changement de catégorie : il est volontairement placé dans "débutant", pour l'utilisation de la tortue. a+
____________________
Just BASIC v2.0 :
utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc
Just BASIC v2.0 :
• Index
1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie