Forum
L'idée m'est venue, en faisant n'importe quoi sur le chat, de lancer une nouvelle expérience participative. Pour que ce soit intéressant, il faut quand même fixer quelques règles (qui pourront évoluer au fil du temps):
- V Il n'est possible de programmer qu'en BASIC
- V Il n'est possible de poster qu'une seule ligne à la fois
- X Il est interdit d'écraser une ligne déjà existante
- V Il autorisé d'insérer des lignes entre celles déjà poster
- X Il est interdit de faire deux posts de suite
- X Il est interdit de discuter du sujet avec les autres participants
- V Il est possible de corriger une ligne renvoyant un message d'erreur (mais en gardant l'esprit dans l'esprit initial)
- X Il est interdit d'empêcher l'exécution d'autres lignes
On verra bien si ça prend...
Et pour commencer, sans surprise (parce que je suis nul et parce que...):
10 CLS: BORDER 0
100 cls: locate 0,0 : print "MENU"
(J'étais tenté de faire un 1 goto 1 xd)
Donc :
10 CLS: BORDER 0
100 cls: locate 0,0 : print "MENU"
RUN
Improper argument in 100
La commande 'Locate' débute à 1... Exemple: LOCATE 1, 1
🙄 On fait comment de ce cas ?
faire en sorte que la ligne ne soit jamais exécutée 😮
99 DEF FN rc(x,y)=SQR(x*x+y*y):DEF FN tc(x,y)=ATN(y/x):DEF FN xc(r,t)=r*COS(t):DEF FN yc(r,t)=r*SIN(t):DEG:FOR n=0 to 23:r=4+RND*16:ORIGIN RND*640,RND*400:FOR t=0 to 359 step 80\r:PLOT 0,0,1+n\8:DRAW FNxc(r,t),FNyc(r,t):NEXT t,n:ORIGIN 320,200:GOTO 101
à écouter avec la musique d'EXOLON lol
oh merde, l'habitude en ce moment d'être indexé sur 0. J'ai zapé ça.
Il semble y avoir quelques cas que je n'avais pas identifiés:
- le cas où une ligne renvoie un message d'erreur (ligne 100 de @monos)
- le cas où une ligne empêche l'exécution d'une autre ligne (ligne 99 de @solorenzero)
Il convient donc de rajouter quelques règles:
- V Il est possible de corriger une ligne renvoyant un message d'erreur (mais en gardant l'esprit dans l'esprit initial)
- X Il est interdit d'empêcher l'exécution d'autres lignes
Petit récapitulatif donc après correction des lignes 99 et 100:
10 CLS: BORDER 0
99 DEF FN rc(x,y)=SQR(x*x+y*y):DEF FN tc(x,y)=ATN(y/x):DEF FN xc(r,t)=r*COS(t):DEF FN yc(r,t)=r*SIN(t):DEG:FOR n=0 to 23:r=4+RND*16:ORIGIN RND*640,RND*400:FOR t=0 to 359 step 80\r:PLOT 0,0,1+n\8:DRAW FNxc(r,t),FNyc(r,t):NEXT t,n:ORIGIN 320,200
100 cls: locate 1,1 : print "MENU"
Rajouter une ligne de code, c'est pas en option ^^
Règle n°5 : Il est interdit de faire deux posts de suite 😮
J'imagine que ça ne m'autorise pas à continuer le programme !
Et non @solorenzero, tu ne peux pas 🙂
Mais pour t'aider à avancer je propose une ligne 20 dans laquelle je peux exprimer tout mon talent créatif :
20 MODE 1 : LOCATE 16,12 : PRINT "DE L'EAU" : FOR I=1 TO 64 : INK 1,24 : DRAW RND*640,RND*400 : NEXT : LOCATE 8,13 : PRINT "DES SPAGHETTI DANS L'EAU"
Sachant que n'importe qui peut faire CLS ou changer de MODE, on va avoir droit à une belle Basic Demo qui rendrait jaloux Roudoudou 😀
14 DEFINT a-q:DEF FN ae(x,y)=&C000+INT(x/8)*(x>=0)*(x<=638)+(INT((398-y)/16)*80+(INT((398-y)/2) MOD 8)*2048)*(y>=0)*(y<=398):SOUND 2,1,2000,14,,,31:FOR n=1 to 450:POKE FNae(RND*638,RND*398),2^(INT(RND*4)):NEXT
30 locate 16,13: print "à la tomate"
15 DEG:INK 3,13:FOR t=-100 TO 100 STEP 8:MOVE 320+2*t,0:DRAW 320,440,1,0:NEXT:MASK 170:FOR t=0 TO 400 STEP 2:MOVE 120+t/2+30*SIN(4.5*t),t:DRAWR 400-t,0,3,3:NEXT:DIM cc(12):RESTORE:FOR n=0 TO 12:READ cc(n):NEXT:DATA 0,1,2,11,20,23,26,25,24,15,6,3,4
histoire de faire chier
2 NEW
Ne jamais sous estimer le pouvoir de nuisance d'un programmeur 😀
La ligne ne respectant pas la règle 8, j'invoque donc le delete tout puissant:
DELETE 2