Forum Liberty Basic France
• Index
Excellent code de Rod du forum anglophone, un peu revu à ma sauce
:
Code VB :
J'ai repris la façon un peu spéciale d'utiliser une fonction dans un code de Roland.
Je vais sans doute y ajouter quelques trucs :
- toutes les valeurs visibles
- épaisseur du trait de courbe réglable
- mémoires des courbes
@+
Edité par cassiope01 Le 28/05/2012 à 11h14

Code VB :
' from awesome Rod's code. ' http://justbasic.conforums.com/index.cgi?board=code&action=display&num=1337870012 nomainwin WindowWidth = 500 WindowHeight = 600 graphicbox #1.gb 45,20,400,400 checkbox #1.cb, "Drift", [set], [set], 150, 430, 80, 15 statictext #1.stx01 "X", 15, 480,10,15 statictext #1.stx02 "Y", 15, 510,10,15 GROUPBOX #1.sthz0, "Hertz", 32, 448, 130, 95 statictext #1.sthz1 "0";space$(18);"100", 45, 465, 102, 15 statictext #1.sthz2 "5", 84, 465, 20, 15 graphicbox #1.gbhzx 45, 480, 102, 19 graphicbox #1.gbhzy 45, 510, 102, 19 GROUPBOX #1.stph0, "Phase", 182, 448, 130, 95 statictext #1.stph1 "0", 195, 465, 10, 15 statictext #1.stph2 "360", 276, 465, 20, 15 graphicbox #1.gbphx 195, 480, 102, 19 graphicbox #1.gbphy 195, 510, 102, 19 GROUPBOX #1.stvo0, "Volume", 330, 448, 130, 95 statictext #1.stvo1 "0", 345, 465, 10, 15 statictext #1.stvo2 "100", 426, 465, 20, 15 graphicbox #1.gbvox 345, 480, 102, 19 graphicbox #1.gbvoy 345, 510, 102, 19 open "Lissajous" for window_nf as #1 'graphics_nsb #1 "trapclose [quit]" #1 "font arial 10" for w = 1 to 11 sld$ = word$("#1.sthz0 #1.sthz1 #1.sthz2 #1.stph0 #1.stph1 #1.stph2 #1.stvo0 #1.stvo1 #1.stvo2 #1.stx01 #1.stx02",w) #sld$ "!font arial 10" next for w = 1 to 6 sld$ = word$("#1.gbhzx #1.gbhzy #1.gbphx #1.gbphy #1.gbvox #1.gbvoy",w) #sld$ "down" next #1.cb "font arial 10" #1.cb "set" GLOBAL slidecolor$ slidecolor$ = "0 150 0" hertzX=5 hertzY=5 volX=100 volY=100 phaseX=180 phaseY=180 drift=1 midX=200 midY=200 rad=57.29577951 sizeSet = 2 #1.sthz2 hertzX #1.gb "down ; fill 0 50 0" #1.gb "color 50 50 50" for x= 20 to 480 step 20 #1.gb "line ";x;" 0 ";x;" 600" next for y= 20 to 480 step 20 #1.gb "line 0 ";y;" 600 ";y next #1.gb "flush one" #1.gb "color 0 100 0" #1.sthz2 slideB("#1.gbhzx",hertzX) print slideB("#1.gbhzy",hertzY) print slideB("#1.gbphx",int(phaseX/3.6)) print slideB("#1.gbphy",int(phaseY/3.6)) print slideB("#1.gbvox",volX) print slideB("#1.gbvoy",volY) #1.gbhzx "when leftButtonMove [mousehzx]" #1.gbhzx "when leftButtonDown [mousehzx]" #1.gbhzx "when characterInput [keyhzx]" #1.gbhzy "when leftButtonMove [mousehzy]" #1.gbhzy "when leftButtonDown [mousehzy]" #1.gbhzy "when characterInput [keyhzy]" #1.gbphx "when leftButtonMove [mousephx]" #1.gbphx "when leftButtonDown [mousephx]" #1.gbphx "when characterInput [keyphx]" #1.gbphy "when leftButtonMove [mousephy]" #1.gbphy "when leftButtonDown [mousephy]" #1.gbphy "when characterInput [keyphy]" #1.gbvox "when leftButtonMove [mousevox]" #1.gbvox "when leftButtonDown [mousevox]" #1.gbvox "when characterInput [keyvox]" #1.gbvoy "when leftButtonMove [mousevoy]" #1.gbvoy "when leftButtonDown [mousevoy]" #1.gbvoy "when characterInput [keyvoy]" timer 20, [drawit] wait [drawit] start=0 #1.gb "discard ; redraw one ; size ";sizeSet for n= 0 to 359 x=midX-(1.8*volX*sin(phaseX/rad)) y=midY-(1.8*volY*cos(phaseY/rad)) if start=1 then #1.gb "line ";oldX;" ";oldY;" ";x;" ";y else start=1 #1.gb "set ";x;" ";y end if oldX=x oldY=y phaseX=phaseX+hertzX if phaseX>359 then phaseX=phaseX-360-drift phaseY=phaseY+hertzY if phaseY>359 then phaseY=phaseY-360 next wait [mousehzx] slide=1 hertzX=MouseX if hertzX<0 then hertzX=0 if hertzX>100 then hertzX=100 goto [updatecontrol] [keyhzx] slide=1 key=asc(right$(Inkey$,1)) if key=_VK_LEFT then hertzX=hertzX-(hertzX>0) if key=_VK_RIGHT then hertzX=hertzX+(hertzX<100) goto [updatecontrol] [mousehzy] slide=2 hertzY=MouseX if hertzY<0 then hertzY=0 if hertzY>100 then hertzY=100 goto [updatecontrol] [keyhzy] slide=2 key=asc(right$(Inkey$,1)) if key=_VK_LEFT then hertzY=hertzY-(hertzY>0) if key=_VK_RIGHT then hertzY=hertzY+(hertzY<100) goto [updatecontrol] [mousephx] slide=3 phaseX=int(MouseX*3.6) if phaseX<0 then phaseX=0 if phaseX>360 then phaseX=360 goto [updatecontrol] [keyphx] slide=3 key=asc(right$(Inkey$,1)) if key=_VK_LEFT then phaseX=phaseX-(phaseX>0) if key=_VK_RIGHT then phaseX=phaseX+(phaseX<360) goto [updatecontrol] [mousephy] slide=4 phaseY=int(MouseX*3.6) if phaseY<0 then phaseY=0 if phaseY>360 then phaseY=360 goto [updatecontrol] [keyphy] slide=4 key=asc(right$(Inkey$,1)) if key=_VK_LEFT then phaseY=phaseY-(phaseY>0) if key=_VK_RIGHT then phaseY=phaseY+(phaseY<360) goto [updatecontrol] [mousevox] slide=5 volX=MouseX if volX<1 then volX=1 if volX>100 then volX=100 goto [updatecontrol] [keyvox] slide=5 key=asc(right$(Inkey$,1)) if key=_VK_LEFT then volX=volX-(volX>0) if key=_VK_RIGHT then volX=volX+(volX<100) goto [updatecontrol] [mousevoy] slide=6 volY=MouseX if volY<0 then volY=0 if volY>100 then volY=100 goto [updatecontrol] [keyvoy] slide=6 key=asc(right$(Inkey$,1)) if key=_VK_LEFT then volY=volY-(volY>0) if key=_VK_RIGHT then volY=volY+(volY<100) goto [updatecontrol] [set] drift = drift+1-2*(drift=1) ' 1 - 0 - 1 - 0 - 1 - 0 - etc... wait [updatecontrol] select case slide case 1 #1.sthz2 slideB("#1.gbhzx",hertzX) case 2 print slideB("#1.gbhzy",hertzY) case 3 print slideB("#1.gbphx",int(phaseX/3.6)) case 4 print slideB("#1.gbphy",int(phaseY/3.6)) case 5 print slideB("#1.gbvox",volX) case 6 print slideB("#1.gbvoy",volY) end select wait function slideB(sld$,value) #sld$ "fill ";slidecolor$;" ;size 1" #sld$ "backcolor darkgray" #sld$ "line 0 8 120 8" #sld$ "place ";value-4;" 0 ; boxfilled ";value+4;" 17" slideB = value end function [quit] timer 0 close #1 end
J'ai repris la façon un peu spéciale d'utiliser une fonction dans un code de Roland.

Je vais sans doute y ajouter quelques trucs :
- toutes les valeurs visibles
- épaisseur du trait de courbe réglable
- mémoires des courbes
@+
Edité par cassiope01 Le 28/05/2012 à 11h14
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Web
Houla la.... j'utilise les fonctions comme les poules utilisent les couteaux.
Je n'avais jamais vu d'oscillo anglais. celui-là est assez bizarre, il fait des Lissajous tout seul ? Où qu'il est le générateur ?
J'aurais une question, je la mets pas chez "débutant" car il y a Claude qui en a posté une, lui aussi, il aimerait maitriser le temps (temps fugit.....vive les montres molles de Dali )
La question:
y'a t-il moyen de faire varier Y pendant le vol de l'oiseau, avec ce genre de code, ou faut-il s'y prendre autrement ? ( je pense que tu ne devrais pas avoir besoin de l'oiseau pour voir de quoi il retourne )
Code JB :
Et bien sur merci d'avance
Edité par Roland Le 28/05/2012 à 20h01
Je n'avais jamais vu d'oscillo anglais. celui-là est assez bizarre, il fait des Lissajous tout seul ? Où qu'il est le générateur ?
J'aurais une question, je la mets pas chez "débutant" car il y a Claude qui en a posté une, lui aussi, il aimerait maitriser le temps (temps fugit.....vive les montres molles de Dali )
La question:
y'a t-il moyen de faire varier Y pendant le vol de l'oiseau, avec ce genre de code, ou faut-il s'y prendre autrement ? ( je pense que tu ne devrais pas avoir besoin de l'oiseau pour voir de quoi il retourne )
Code JB :
'B3c nomainwin WindowWidth = 450:WindowHeight =450 UpperLeftX=Int((DisplayWidth-WindowWidth)/2) UpperLeftY=Int((DisplayHeight-WindowHeight)/2) graphicbox #w.g, 20, 20, 300, 200 open "test B3c" for window as #w print #w, "trapclose [quit]" xx=20:yy=0 loadbmp "bird1", "oisv1.bmp" print #w.g, "down;fill darkgreen" print #w.g, "flush" print #w.g, "getbmp bg 0, 0, 300, 200"; print #w.g, "background bg"; print #w.g, "addsprite bird1 bird1"; print #w.g, "spritexy bird1 3 50"; print #w.g, "spritemovexy bird1 20 0" print #w.g, "spritemovexy bird1 ";xx;" ";yy' 20 0" timer 150, [go] [go] gosub [limit] gosub [draw] wait [limit] print #w.g, "spritexy? bird1 SqX SqY" if SqX >=300 then print #w.g, "spritexy bird1 0 50"; return [draw] print #w.g, "drawsprites"; return [quit] close #w end
Et bien sur merci d'avance

Edité par Roland Le 28/05/2012 à 20h01
____________________
Roro
Roro
Un oscillo qui fait des Lissajous tout seul, c'était vraiment trop bizarre.
Alors voici le géné multi , il rest de " MENUS " détails à régler, mais il y a la modulation de fréquence.
Code JB :
Alors voici le géné multi , il rest de " MENUS " détails à régler, mais il y a la modulation de fréquence.

Code JB :
nomainwin WindowWidth = 450:WindowHeight =300 UpperLeftX=Int((DisplayWidth-WindowWidth)/2) UpperLeftY=Int((DisplayHeight-WindowHeight)/2) button #w,"A",[a], UL, 400, 30 button #w,"B",[b], UL, 400, 60 button #w,"C",[c], UL, 400, 90 button #w,"D",[d], UL, 400, 120 button #w,"E",[e], UL, 400, 150 graphicbox #w.g,10, 10, 350, 250 open "test Fa" for window _nsb_nf as #w'Graphics_nsb_nf as #g print #w, "trapclose [quit]" a=40 print #w.g, "down;fill darkgreen" print #w.g, "flush" print #w.g, "getbmp bg 0, 0, 300, 200"; print #w.g, "background bg"; wait [a] print #w.g, "up" x=1:s=2:y=100:goto [go] wait [b] print #w.g, "up" x=1:s=3:y=100:goto [go] wait [c] print #w.g, "up" x=1:s=8:y=100:goto [go] wait [d] print #w.g, "up" x=1:s=11:y=100:goto [go] wait [e] print #w.g, "up" x=1:s=24:y=100:goto [go] wait [go] print #w.g, "redraw" print #w.g, "down" #w.g,"Color green; Size 1'; Place ";x;" ";y For x = 1 To 360 Step s y = Sin(x)*a+y #w.g,"Goto ";x;" ";y call pause 20 Next x wait sub pause temp timer temp, [temps] wait [temps] timer 0 end sub [quit] close #w end
____________________
Roro
Roro
Roland:
Bien sûr que si il te faut la poser chez "débutant" ! c'est fait pour ça !
Ton soucis :
- print #w.g, "spritemovexy bird1 20 0" déplace bird1 de 20 pixel en X, et 0 pixel en Y lors du prochain "drawsprites" , puis
- print #w.g, "spritemovexy bird1 ";xx;" ";yy' 20 0" déplace bird1 de xx pixel en X, et yy pixel en Y lors du prochain "drawsprites".
puis,
- print #w.g, "spritexy? bird1 SqX SqY" ' tu prends les coordonnées actuelle de bird1
- if SqX >=300 then print #w.g, "spritexy bird1 0 50"; et tu lui dis d'aller en 0 50 si SqX >= 300 lors du prochain "drawsprites"
Il te faut donc continuer avec spritemovexy plutôt que spritexy en faisant simplemet évoluer yy.
-
Edité par cassiope01 Le 29/05/2012 à 10h00
J'aurais une question, je la mets pas chez "débutant" car il y a Claude qui en a posté une, lui aussi, il aimerait maitriser le temps (temps fugit.....vive les montres molles de Dali )
Bien sûr que si il te faut la poser chez "débutant" ! c'est fait pour ça !
Ton soucis :
- print #w.g, "spritemovexy bird1 20 0" déplace bird1 de 20 pixel en X, et 0 pixel en Y lors du prochain "drawsprites" , puis
- print #w.g, "spritemovexy bird1 ";xx;" ";yy' 20 0" déplace bird1 de xx pixel en X, et yy pixel en Y lors du prochain "drawsprites".
puis,
- print #w.g, "spritexy? bird1 SqX SqY" ' tu prends les coordonnées actuelle de bird1
- if SqX >=300 then print #w.g, "spritexy bird1 0 50"; et tu lui dis d'aller en 0 50 si SqX >= 300 lors du prochain "drawsprites"
Il te faut donc continuer avec spritemovexy plutôt que spritexy en faisant simplemet évoluer yy.
-
Edité par cassiope01 Le 29/05/2012 à 10h00
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Web
dernière version de l'Oscilloscope :
- visualisation de toutes les valeurs
- épaisseur du trait réglable
- mémoire et restitution de courbe.
Code VB :
Edité par cassiope01 Le 29/05/2012 à 11h41
- visualisation de toutes les valeurs
- épaisseur du trait réglable
- mémoire et restitution de courbe.
Code VB :
' from awesome Rod's code. ' http://justbasic.conforums.com/index.cgi?board=code&action=display&num=1337870012 nomainwin WindowWidth = 500 WindowHeight = 620 GLOBAL slidecolor$ slidecolor$ = "0 150 0" currentMem = 0 lastMem = 0 maxMem = 10 DIM mem$(maxMem), info$(10,10) hertzX =5 hertzY =5 volX =100 volY =100 phaseX =180 phaseY =180 ' if exist, restore the data file Curves.ini in mem$() array gosub [loadCurves] if lastMem>0 then hertzX =val(word$(mem$(lastMem),1)) hertzY =val(word$(mem$(lastMem),2)) volX =val(word$(mem$(lastMem),3)) volY =val(word$(mem$(lastMem),4)) phaseX =val(word$(mem$(lastMem),5)) phaseY =val(word$(mem$(lastMem),6)) end if drift=1 midX=200 midY=200 rad=57.29577951 sizeSet = 1 graphicbox #1.gb 45,20,400,400 checkbox #1.cb, "Drift", [set], [set], 240, 428, 80, 15 statictext #1.stx01 "X", 15, 480,10,15 statictext #1.stx02 "Y", 15, 510,10,15 GROUPBOX #1.sthz0, "Hertz", 32, 448, 130, 100 statictext #1.sthz1 "0";space$(18);"100", 45, 465, 102, 15 statictext #1.sthz2 str$(hertzX), 87, 465, 20, 15 graphicbox #1.gbhzx 45, 480, 102, 19 graphicbox #1.gbhzy 45, 510, 102, 19 statictext #1.sthz3 "0";space$(18);"100", 45, 528, 102, 15 statictext #1.sthz4 str$(hertzY), 87, 528, 20, 15 GROUPBOX #1.stph0, "Phase", 182, 448, 130, 100 statictext #1.stph1 "0";space$(18);"360", 195, 465, 102, 15 statictext #1.stph2 str$(phaseX), 234, 465, 20, 15 graphicbox #1.gbphx 195, 480, 102, 19 graphicbox #1.gbphy 195, 510, 102, 19 statictext #1.stph3 "0";space$(18);"360", 195, 528, 102, 15 statictext #1.stph4 str$(phaseY), 234, 528, 20, 15 GROUPBOX #1.stvo0, "Volume", 330, 448, 130, 100 statictext #1.stvo1 "0";space$(18);"100", 345, 465, 102, 15 statictext #1.stvo2 str$(volX), 384, 465, 20, 15 graphicbox #1.gbvox 345, 480, 102, 19 graphicbox #1.gbvoy 345, 510, 102, 19 statictext #1.stvo3 "0";space$(18);"100", 345, 528, 102, 15 statictext #1.stvo4 str$(volY), 384, 528, 20, 15 BUTTON #1.pts1, "<", [dwPts], UL, 38, 560 , 20, 20 statictext #1.pts "Pt. Size "+str$(sizeSet), 70, 562, 70, 20 BUTTON #1.pts2, ">", [upPts], UL, 141, 560 , 20, 20 BUTTON #1.mem1, "<", [dwMem], UL, 328, 560 , 20, 20 BUTTON #1.mem "MEM+", [addMem], UL, 356, 560, 64, 20 BUTTON #1.mem2, ">", [upMem], UL, 428, 560 , 20, 20 open "Lissajous" for window_nf as #1 'graphics_nsb #1 "trapclose [quit]" #1 "font arial 10" for w = 1 to 11 sld$ = word$("#1.sthz0 #1.sthz1 #1.sthz2 #1.stph0 #1.stph1 #1.stph2 #1.stvo0 #1.stvo1 #1.stvo2 #1.stx01 #1.stx02",w) #sld$ "!font arial 10" next for w = 1 to 6 sld$ = word$("#1.gbhzx #1.gbhzy #1.gbphx #1.gbphy #1.gbvox #1.gbvoy",w) #sld$ "down" next #1.cb "font arial 10" #1.cb "set" #1.gb "down ; fill 0 50 0" #1.gb "color 50 50 50" for x= 20 to 480 step 20 #1.gb "line ";x;" 0 ";x;" 600" next for y= 20 to 480 step 20 #1.gb "line 0 ";y;" 600 ";y next #1.gb "flush one" #1.gb "color 0 100 0" #1.gbhzx "when leftButtonMove [mousehzx]" #1.gbhzx "when leftButtonDown [mousehzx]" #1.gbhzx "when characterInput [keyhzx]" #1.gbhzy "when leftButtonMove [mousehzy]" #1.gbhzy "when leftButtonDown [mousehzy]" #1.gbhzy "when characterInput [keyhzy]" #1.gbphx "when leftButtonMove [mousephx]" #1.gbphx "when leftButtonDown [mousephx]" #1.gbphx "when characterInput [keyphx]" #1.gbphy "when leftButtonMove [mousephy]" #1.gbphy "when leftButtonDown [mousephy]" #1.gbphy "when characterInput [keyphy]" #1.gbvox "when leftButtonMove [mousevox]" #1.gbvox "when leftButtonDown [mousevox]" #1.gbvox "when characterInput [keyvox]" #1.gbvoy "when leftButtonMove [mousevoy]" #1.gbvoy "when leftButtonDown [mousevoy]" #1.gbvoy "when characterInput [keyvoy]" [displayCurve] #1.sthz2 slideB("#1.gbhzx",hertzX) #1.sthz4 slideB("#1.gbhzy",hertzY) #1.stph2 int(slideB("#1.gbphx",int(phaseX/3.6))*3.6) #1.stph4 int(slideB("#1.gbphy",int(phaseY/3.6))*3.6) #1.stvo2 slideB("#1.gbvox",volX) #1.stvo4 slideB("#1.gbvoy",volY) timer 20, [drawit] wait [dwPts] sizeSet = sizeSet-(sizeSet>1) #1.pts "Pt. Size "+str$(sizeSet) wait [upPts] sizeSet = sizeSet+(sizeSet<15) #1.pts "Pt. Size "+str$(sizeSet) wait [dwMem] currentMem = currentMem-1 if currentMem<0 then currentMem = lastMem if currentMem=0 then #1.mem "MEM+" else #1.mem "MEM ";currentMem gosub [restoreCurve] wait [upMem] currentMem = currentMem+1 if currentMem>lastMem then currentMem = 0 if currentMem=0 then #1.mem "MEM+" else #1.mem "MEM ";currentMem gosub [restoreCurve] wait [restoreCurve] if currentMem>0 then hertzX=val(word$(mem$(currentMem),1)) hertzY=val(word$(mem$(currentMem),2)) volX =val(word$(mem$(currentMem),3)) volY =val(word$(mem$(currentMem),4)) phaseX=val(word$(mem$(currentMem),5)) phaseY=val(word$(mem$(currentMem),6)) goto [displayCurve] end if return [addMem] if lastMem<maxMem and currentMem = 0 then lastMem = lastMem+1 currentMem = lastMem #1.mem "MEM ";currentMem mem$(currentMem) = hertzX;" ";hertzY;" ";volX;" ";volY;" ";phaseX;" ";phaseY end if wait [drawit] start=0 scan #1.gb "flush; discard ; redraw one ; size ";sizeSet for n= 0 to 359 x=midX-(1.8*volX*sin(phaseX/rad)) y=midY-(1.8*volY*cos(phaseY/rad)) if start=1 then #1.gb "line ";oldX;" ";oldY;" ";x;" ";y else start=1 #1.gb "set ";x;" ";y end if oldX=x oldY=y phaseX=phaseX+hertzX if phaseX>359 then phaseX=phaseX-360-drift phaseY=phaseY+hertzY if phaseY>359 then phaseY=phaseY-360 next wait [mousehzx] slide=1 hertzX=MouseX if hertzX<0 then hertzX=0 if hertzX>100 then hertzX=100 goto [updatecontrol] [keyhzx] slide=1 key=asc(right$(Inkey$,1)) if key=_VK_LEFT then hertzX=hertzX-(hertzX>0) if key=_VK_RIGHT then hertzX=hertzX+(hertzX<100) goto [updatecontrol] [mousehzy] slide=2 hertzY=MouseX if hertzY<0 then hertzY=0 if hertzY>100 then hertzY=100 goto [updatecontrol] [keyhzy] slide=2 key=asc(right$(Inkey$,1)) if key=_VK_LEFT then hertzY=hertzY-(hertzY>0) if key=_VK_RIGHT then hertzY=hertzY+(hertzY<100) goto [updatecontrol] [mousephx] slide=3 phaseX=int(MouseX*3.6) if phaseX<0 then phaseX=0 if phaseX>360 then phaseX=360 goto [updatecontrol] [keyphx] slide=3 key=asc(right$(Inkey$,1)) if key=_VK_LEFT then phaseX=phaseX-(phaseX>0) if key=_VK_RIGHT then phaseX=phaseX+(phaseX<360) goto [updatecontrol] [mousephy] slide=4 phaseY=int(MouseX*3.6) if phaseY<0 then phaseY=0 if phaseY>360 then phaseY=360 goto [updatecontrol] [keyphy] slide=4 key=asc(right$(Inkey$,1)) if key=_VK_LEFT then phaseY=phaseY-(phaseY>0) if key=_VK_RIGHT then phaseY=phaseY+(phaseY<360) goto [updatecontrol] [mousevox] slide=5 volX=MouseX if volX<1 then volX=1 if volX>100 then volX=100 goto [updatecontrol] [keyvox] slide=5 key=asc(right$(Inkey$,1)) if key=_VK_LEFT then volX=volX-(volX>0) if key=_VK_RIGHT then volX=volX+(volX<100) goto [updatecontrol] [mousevoy] slide=6 volY=MouseX if volY<0 then volY=0 if volY>100 then volY=100 goto [updatecontrol] [keyvoy] slide=6 key=asc(right$(Inkey$,1)) if key=_VK_LEFT then volY=volY-(volY>0) if key=_VK_RIGHT then volY=volY+(volY<100) goto [updatecontrol] [set] drift = drift+1-2*(drift=1) ' 1 - 0 - 1 - 0 - 1 - 0 - etc... wait [updatecontrol] #1.mem "MEM+" currentMem = 0 select case slide case 1 #1.sthz2 slideB("#1.gbhzx",hertzX) case 2 #1.sthz4 slideB("#1.gbhzy",hertzY) case 3 #1.stph2 int(slideB("#1.gbphx",int(phaseX/3.6))*3.6) case 4 #1.stph4 int(slideB("#1.gbphy",int(phaseY/3.6))*3.6) case 5 #1.stvo2 slideB("#1.gbvox",volX) case 6 #1.stvo4 slideB("#1.gbvoy",volY) end select wait [loadCurves] if fileExists(DefaultDir$,"Curves.ini") then lastMem = 0 open "Curves.ini" for input as #curv WHILE EOF(#curv)=0 lastMem = lastMem + 1 'Nb of lines on the file. LINE INPUT #curv, mem$(lastMem) WEND close #curv end if return [saveCurves] ' record mem$(1) to mem$(maxMem) in a data file : Curves.ini if lastMem > 0 then open "Curves.ini" for output as #curv 'save JetLag frontiers ----------------- for nc = 1 to lastMem if mem$(nc)<>"" then #curv, mem$(nc) next close #curv end if return function slideB(sld$,value) #sld$ "fill ";slidecolor$;" ;size 1" #sld$ "backcolor darkgray" #sld$ "line 0 8 120 8" #sld$ "place ";value-4;" 0 ; boxfilled ";value+4;" 17" #sld$ "flush ; discard" slideB = value end function function fileExists(path$, filename$) 'DIM info$(10,10) 'must have been declared at the start of the code. files path$, filename$, info$() ' path$ = DefaultDir$ generally... fileExists = val(info$(0, 0)) '<> 0 if true end function [quit] timer 0 gosub [saveCurves] close #1 end
Edité par cassiope01 Le 29/05/2012 à 11h41
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Web
____________________
Roro
Roro
Merci Roland.
Je suis une truffe en trigo, mais je me rappelle que le Sinus Cardinal faisait un joli dessin de sombrero mexicain, surtout s'il est en 3D
J'ai donc demandé à Rod s'il saurait faire ça avec ce petit simulateur ?
Je verrai bien !
@+
Edité par cassiope01 Le 29/05/2012 à 14h45
Je suis une truffe en trigo, mais je me rappelle que le Sinus Cardinal faisait un joli dessin de sombrero mexicain, surtout s'il est en 3D

J'ai donc demandé à Rod s'il saurait faire ça avec ce petit simulateur ?
Je verrai bien !
@+
Edité par cassiope01 Le 29/05/2012 à 14h45
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Web
J'avais commencé de triturer le prog, j'ai viré tous les sliders pour les remplacer par des textbox dans lesquels entrer et sortir les paramètres, et ne conservant que la partie calcul. et en essayant de comprendre pourquoi l'engin réagissait à retardement.
Autant te dire que l'arrivée de ta dernière version a mis un point d'arret à mes triturations.
Le nom de "générateur Lissajou" est mieux adapté à cette usine à (raffinage de) gaz, que celui d'oscillo, qui me laissait perplexe.
Tu a vraiment d'étonnantes capacités avec ce langage......ça laisse réveur.....
Autant te dire que l'arrivée de ta dernière version a mis un point d'arret à mes triturations.
Le nom de "générateur Lissajou" est mieux adapté à cette usine à (raffinage de) gaz, que celui d'oscillo, qui me laissait perplexe.
Tu a vraiment d'étonnantes capacités avec ce langage......ça laisse réveur.....

____________________
Roro
Roro
Alors Cassiope...On recycle ! ...Que fait ce " save jetlag frontier" en commentaire de: open curves.ini. ! 
Hey, écoute ça: j'appui sur "mem+", et sans plus attendre j'ouvre le repertoire courant, comme un gros curieux..
..Et...RIEN !.. je referme la fenetre en m'apprétant à gueuler à l'arnaque. Et là surprise !...Je retrouve l'éditeur vide, la fenetre du prog vide, et qui essaye de revenir en vain toutes les dix secondes.
Aprés avoir mis le prog dans un dossier à part, et lui avoir laissé le temps de confectionner le curves.ini..tout est rentré dans l'ordre...Ouf !...... Il faut que je régle mon avance à l'allumage.
Edité par Roland Le 29/05/2012 à 17h16

Hey, écoute ça: j'appui sur "mem+", et sans plus attendre j'ouvre le repertoire courant, comme un gros curieux..
..Et...RIEN !.. je referme la fenetre en m'apprétant à gueuler à l'arnaque. Et là surprise !...Je retrouve l'éditeur vide, la fenetre du prog vide, et qui essaye de revenir en vain toutes les dix secondes.


Aprés avoir mis le prog dans un dossier à part, et lui avoir laissé le temps de confectionner le curves.ini..tout est rentré dans l'ordre...Ouf !...... Il faut que je régle mon avance à l'allumage.

Edité par Roland Le 29/05/2012 à 17h16
____________________
Roro
Roro
Bien sûr que je recycle... et même et surtout des programmes qui ne sont pas de moi au départ, comme celui-ci !!!
Comme toi je réutilise souvent quelques valeurs sûres comme la sauvegarde ici !
Dernière mise à jour, avec suppression de la mémoire d'une courbe possible. (ce qui n'était pas si simple !! )
Code VB :
+ quelques jolis dessins
Code TEXT :
à mettre dans le fichier Curves.ini
Edité par cassiope01 Le 30/05/2012 à 07h39
Comme toi je réutilise souvent quelques valeurs sûres comme la sauvegarde ici !
Dernière mise à jour, avec suppression de la mémoire d'une courbe possible. (ce qui n'était pas si simple !! )
Code VB :
' from awesome Rod's code. ' http://justbasic.conforums.com/index.cgi?board=code&action=display&num=1337870012 ' and ' http://justbasic.conforums.com/index.cgi?board=games&action=display&num=1338283740&start=0#1338283740 nomainwin WindowWidth = 500 WindowHeight = 620 UpperLeftX = (DisplayWidth-WindowWidth) / 3 UpperLeftY = (DisplayHeight-WindowHeight) / 2 'month$ = "Jan Fév Mar Avr Mai Jun Jui Aou Sep Oct Nov Déc" ' french month$ = "January February March April May June July August September October November December" today$ = date$("mm/dd/yyyy") j = date$(today$) 'day$ = word$("Mar Mer Jeu x Ven Sam x Dim Lun",int((j/7-int(j/7))*10)+1) ' french day$ = word$("Tuesday Wednesday Thursday x Friday Saturday x Sunday Monday",int((j/7-int(j/7))*10)+1) date$ = day$+" "+mid$(today$,4,2)+" "+word$(month$, val(today$))+" "+mid$(today$,7,4)+" "+left$(time$(),5) GLOBAL slidecolor$ slidecolor$ = "0 150 0" lastMem = 0 maxMem = 10 DIM mem$(maxMem), info$(10,10) hertzX =5 hertzY =5 volX =100 volY =100 phaseX =180 phaseY =180 ' if exist, restore the data file Curves.ini in mem$() array gosub [loadCurves] if lastMem>0 then hertzX =val(word$(mem$(lastMem),1)) hertzY =val(word$(mem$(lastMem),2)) volX =val(word$(mem$(lastMem),3)) volY =val(word$(mem$(lastMem),4)) phaseX =val(word$(mem$(lastMem),5)) phaseY =val(word$(mem$(lastMem),6)) end if currentMem = lastMem drift=1 midX=200 midY=200 rad=57.29577951 sizeSet = 1 graphicbox #1.gb 45,20,400,400 checkbox #1.cb, "Drift", [set], [set], 240, 428, 80, 15 statictext #1.stx01 "X", 15, 480,10,15 statictext #1.stx02 "Y", 15, 510,10,15 GROUPBOX #1.sthz0, "Hertz", 32, 448, 130, 100 statictext #1.sthz1 "0";space$(18);"100", 45, 465, 102, 15 statictext #1.sthz2 str$(hertzX), 87, 465, 20, 15 graphicbox #1.gbhzx 45, 480, 102, 19 graphicbox #1.gbhzy 45, 510, 102, 19 statictext #1.sthz3 "0";space$(18);"100", 45, 530, 102, 15 statictext #1.sthz4 str$(hertzY), 87, 530, 20, 15 GROUPBOX #1.stph0, "Phase", 182, 448, 130, 100 statictext #1.stph1 "0";space$(18);"360", 195, 465, 102, 15 statictext #1.stph2 str$(phaseX), 234, 465, 20, 15 graphicbox #1.gbphx 195, 480, 102, 19 graphicbox #1.gbphy 195, 510, 102, 19 statictext #1.stph3 "0";space$(18);"360", 195, 530, 102, 15 statictext #1.stph4 str$(phaseY), 234, 530, 20, 15 GROUPBOX #1.stvo0, "Volume", 330, 448, 130, 100 statictext #1.stvo1 "0";space$(18);"100", 345, 465, 102, 15 statictext #1.stvo2 str$(volX), 384, 465, 20, 15 graphicbox #1.gbvox 345, 480, 102, 19 graphicbox #1.gbvoy 345, 510, 102, 19 statictext #1.stvo3 "0";space$(18);"100", 345, 530, 102, 15 statictext #1.stvo4 str$(volY), 384, 530, 20, 15 BUTTON #1.pts1, "<", [dwPts], UL, 38, 560 , 20, 20 statictext #1.pts "Pt. Size "+str$(sizeSet), 70, 562, 70, 20 BUTTON #1.pts2, ">", [upPts], UL, 141, 560 , 20, 20 BUTTON #1.mem1, "<", [dwMem], UL, 328, 560 , 20, 20 BUTTON #1.mem "MEM ";currentMem, [addMem], UL, 356, 560, 64, 20 BUTTON #1.mem2, ">", [upMem], UL, 428, 560 , 20, 20 BUTTON #1.mem0, "-", [delMem], UL, 466, 560 , 20, 20 open "Lissajous"+space$(20)+date$ for window_nf as #1 'graphics_nsb #1 "trapclose [quit]" #1 "font arial 10" for w = 1 to 11 sld$ = word$("#1.sthz0 #1.sthz1 #1.sthz2 #1.stph0 #1.stph1 #1.stph2 #1.stvo0 #1.stvo1 #1.stvo2 #1.stx01 #1.stx02",w) #sld$ "!font arial 10" next for w = 1 to 6 sld$ = word$("#1.gbhzx #1.gbhzy #1.gbphx #1.gbphy #1.gbvox #1.gbvoy",w) #sld$ "down" next #1.cb "font arial 10" #1.cb "set" #1.gb "down ; fill 0 50 0" #1.gb "color 50 50 50" for x= 20 to 480 step 20 #1.gb "line ";x;" 0 ";x;" 600" next for y= 20 to 480 step 20 #1.gb "line 0 ";y;" 600 ";y next #1.gb "flush one" #1.gb "color 0 100 0" #1.gbhzx "when leftButtonMove [mousehzx]" #1.gbhzx "when leftButtonDown [mousehzx]" #1.gbhzx "when characterInput [keyhzx]" #1.gbhzy "when leftButtonMove [mousehzy]" #1.gbhzy "when leftButtonDown [mousehzy]" #1.gbhzy "when characterInput [keyhzy]" #1.gbphx "when leftButtonMove [mousephx]" #1.gbphx "when leftButtonDown [mousephx]" #1.gbphx "when characterInput [keyphx]" #1.gbphy "when leftButtonMove [mousephy]" #1.gbphy "when leftButtonDown [mousephy]" #1.gbphy "when characterInput [keyphy]" #1.gbvox "when leftButtonMove [mousevox]" #1.gbvox "when leftButtonDown [mousevox]" #1.gbvox "when characterInput [keyvox]" #1.gbvoy "when leftButtonMove [mousevoy]" #1.gbvoy "when leftButtonDown [mousevoy]" #1.gbvoy "when characterInput [keyvoy]" [displayCurve] #1.sthz2 slideB("#1.gbhzx",hertzX) #1.sthz4 slideB("#1.gbhzy",hertzY) #1.stph2 int(slideB("#1.gbphx",int(phaseX/3.6))*3.6) #1.stph4 int(slideB("#1.gbphy",int(phaseY/3.6))*3.6) #1.stvo2 slideB("#1.gbvox",volX) #1.stvo4 slideB("#1.gbvoy",volY) timer 30, [drawit] wait [delMem] if currentMem>0 then confirm "Are you sure"+chr$(13)+"you want to delete the memory "+str$(currentMem); answer$ if answer$ = "yes" then mem$(currentMem) = "" :lstmem = 0 for nc = 1 to lastMem if mem$(nc)<>"" then lstmem = lstmem+1 :temp$(lstmem)=mem$(nc) next redim mem$(maxMem) for nc = 1 to lstmem :mem$(nc)=temp$(nc) :next lastMem = lstmem currentMem = lastMem if currentMem=0 then #1.mem "MEM+" else #1.mem "MEM ";currentMem gosub [restoreCurve] end if end if wait [dwPts] sizeSet = sizeSet-(sizeSet>1) #1.pts "Pt. Size "+str$(sizeSet) wait [upPts] sizeSet = sizeSet+(sizeSet<15) #1.pts "Pt. Size "+str$(sizeSet) wait [dwMem] currentMem = currentMem-1 if currentMem<0 then currentMem = lastMem if currentMem=0 then #1.mem "MEM+" else #1.mem "MEM ";currentMem gosub [restoreCurve] wait [upMem] currentMem = currentMem+1 if currentMem>lastMem then currentMem = 0 if currentMem=0 then #1.mem "MEM+" else #1.mem "MEM ";currentMem gosub [restoreCurve] wait [restoreCurve] if currentMem>0 then hertzX=val(word$(mem$(currentMem),1)) hertzY=val(word$(mem$(currentMem),2)) volX =val(word$(mem$(currentMem),3)) volY =val(word$(mem$(currentMem),4)) phaseX=val(word$(mem$(currentMem),5)) phaseY=val(word$(mem$(currentMem),6)) goto [displayCurve] end if return [addMem] if lastMem<maxMem and currentMem = 0 then lastMem = lastMem+1 currentMem = lastMem #1.mem "MEM ";currentMem mem$(currentMem) = hertzX;" ";hertzY;" ";volX;" ";volY;" ";phaseX;" ";phaseY end if wait [drawit] start=0 scan #1.gb "flush; discard ; redraw one ; size ";sizeSet for n= 0 to 359 x=midX-(1.8*volX*sin(phaseX/rad)) y=midY-(1.8*volY*cos(phaseY/rad)) if start=1 then #1.gb "line ";oldX;" ";oldY;" ";x;" ";y else start=1 #1.gb "set ";x;" ";y end if oldX=x oldY=y phaseX=phaseX+hertzX if phaseX>359 then phaseX=phaseX-360-drift phaseY=phaseY+hertzY if phaseY>359 then phaseY=phaseY-360 next wait [mousehzx] slide=1 hertzX=MouseX if hertzX<0 then hertzX=0 if hertzX>100 then hertzX=100 goto [updatecontrol] [keyhzx] slide=1 key=asc(right$(Inkey$,1)) if key=_VK_LEFT then hertzX=hertzX-(hertzX>0) if key=_VK_RIGHT then hertzX=hertzX+(hertzX<100) goto [updatecontrol] [mousehzy] slide=2 hertzY=MouseX if hertzY<0 then hertzY=0 if hertzY>100 then hertzY=100 goto [updatecontrol] [keyhzy] slide=2 key=asc(right$(Inkey$,1)) if key=_VK_LEFT then hertzY=hertzY-(hertzY>0) if key=_VK_RIGHT then hertzY=hertzY+(hertzY<100) goto [updatecontrol] [mousephx] slide=3 phaseX=int(MouseX*3.6) if phaseX<0 then phaseX=0 if phaseX>360 then phaseX=360 goto [updatecontrol] [keyphx] slide=3 key=asc(right$(Inkey$,1)) if key=_VK_LEFT then phaseX=phaseX-(phaseX>0) if key=_VK_RIGHT then phaseX=phaseX+(phaseX<360) goto [updatecontrol] [mousephy] slide=4 phaseY=int(MouseX*3.6) if phaseY<0 then phaseY=0 if phaseY>360 then phaseY=360 goto [updatecontrol] [keyphy] slide=4 key=asc(right$(Inkey$,1)) if key=_VK_LEFT then phaseY=phaseY-(phaseY>0) if key=_VK_RIGHT then phaseY=phaseY+(phaseY<360) goto [updatecontrol] [mousevox] slide=5 volX=MouseX if volX<1 then volX=1 if volX>100 then volX=100 goto [updatecontrol] [keyvox] slide=5 key=asc(right$(Inkey$,1)) if key=_VK_LEFT then volX=volX-(volX>0) if key=_VK_RIGHT then volX=volX+(volX<100) goto [updatecontrol] [mousevoy] slide=6 volY=MouseX if volY<0 then volY=0 if volY>100 then volY=100 goto [updatecontrol] [keyvoy] slide=6 key=asc(right$(Inkey$,1)) if key=_VK_LEFT then volY=volY-(volY>0) if key=_VK_RIGHT then volY=volY+(volY<100) goto [updatecontrol] [set] drift = drift+1-2*(drift=1) ' 1 - 0 - 1 - 0 - 1 - 0 - etc... wait [updatecontrol] #1.mem "MEM+" currentMem = 0 select case slide case 1 #1.sthz2 slideB("#1.gbhzx",hertzX) case 2 #1.sthz4 slideB("#1.gbhzy",hertzY) case 3 #1.stph2 int(slideB("#1.gbphx",int(phaseX/3.6))*3.6) case 4 #1.stph4 int(slideB("#1.gbphy",int(phaseY/3.6))*3.6) case 5 #1.stvo2 slideB("#1.gbvox",volX) case 6 #1.stvo4 slideB("#1.gbvoy",volY) end select wait [loadCurves] if fileExists(DefaultDir$,"Curves.ini") then lastMem = 0 open "Curves.ini" for input as #curv WHILE EOF(#curv)=0 lastMem = lastMem + 1 'Nb of lines on the file. LINE INPUT #curv, mem$(lastMem) WEND close #curv end if return [saveCurves] ' record mem$(1) to mem$(maxMem) in a data file : Curves.ini if lastMem > 0 then open "Curves.ini" for output as #curv for nc = 1 to lastMem if mem$(nc)<>"" then #curv, mem$(nc) next close #curv end if return function slideB(sld$,value) #sld$ "fill ";slidecolor$;" ;size 1" #sld$ "backcolor darkgray" #sld$ "line 0 8 120 8" #sld$ "place ";value-4;" 0 ; boxfilled ";value+4;" 17" #sld$ "flush ; discard" slideB = value end function function fileExists(path$, filename$) 'DIM info$(10,10) 'must have been declared at the start of the code. files path$, filename$, info$() ' path$ = DefaultDir$ generally... fileExists = val(info$(0, 0)) '<> 0 if true end function [quit] timer 0 gosub [saveCurves] close #1 end
+ quelques jolis dessins

Code TEXT :
5 15 100 100 33 180 30 30 100 100 119 180 5 5 100 100 260 180 95 72 42 81 18 180 95 72 42 81 173 108
à mettre dans le fichier Curves.ini
Edité par cassiope01 Le 30/05/2012 à 07h39
____________________
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Devise Shadocks : "Mieux vaut mobiliser son intelligence pour des conneries, que mobiliser sa connerie pour des choses intelligentes"
Coluche disait : "C'est parce que la vitesse de la lumière est plus rapide que celle du son que certains peuvent paraîtrent brillants jusqu'à ce qu'ils ouvrent la bouche."
Web
• 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