Aller en cercles
GW-BASIC
(PC-BASIC)
Initiation au langage Basic
Est-ce que toutes ces discussions sur SCREEN et COLOR, vous font tourner en rond ?
Si oui, vous n'avez encore rien vu !
Par exemple, vous pouvez créer un cercle ou une ellipse complet(e), ou un cercle ou une ellipse partiel(le) à l'aide d'une seule instruction, CIRCLE.
Voici la syntaxe de CERCLE :
CIRCLE(xcenter, ycenter), radius[,[color][,[start],[end][,aspect]]]
xcenter et ycenter sont les coordonnées x et y du centre de
l'ellipse, et radius est le rayon (mesuré le long de l'axe principal) de
l'ellipse. Les quantités xcenter et ycenter peuvent être des expressions. Les
attributs de centre peuvent utiliser des coordonnées absolues ou relatives.
color spécifie la couleur de
l'ellipse. Sa valeur dépend du mode d'écran en cours. Voir les instructions
SCREEN, COLOR,
PALETTE pour plus d'informations sur l'utilisation des
couleurs dans différents modes d'écran.
Les paramètres d'angle de début et de
fin sont des arguments en radian entre -2π et 2π qui spécifient où le dessin de
l'ellipse doit commencer et se terminer. Si début ou fin est négatif, l'ellipse
est reliée au point central par une ligne et les angles sont traités comme s'ils
étaient positifs (notez que cela est différent de l'ajout de 2π).
aspect décrit le rapport du rayon x
au rayon y (x:y). Le rapport d'aspect par défaut dépend du mode d'écran, mais
donne un cercle visuel dans l'un ou l'autre des modes graphiques, en supposant
un rapport d'aspect d'écran standard de 4:3. Si le rapport d'aspect est
inférieur à 1, alors le rayon est donné en x-pixels.
S'il est supérieur à 1, le rayon est donné en pixels y. Dans de nombreux cas, un rapport d'aspect de 1 donne de meilleures ellipses en mode de résolution moyenne. Cela permet également de dessiner l'ellipse plus rapidement. L'angle de départ peut être inférieur à l'angle de fin.
Voir CIRCLE, LINE, WINDOW pour plus de détails.
Pour dessiner un cercle, vous n'avez besoin que du centre (x,y) et du rayon (radius), qui est la distance du centre en points.
Tout d'abord, comptez sur l'axe x, puis vers le bas sur l'axe y pour localiser le centre souhaité. Alors. une fois que vous avez spécifié ce point, indiquez le rayon du cercle. Le plus grand rayon qui tient sur l'écran dépend de la résolution, si le rayon est supérieur à l'écran, le cercle "natte" contre les bords de l'écran.
Tapez et exécutez ce programme:
5 CLS
10 SCREEN 1:PRINT "SCREEN 1"
20 GOSUB 1000
30 SCREEN 2:PRINT "SCREEN 2"
40 GOSUB 1000
50 SCREEN 7:PRINT "SCREEN 7"
60 GOSUB 1000
70 SCREEN 8:PRINT "SCREEN 8"
80 GOSUB 1000
90 SCREEN 9:PRINT "SCREEN 9"
100 GOSUB 1000
110 END
1000
CIRCLE(100,100), 50
1010 A$=INKEY$:IF A$ = ""
THEN 1010
1020 RETURN
Programme faites-le vous même
Faites un programme pour générez une cible. Vous pouvez faire celui-ci de deux manières:
Ajoutez une ligne de programme distincte pour chaque cercle concentrique, mais utilisez un centre commun (coordonnées x,y).
Utilisez une boucle FOR ... NEXT avec un STEP 10 pour que l'ordinateur fasse le travail pour vous.
10 SCREEN 1
20 CLS
30 FOR
RAYON = 1 TO 100 STEP 10
40 CIRCLE (128, 86),RAYON
50 NEXT RAYON
60
A$=INKEY$:IF A$=""THEN 60
Programme faites-le vous même
Avez-vous encore le programme de la maison que vous avez construite ?
Comment comptez-vous entrer dans la maison sans poignée de porte ? Utilisez CERCLE pour mettre une poignée de porte sur la porte d'entrée. Votre feuille de travail sur l'écran graphique est utile pour localiser le point exact dont vous avez besoin.
Remarque : Si vous utilisez une résolution moyenne ou basse, un cercle suffisamment petit pour servir de poignée de porte n'a pas beaucoup de détails. Exécutez le programme en SCREEN 9 pour plus de détails.
Colorier le cercle
Après avoir décidé du rayon du cercle, choisissez sa couleur.
10 SCREEN 8
20 CLS
30 CIRCLE (128,86) ,50
Maintenant, pour un peu de variété, changez la couleur en cyan (couleur 3) :
30 CIRCLE (128,86) ,50,3
C'est aussi simple que ça! Vous pouvez changer la
couleur du cercle en n'importe laquelle des couleurs disponibles.
Mettre la pression
Avez-vous déjà pris un Hula-Hoop, un pneu de vélo ou une roue de buggy et l'avez-vous pressé à deux mains pour former une ellipse ?
De même, vous pouvez changer le cercle sur votre écran en une ellipse en utilisant l'option rapport hauteur/largeur (aspect).
La largeur de l'ellipse est égale au rayon. La hauteur est déterminée par aspect. Si aspect vaut 1, l'ordinateur dessine un cercle. Si aspect est supérieur à 1, il dessine une ellipse plus haute que large. Si aspect est inférieur à 1, il dessine une ellipse plus large que haute.
Par exemple, ce programme dessine un cercle :
10 SCREEN 8
20 CLS
30 CIRCLE (128,86) ,50
Si toutefois, vous modifiez aspect comme indiqué ici, le programme dessine une ellipse verticale :
30 CIRCLE (128,86),50,,,,8
Si vous modifiez aspect montré ici, il dessine une ellipse horizontale :
30 CIRCLE (128,86),50,,,,.1
30 CIRCLE (128,86),50,,,,1/8
Maintenant dessinons saturne:
10 SCREEN 8
20 CLS
30 CIRCLE (128,86) ,50
40
CIRCLE (128,86),50,,,,8
Du début à la fin
Supposons que vous vouliez dessiner seulement une partie d'une ellipse (un arc). Pour ce faire, vous devez lister le centre de l'ellipse (x,y), son rayon (r), et son rapport hauteur/largeur (aspect).
Si vous le souhaitez, vous pouvez faire précéder aspect de la couleur (color).
Remarque : Pour tracer un arc , vous devez spécifier aspect. Pour un arc normal, utilisez aspect 1.
À partir des informations ci-dessus, l'ordinateur connaît l'emplacement, la largeur et la hauteur de l'ellipse. Maintenant, vous pouvez lui dire quelle portion de l'ellipse dessiner.
Pour ce faire, spécifiez le début de l'arc (start, 0 à 1) et la fin (end, 0 à 1) de l'arc, en suivant le tableau ci-dessous. Gardez à l'esprit que l'ordinateur dessine toujours dans le sens des aiguilles d'une montre.
CIRCLE(xcenter, ycenter), radius[,[color][,[start],[end][,aspect]]]
Les paramètres d'angle de début et de fin sont des arguments en radian entre -2π et 2π qui spécifient où le dessin de l'ellipse doit commencer et se terminer. Si début ou fin est négatif, l'ellipse est reliée au point central par une ligne et les angles sont traités comme s'ils étaient positifs (notez que cela est différent de l'ajout de 2π).
Voici un cercle avec les angles en degrés et en radians:
0 degré = 0 radians et 90 degré = π/2 (π/2 = 1,57)
pour convertir les degrés en radians
rad = deg * π/180 soit pour 90° rad = 90 * π/180 = 1.57 rad
30 CIRCLE (128,86),30,1,0,1.57,1
Programme faites-le vous même
La nuit est-elle tombée sur la maison que vous avez bâtie ? Si c'est le cas, vous voudrez peut-être faire la lumière sur le sujet en mettant un croissant de lune dans le coin.
Cela nécessite deux arcs qui se croisent et quelques essais et erreurs de votre part.
10 CIRCLE
(200,40),30,15,1.57,4.71,2
20 CIRCLE
(200,40),30,15,1.57,4.71,1
Modifiez les deux lignes ci-dessous et insérez-les dans le programme maison
Programme maison
10 SCREEN 7
20 CLS
30 LINE
(72,168)-(200,72),10,B 'FRAME
40 LINE (72,72)-(136,36),10 'ROOF
45 LINE
(200,72)-(136,36),10 'ROOF
50 LINE (120,168)-(152,100),10,B 'DOOR
55 LINE
(152,60)-(168,36),10,BF 'CHIMNEY
60 LINE (165,128)-(191,100),10,B 'WINDOW
65 LINE (178,128)-(178,100),10 'WINDOW PART
70 LINE (165,114)-(191,114),10
'WINDOW PART
75 LINE (85,128)-(111,100),10,B 'WINDOW
80 LINE
(85,114)-(111,114),10 'WINDOW PART
85 LINE (98,100)-(98,128),10 'WINDOW PART
90 GOTO 90
Programme faites-le vous même
Peut-être qu'il fait froid, ainsi que sombre, autour de votre maison. Si c'est le cas, allumez un feu dans la cheminée et montrez la fumée sortant de la cheminée. (Utilisez CIRCLE pour générer une spirale qui simule la fumée.)
Autre
Exemple 1:
1 ' Cela dessinera 17 ellipses 10 CLS 20 SCREEN 1 30 FOR R=160 TO 0 STEP-10 40 CIRCLE (160,100),R,,,,5/18 50 NEXT
Exemple 2:
10 'Cela dessinera 5 sphères 20 GOTO 160 50 IF VERT GOTO 100 60 CIRCLE (X,Y),R,C,,,.07 70 FOR I = 1 TO 5 80 CIRCLE (X,Y),R,C,,,I*.2:NEXT I 90 IF VERT THEN RETURN 100 CIRCLE (X,Y),R,C,,,1.3 110 CIRCLE (X,Y),R,C,,,1.9 120 CIRCLE (X,Y),R,C,,,3.6 130 CIRCLE (X,Y),R,C,,,9.8 140 IF VERT GOTO 60 150 RETURN 160 CLS: SCREEN 1: COLOR 0,1: KEY OFF: VERT=0 170 X=160: Y=100: C=1: R=50: GOSUB 50 180 X=30: Y=30: C=2: R=30: GOSUB 50 190 X=30: Y=169: GOSUB 50 200 X=289: Y=30: GOSUB 50 210 X=289: Y=169: GOSUB 50 220 LINE (30,30)-(289,169),1 230 LINE (30,169)-(289,30),1 240 LINE (30,169)-(289,30),1,B 250 Z$=INKEY$: IF Z$="" THEN 250