Programmes de type art ou dessin

GW-Basic, utilisé par PC-Basic

Programme avec Graphique et Texte

PC-BASIC

Voici une petite sélection de programmes d'art ou de dessin utilisant la mise à l'échelle, la rotation, ou les deux.

ART1.BAS affiche des lignes connectées qui parcourent l'écran ; leur longueur est contrôlée dynamiquement : appuyer sur la touche + augmente leur taille et sur la touche - la réduit.

DRWRND.BAS est quasiment identique à ART1.BAS, sauf qu'au lieu de lignes, vous contrôlez la taille d'un cadre clignotant et rapide.

ETCH.BAS vous permet de vous amuser : vous pouvez dessiner des motifs de cercles et de carrés, de tailles et de couleurs variées. Étudiez le code autour des instructions INKEY$ pour découvrir la multitude d'options.

COLMAK.BAS affiche un court motif d'instruction DRAW réparti sur l'écran.

Si la palette de couleurs limitée ne vous convient pas, avec un peu de créativité, ce programme vous offre une solution de contournement (assez légère) pour une base de couleurs étendue. (Autre solution de contournement, que nous découvrirons plus tard : utiliser l'instruction PALETTE.)

Si vous êtes de mauvaise humeur, exécutez DMOLTION.BAS : cela vous permettra de détruire tout ce qui se trouve à l'écran en déplaçant un petit bloc.

TEST.BAS permet de tester la mise à l'échelle et la rotation d'une image.

L'instruction DRAW est saisie sous forme de chaîne depuis une entrée (INPUT) pendant l'exécution ; vous pouvez ensuite déplacer l'image sur l'écran à l'aide du pavé numérique, l'agrandir avec la touche +, la réduire avec la touche - et la faire pivoter dans le sens horaire et antihoraire avec les touches Y et T, respectivement.

La commande PCOPY de la ligne 260, qui copie d'une page active à une autre, réduit le scintillement lors du déplacement de l'objet.

Bien que peu utiles, de nombreux autres programmes de ce type, de type artistique ou de dessin, pourraient être facilement créés. Votre seule limite est votre imagination.

ART1.BAS

0 KEY OFF:VIEW PRINT:SCREEN 9:COLOR 15,0:CLS:PRINT:PRINT:PRINT::AS=4
2 PRINT"AJOUTEZ LA TAILLE DES LIGNES EN APPUYANT SUR + OR -"
3 PRINT"CHANGER LA COULEUR DE FOND EN APPUYANT SUR B"
4 PRINT"EFFACER L'ECRAN EN APPUYANT SUR C"
5 FOR PAUSE=1 TO 15000:NEXT PAUSE
6 X=INT(1+640*RND(1))
7 Y=INT(1+350*RND(1))
10 KEY OFF:SCREEN 9:COLOR 15,0:CLS
15 RANDOMIZE TIMER
30 T=INT(1+AS*RND(1))
35 V=INT(1+AS*RNO(1))
40 C=INT(H-AS*RND(1))
41 B=INT(1+2*RND(1))
42 N=INT(1+2*RND(1))
43 IF B=2 THEN V=-(V)
44 IF N=2 THEN C=-(C)
45 R=15
100 FOR A= 1 TO T
101 I$=INKEY$:DRAW"S="+VARPTR$(AS)
102 IF I$="+" THEN AS=AS+1
103 IF AS=>250 THEN AS=250
104 IF I$="-" THEN AS=AS-1
105 IF AS=<1 THEN AS=1
106 IF I$="C" OR I$="c" THEN GOTO 150
107 IF I$="B" OR I$="b" THEN FG=FG+1
108 IF FG=16 THEN FG=1
109 COLOR ,FG
120 LINE -(X,Y),R
125 X=X+V:Y=Y+C
126 IF X=>650 THEN X=650
127 IF X=<-2 THEN X=-2
128 IF Y=<-2 THEN Y=-2
129 IF Y=>350 THEN Y=350
130 NEXT A
140 GOTO 30
150 FOR AD=1 TO 55:PRINT:NEXT AD
155 GOTO 6

DRWRND.BAS

0 KEY OFF:SCREEN 9:COLOR 15,0:CLS:RANDOMIZE TIMER:AS=4
1 PRINT:PRINT
2 PRINT"AJUSTEZ LA TAILLE DE LA BOITE EN APPUYANT + OR -"
3 PRINT"CHANGER LA COULEUR DE FOND EN APPUYANT SUR B"
4 PRINT"EFFACER L'ECRAN EN APPUYANT SUR C"
5 FOR PAUSE=1 TO 15000:NEXT PAUSE
6 X=INT(1+640*RND(1))
7 Y=INT(1+350*RND(1))
10 KEY OFF:SCREEN 9:COLOR 15,0:CLS
15 RANDOMIZE TIMER
30 T=INT(1+5*RND(1))
35 V=INT(1+5*RND(1))
40 C=INT(1+5*RND(1))
41 B=INT(1+2*RND(1))
42 N=INT(1+2*RND(1))
43 IF B=2 THEN V=-(V)
44 IF N=2 THEN C=-(C)
45 R=INT(1+15*RND(1))
100 FOR A=1 TO T
101 I$=INKEY$:DRAW"S="+VARPTR$(AS)
102 IF I$="+" THEN AS=AS+4
103 IF AS=>250 THEN AS=250
104 IF I$="-" THEN AS=AS-4
105 IF AS=<4 THEN AS=4
106 IF I$="C" OR I$="c" THEN GOTO 150
107 IF I$="B" OR I$="b" THEN FG=FG+1
108 IF FG=16 THEN FG=1
109 COLOR ,FG
120 PSET(X,Y),R:DRAW"R1 D1 L1 U1":PAINT(X+1,Y+1),R
125 X=X+V:Y=Y+C
126 IF X=>650 THEN X=650
127 IF X=<-2 THEN X=-2
128 IF Y=<-2 THEN Y=-2
129 IF Y=>349 THEN Y=349
130 NEXT A
140 GOTO 30
150 FOR AD=1 TO 55:PRINT:NEXT AD
155 GOTO 6

ETCH.BAS

10 CLS:INPUT"SCREEN(7-9)";SC:TR=0:BB=0:T=1:X=150:Y=96
12 RANDOMIZE TIMER:KEY OFF:CLS:SCREEN SC:COLOR ,BB
15 GOTO 310
20 I$=INKEY$:DRAW"TA="+VARPTR$(TR)
21 IF I$="C" OR I$="c" THEN GOTO 140
22 IF I$="E" OR I$="e" THEN END
23 IF I$="R" OR I$="r" THEN GOTO 150
30 IF I$="4" THEN X=X-1
40 IF I$="6" THEN X=X+1
50 IF I$="8" THEN Y=Y-1
51 IF I$="T" OR I$="t" THEN TR=TR+1:DRAW"TA="+VARPTR$(TR)
52 IF TR=>360 THEN TR=0
53 IF I$="N" OR I$="n" THEN TR=0:DRAW"TA="+VARPTR$(TR)
54 IF I$="Y" OR I$="y" THEN TR=TR-1:DRAW"TA="+VARPTR$<TR)
55 IF I$="B" OR I$="b" THEN BB=BB+1:COLOR ,BB
56 IF BB=15 THEN BB=0:COLOR ,BB
57 IF I$="V" OR I$="v" THEN GOTO 425
60 IF I$="2" THEN Y=Y+1
70 IF I$="1" THEN X=X-1:Y=Y+1
80 IF I$="3" THEN Y=Y+1:X=X+1
81 IF TR=<-360 THEN TR=0:DRAW"TA="+VARPTR$(TR)
90 IF I$="9" THEN Y=Y-1:X=X+1
91 IF I$="+" THEN T=T+4
92 IF I$="-" THEN T=T-4
93 IF T=>250 THEN T=250
94 IF T=<1 THEN T=l
95 IF I$="$" OR I$="s" THEN GOTO 230
100 IF I$="7" THEN X=X-1:Y=Y-1
105 IF I$="D" OR I$="d" THEN GOTO 305
110 R=INT(RND*15)
111 IF R=BB THEN GOTO 110
120 PSET(X,Y),R:DRAW"S="+VARPTR$(T):DRAW"R1 D1 L1 U1"
130 GOTO 20
140 FOR H=l TO 65:PRINT:FOR G=1 TO 200:NEXT G:NEXT H:CLS:GOTO 20
150 D=INT(RND*999)
160 S=INT(RND*999)
170 A=INT(RND*15):IF A=BB THEN GOTO 170
190 PSET(D,S),A
200 I$=INKEY$
210 IF I$="R" OR I$="r" THEN GOTO 20
220 GOTO 150
230 D=INT(RND*999)
240 S=INT(RND*999)
250 A=INT(RND*15):IF A=8B THEN GOTO 250
255 IF A=S THEN GOTO 250
260 W=INT(RND*20)
270 CIRCLE(D,S),W,A
280 I$=INKEY$
290 IF I$="S" OR I$="s" THEN GOTO 130
300 GOTO 230
305 T=1
310 I$=INKEY$:DRAW"S="+VARPTR$(T):DRAW"TA0"
330 IF I$="8" THEN Y=Y-1
335 IF I$="V" OR I$="v" THEN GOTO 425
340 IF I$="2" THEN Y=Y+1
350 IF I$="4" THEN X=X-1
360 IF I$="6" THEN X=X+1
370 IF I$="7" THEN Y=Y-1:X=X-1
380 IF I$="1" THEN X=X-1:Y=Y+1
390 IF I$="3" THEN Y=Y+1:X=X+1
400 IF I$="9" THEN Y=Y-1:X=X+1
401 IF I$="+" THEN T=T+4:DRAW"S="+VARPTR$(T)
402 IF T=>250 THEN T=250
403 IF I$="-" THEN T=T-2
404 IF T=<2 THEN T=2
405 IF I$="E" OR I$="e" THEN GOTO 20
410 PSET(X,Y),15:DRAW"R1 D1 L1 U1":PRESET(X,Y):DRAW"R1 D1 L1 U1"
420 GOTO 310
425 G=1
430 I$=INKEY$
440 IF I$="8" THEN Y=Y-1
445 IF I$="E" OR I$="e" THEN GOTO 20
450 IF I$="2" THEN Y=Y+1
460 IF I$="4" THEN X=X-1
470 IF I$="6" THEN X=X+1
480 IF I$="7" THEN Y=Y-.5:X=X-.5
490 IF I$="1" THEN X=X-.5:Y=Y+.5
500 IF I$="3" THEN Y=Y+.5:X=X+.5
510 IF I$="9" THEN Y=Y-.5:X=X+.5
520 IF I$="+" THEN G=G+1
530 IF G=>60 THEN 6=60
540 IF I$="-" THEN G=G-1
550 IF G=<1 THEN G=1
560 C=INT(RND*15):IF C=BB THEN GOTO 560
570 CIRCLE(X,Y),G,C
580 GOTO 430

COLMAK.BAS

10 KEY OFF:CLS:INPUT"SCREEN(7-9)";S:SCREEN S:COLOR,8:CLS
20 G$="C15 R1 C14 R1 C15 D1 C14 L1"
30 FOR GH=0 TO 640 STEP 2
40 FOR GF=0 TO 200 STEP 2
50 PSET(GH,GF):DRAW G$
60 NEXT GF:NEXT GH

DMOLTION.BAS

0 X=100:Y=110:KEY OFF
10 COLOR 15
20 PSET (X,Y)
30 DRAW"U10 R1 D18 R1 U10 R1 D10 R1 U10 R1 D10 R1 U10
35 D$ = INKEY$: IF D$ = "" THEN 35
40 FOR T = 1 TO 50: NEXT T
45 COLOR 4
50 PSET (X,Y),0
60 DRAW"U10 R1 010 R1 U10 R1 D10 R1 U10 R1 D10 R1 U10
65 COLOR 1
70 IF D$="6" THEN X = X + 3
71 IF D$="4" THEN X=X-3
72 IF D$="2" THEN Y=Y+3
73 IF D$="8" THEN Y=Y-3
74 IF D$="7" THEN Y=Y-1.5:X=X-1.5
75 IF D$="1" THEN Y=Y+1.5:X=X-1.5
76 IF D$="9" THEN Y=Y-1.5:X=X+1.5
77 IF D$="3" THEN Y=Y+1.5:X=X+1.5
79 IF D$=CHR$(27) THEN END
88 GOTO 10

TEST.BAS

10 G=0:T=4:X=150:Y=96:KEY OFF:SCREEN 7:COLOR 15,1:CLS
20 LOCATE 2,5:PRINT" *TEST*":LOCATE 10,1:COLOR 14:INPUT"Directions du dessin-->";D$
30 CLS:LOCATE 10,1:INPUT"Es-tu sur(O/N)";F$
40 IF F$="N" OR F$="n" THEN GOTO 10
50 IF F$="O" OR F$="o" THEN GOTO 70
60 GOTO 30
70 CLS:COLOR ,0
80 I$=INKEY$:PSET(X,Y),15:DRAW D$
90 IF I$="" THEN GOTO 80
100 PSET(X,Y),0:DRAW D$
110 IF I$="8" THEN Y=Y-6
120 IF I$="2" THEN Y=Y+6
130 IF I$="4" THEN X=X-6
140 IF I$="6" THEN X=X+6
150 IF I$="+" THEN T=T+1
160 IF T=2 THEN T=2
170 IF T>100 THEN T=100
180 IF I$="-" THEN T=T-1
190 IF I$="T" OR I$="t" THEN G=G+5
191 IF I$="N" OR I$="n" THEN G=0
195 IF I$="O" OR I$="o" THEN G=G-5
200 IF G=>360 THEN G=0
210 IF G=<-360 THEN G=0
220 IF I$="R" OR I$="r" THEN GOTO 10
230 IF I$="E" OR I$="e" THEN END
240 DRAW"S="+VARPTR$(T)
250 DRAW"TA="+VARPTR$(G)
260 PCOPY 0,1:PSET(X,Y),15:DRAW D$
270 GOTO 80