Tiny Basic for Windows tbasic.org * 1 [2014 11 ] Tiny Basic for Windows 1 tbasic 2 1.1........................................ 2 1.2 tbasic..................................... 3 1.3............................................ 4 1.4.................................... 5 1.5.................................... 6 1.6...................................... 7 2 tbasic 8 2.1.............................................. 8 2.2.............................................. 10 2.3.................................... 10 2.4.................................... 15 3 15 3.1 Cls................................................. 16 3.2 PSet................................................ 17 3.3 Line................................................. 18 3.4 Circle................................................ 20 3.5 Paint................................................ 21 3.6 GLocate GPrint......................................... 22 4 23 4.1.............................................. 23 4.2......................................... 24 4.3......................................... 25 4.4.................................. 28 4.5................................ 29 4.6............................................... 31 *1 http://www.tbasic.org 1
2 tbasic tbasic tbasic 1 tbasic tbasic N88-BASICQuick BASIC Windows Visual Basic Quick BASIC tbasic 1.1 (pixel) tbasic 800 600 800 600 Windows 800 6001024 7681152 8641280 9601280 10241600 1200 Windows
3 1.2 tbasic Print tbasic tbasic tbasic tbasic GScreen GScreen Graph Screen GScreen() 1.1 (600 400). GScreen(600,400) 600 400 600 400
4 1.3 600 400 600 400 600 400=240000 600 400 ( ) 600 400 400 600 x y (x, y) 0 (0, 0) (599, 399) OS (x, y) (0, 0) ( 3, 0) (3, 0) y = f (x) *2 3 x 3 (x, f (x)) (100x + 300 100 f (x) + 200) Window Window *2 ( 3, 2) (3, 2)
5 Window (x0,y0)-(x1,y1) (x0,y0)(x1,y1) x0<x1y0<y1 GScreen Window (x0,y0) (x1,y1) Window (-3,-2)-(3,2) *3 3 x 3 (x, f (x)) (x, f (x)) y (x, y) y MathGraph tbasic BASIC MathGraph MathGraph Off GScreen(600,400) Window(-3,-2)-(3,2) 3 x 3 (x, f (x)) (x, f (x)) 1.4 *3 GScreen(600,400) 3 : 2
6 CLS PSet Line Circle Paint GLocate GPrint tbasic 1.5 CloseGScreen tbasic CloseGScreen CloseGScreen CloseGScreen GScreen() GScreen tbasic GScreen
7 * 4 tbasic 1.6 tbasic (1) Alt+PrintScreen tbasic PC *4 tbasic
8 (2) tbasic tbasic SavePicture jpgpnggif bmp tbasic BASIC sample enseki.tbt Alt+PrintScreen SavePicture BASIC 2 tbasic 2.1 Paint
9 Cls 2 Cls 2 GBackColor GForeColor GBorderColor html 16 0 15 : : : : 0 : Black 1 : Navy 2 : Green 3 : Teal 4 : Maroon 5 : Purple 6 : Olive 7 : Silver 8 : Gray 9 : Blue 10 : Lime 11 : Cyan(Aqua) 12 : Red 13 : Fuchsia 14 : Yellow 15 : White GBackColor=0 GBackColor="Black" html html RGB 16 FFCCAA GBackColor="#FFCCAA"
10 2.2 (1) (2) (3) (4) html RGB 600 400 ( 3, 2)(3, 2) GBackColor="Navy" GForeColor="Cyan" GScreen(600,400) Window (-3,-2)-(3,2) 2.3 CLS PSet Line Circle Paint GLocate GPrint PSetLine Circle RND *5 (0, 0) (1, 1) *5 RND 0 RND < 1
11 GBackColor="Black" GForeColor="White" Window (0,0)-(1,1) 1000 PSet PSet Point Set PSet (x,y) *6 PSet (Rnd,Rnd) 1000 For 2.1. 1000 GBackColor="Black" GForeColor="White" Window (0,0)-(1,1) For i=1 to 1000 PSet (Rnd,Rnd) GForeColor 3 j=((i-1) mod 3)+1 i=1,2,3,4,5,6,... j=1,2,3,1,2,3,... *6 PSet (x,y), c c
12 GForeColor GForeColor Sleep 2.2. 1000 Dim CLR$(3) CLR$(1)="Yellow" CLR$(2)="Red" CLR$(3)="Cyan" GBackColor="Black" GForeColor="White" Window (0,0)-(1,1) For i=1 to 1000 Sleep(10) C$ = CLR$(((i-1) mod 3)+1) : 1,2,3 GForeColor= C$ PSet (Rnd,Rnd) C$ = CLR$(((i-1) mod 3)+1) i = 1, 2, 3,... C$ Yellow Red Cyan Line Line Line (x1,y1)-(x2,y2) (x1,y1) (x2,y2) 1000 100 6 2.3. 100 Dim CLR$(6) CLR$(1)="White" : CLR$(2)="Green": CLR$(3)="Blue" CLR$(4)="Yellow": CLR$(5)="Red" : CLR$(6)="Cyan" BackColor="Black" ForeColor="White" Window (0,0)-(1,1) For i=1 to 100 Sleep(10) C$ = CLR$(((i-1) mod 6)+1) : 1,2,...,6 GForeColor= C$ Line (Rnd,Rnd)-(Rnd,Rnd)
13 CLR$(1)="White" : CLR$(2)="Green": CLR$(3)="Blue" CLR$(4)="Yellow": CLR$(5)="Red" : CLR$(6)="Cyan" : 6 6 6 C$ = CLR$(((i-1) mod 6)+1) 6 C$ Line Line (x1,y1)-(x2,y2),,b (x1,y1) (x2,y2) * 7 Line B 2.4. 100 Dim CLR$(6) CLR$(1)="White" : CLR$(2)="Green": CLR$(3)="Blue" CLR$(4)="Yellow": CLR$(5)="Red" : CLR$(6)="Cyan" BackColor="Black" ForeColor="White" Window (0,0)-(1,1) For i=1 to 100 Sleep(10) C$ = CLR$(((i-1) mod 6)+1) : 1,2,...,6 GForeColor= C$ Line (Rnd,Rnd)-(Rnd,Rnd),,B Circle Circle Circle (x,y),r (x,y) r Circle (x,y),r,,,,,f (x,y) r *7 Line (x1,y1)-(x2,y2),,bf (x1,y1) (x2,y2)
14 html 20 Randomize *8 2 2.5. 20 Dim CLR$(2) GBackColor="Black": GForeColor="White" : Window (0,0)-(1,1) Randomize For i=1 to 20 X=Rnd:Y=Rnd:R0=Rnd/80: CN=Int(Rnd * 3) For j=10 to 0 step -1 CLR$(CN)="FF" CLR$((CN+1) mod 3)=Right$("0"+Hex$(j*17),2) CLR$((CN+2) mod 3)=CLR$((CN+1) mod 3) C$="#"+CLR$(0)+CLR$(1)+CLR$(2) R=R0*(j+1) GForeColor= C$ Circle (x,y),r,,,,,f Next j CLR$(0)CLR$(1)CLR$(2) C$="#"+CLR$(0)+CLR$(1)+CLR$(2) html C$0,1,2 CN #FFAAAA, #FF9999,..., #FF1111, #FF0000 #AAFFAA, #99FF99,..., #11FF11, #00FF00 #AAAAFF, #9999FF,..., #1111FF, #0000FF C$GForeColor Hex$(j*17) Hex$16 17 = 16 + 1 = 11(16 ) j=1,...,9 Hex$(j*17) 16 jj j=10 AA j=0 0 0 Right$("0"+Hex$(j*17),2) j=0,...,10 16 jj html *8 Randomize
15 2.4 CloseGScreen 3 (1) Cls (2) PSet (3) Line (4) Circle (5) Paint (6) GLocate GPrint
16 3.1 Cls Cls Clear Screen Cls 2 *9 Cls 2 Cls 2 GScreen GScreen GBackColor Cls 2 Cls 2 GBackColor Cls 2 Dim CLR$(2) For i=1 to 10 CN=Int(Rnd * 3) For j=15 to 0 step -1 Sleep(100) CLR$(CN)="FF" CLR$((CN+1) mod 3)=Right$("0"+Hex$(j*17),2) CLR$((CN+2) mod 3)=CLR$((CN+1) mod 3) C$="#"+CLR$(0)+CLR$(1)+CLR$(2) GBackColor= C$ Cls 2 Next j CLR$(0)CLR$(1)CLR$(2) CN=Int(Rnd * 3) 0,1,2 CLR$(CN)="FF" CLR$(CN) 2 CLR$((CN+1) mod 3) CLR$((CN+2) mod 3) #FFFFFF, #FFEEEE,..., #FF1111, #FF0000 #FFFFFF, #EEFFEE,..., #11FF11, #00FF00 #FFFFFF, #EEEEFF,..., #1111FF, #0000FF C$="#"+CLR$(0)+CLR$(1)+CLR$(2) html C$ *9 ClsCls 1 Cls 2 Cls 3
17 3.2 PSet PSet Point Set () PSet (x,y) * 10 (0,0) (1,1) 01 GBackColor = "Black" 02 GForeColor = "White" 03 04 Window(0,0)-(1,1) 05 06 For i=1 to 10000 07 x = RND 08 y = RND 09 If (xˆ2+yˆ2 <= 1) and ((x-1)ˆ2+(y-1)ˆ2 <=1) then 10 PSet (x,y) 11 if 12 13. 1 5 (0,0) (1,1) 6 12 10000 7 8 x, y 9 (xˆ2+yˆ2 <= 1) and ((x-1)ˆ2+(y-1)ˆ2 <=1) (0,0) (1,1) (x,y) 10 (x,y) html 16 0, 1, 2,..., D, E, F Hex$(16*RND) * 11 *10 C PSet (x,y),c GForeColor *11 x =16*RND 0 x < 16 x Hex$(x) 16
18 C$="#"+Hex$(16*RND)+Hex$(16*RND)+Hex$(16*RND)+Hex$(16*RND)+Hex$(16*RND)+Hex$(16*RND) C$ html GBackColor="Black" Window(0,0)-(1,1) For i=1 to 10000 x = RND y = RND If (xˆ2+yˆ2 <= 1) and ((x-1)ˆ2+(y-1)ˆ2 <=1) then C$="#"+Hex$(16*RND)+Hex$(16*RND)+Hex$(16*RND)+Hex$(16*RND)+Hex$(16*RND)+Hex$(16*RND) ForeColor = C$ PSet (x,y) if 3.3 Line Line Line (x1,y1)-(x2,y2) (x1,y1) (x2,y2) Line (x1,y1)-(x2,y2),,b (x1,y1) (x2,y2) B Box Line (x1,y1)-(x2,y2),,bf (x1,y1) (x2,y2) BF Box Fill GForeColor * 12 *12 C Line (x1,y1)-(x2,y2),c (x1,y1) (x2,y2) C
19 Line 3.1 (). GBackColor="Black" Window (-2,-2)-(2,2) GForeColor = "Cyan" Line (-2,0)-(2,0) : x Line (0,-2)-(0,2) : y GForeColor = "White" xy n 3.2 (). n n=5 GBackColor="Black" Window (-2,-2)-(2,2) GForeColor = "Cyan" Line (-2,0)-(2,0) : x Line (0,-2)-(0,2) : y GForeColor = "#555555" Circle(0,0),1 ForeColor = "White" For i=0 to n-1 x0=cos(2*pi*i/n) y0=sin(2*pi*i/n) x1=cos(2*pi*(i+1)/n) y1=sin(2*pi*(i+1)/n) Line (x0,y0)-(x1,y1) n GForeColor = "#555555" 2*Pi n (x,y) Cos(2*Pi*i/n),Sin(2*Pi*i/n) Line
20 3.4 Circle Circle Circle (x,y),r (x,y) r 16 GForeColor GForeColor 3.3 (). GBackColor="Black" Window (-2,-2)-(2,2) GForeColor = "White" For i=0 to 2 x=cos(2*pi*i/3+pi/2)*0.6 y=sin(2*pi*i/3+pi/2)*0.6 Circle(x,y),1 Window (-2,-2)-(2,2) (0, 0) 4 1 (0, 0) 0.6 2π 3 2π 3 2π i/3 i = 0 x y π/2 x=cos(2*pi*i/3+pi/2)*0.6 y=sin(2*pi*i/3+pi/2)*0.6 (x, y)
21 3.5 Paint Paint Paint (x,y) (x,y) GBorderColor GForeColor * 13 3.4 (). GBackColor="Black" Window (-2,-2)-(2,2) GForeColor = "White" For i=1 to 3 x=cos(2*pi*i/3+pi/2)*0.6 y=sin(2*pi*i/3+pi/2)*0.6 Circle(x,y),1 GBorderColor = "White" GForeColor ="#FF0000": Paint (Cos(Pi/2)*0.8,Sin(Pi/2)*0.8) GForeColor ="#00FF00": Paint (Cos(2*Pi/3+Pi/2)*0.8,Sin(2*Pi/3+Pi/2)*0.8) GForeColor ="#0000FF": Paint (Cos(2*Pi*2/3+Pi/2)*0.8,Sin(2*Pi*2/3+Pi/2)*0.8) GForeColor ="#FF00FF": Paint (Cos(Pi/3)*0.6,Sin(Pi/3)*0.6) GForeColor ="#FFFF00": Paint (Cos(2*Pi/3+Pi/3)*0.6,Sin(2*Pi/3+Pi/3)*0.6) GForeColor ="#00FFFF": Paint (Cos(2*Pi*2/3+Pi/3)*0.6,Sin(2*Pi*2/3+Pi/3)*0.6) GForeColor ="#FFFFFF": Paint (0,0) html "#FF0000" "#00FF00" "#0000FF" "#FF0000" "#00FF00""#FFFF00" "#FFFFFF" BorderColor *13
22 3.6 GLocate GPrint GPrint Graph Print GPrint GLocate Graph Locate GLocate (x,y) GPrint GForeColor = "Cyan" GLocate (-1.5,-1.5) GPrint " ()" "#FFFF00""#00FFFF""#00FF00"AND 3.5 (). GBackColor="White" Window (-2,-2)-(2,2) GForeColor = "Black" For i=1 to 3 x=cos(2*pi*i/3+pi/2)*0.6 y=sin(2*pi*i/3+pi/2)*0.6 Circle(x,y),1 GBorderColor = "Black" GForeColor ="#FFFF00": Paint (Cos(Pi/2)*0.8,Sin(Pi/2)*0.8) GForeColor ="#00FFFF": Paint (Cos(2*Pi/3+Pi/2)*0.8,Sin(2*Pi/3+Pi/2)*0.8) GForeColor ="#FF00FF": Paint (Cos(2*Pi*2/3+Pi/2)*0.8,Sin(2*Pi*2/3+Pi/2)*0.8) GForeColor ="#FF0000": Paint (Cos(Pi/3)*0.6,Sin(Pi/3)*0.6) GForeColor ="#00FF00": Paint (Cos(2*Pi/3+Pi/3)*0.6,Sin(2*Pi/3+Pi/3)*0.6) GForeColor ="#0000FF": Paint (Cos(2*Pi*2/3+Pi/3)*0.6,Sin(2*Pi*2/3+Pi/3)*0.6) GForeColor ="#000000": Paint (0,0) GForeColor = "Navy" GLocate (-1.5,-1.5) GPrint " ()"
23 4 y = f (x) x = x(t) y = y(t) 4.1 GScreen 1 : 1 2 : 1 Window * 14 x y 4.1 (). GBackColor="Navy" Window (-10,-10)-(10,10) GForeColor = "Cyan" Line (-10,0)-(10,0) : x Line (0,-10)-(0,10) : y GForeColor = "White" *14
24 4.2 pixcel xy y = f (x) x x (x, f (x)) y = sin(x) PSet 4.2 (sin(x) ). GBackColor = "Navy" Window (-10,-10)-(10,10) GForeColor = "Cyan" Line (-10,0)-(10,0) Line (0,-10)-(0,10) GForeColor = "White" For i=0 to 100 x = -10 + 2*i/10 y = Sin(x) PSet(x,y) 101 x = 10 10 100 x x = 10 + 2 i/10 y = sin(x) (x, y) * 15 201 301 201 301 *15
25 201 301 300 * 16 4.3 x 1, x 2 (x 1, f (x 1 )) (x 2, f (x 2 )) PSet Line 100 4.3 (sin(x) ). GBackColor = "Navy" Window (-10,-10)-(10,10) GForeColor = "Cyan" Line (-10,0)-(10,0) Line (0,-10)-(0,10) GForeColor = "White" For i=0 to 100-1 x1 = -10 + 2*i/10 y1 = Sin(x1) x2 = -10 + 2*(i+1)/10 y2 = Sin(x2) Line (x1,y1)-(x2,y2) x = 10 x = 10 20 100 20/100 = 2/10 i = 0 (x 1, x 2 ) = ( 10, 10 + 2/10)... i = 100 1 (x 1, x 2 ) = ( 10 + 2 99/10, 10 + 2 100/10) = (10 2/10, 20) Line 100 300 *16 π/2 tan(x)
26 20 50 For 20 50 For i=0 to 20-1 For i=0 to 50-1 x1 = -10 + 2*i/2 x1 = -10 + 2*i/5 y1 = Sin(x1) y1 = Sin(x1) x2 = -10 + 2*(i+1)/2 x2 = -10 + 2*(i+1)/5 y2 = Sin(x2) y2 = Sin(x2) Line (x1,y1)-(x2,y2) Line (x1,y1)-(x2,y2) 20 50 20 50 50 300
27 tan(x) 100 4.4 (tan(x) ). GBackColor = "Navy" Window (-10,-10)-(10,10) GForeColor = "Cyan" Line (-10,0)-(10,0) Line (0,-10)-(0,10) GForeColor = "White" For i=0 to 100-1 x1 = -10 + 2*i/10 y1 = Tan(x1) x2 = -10 + 2*(i+1)/10 y2 = Tan(x2) Line (x1,y1)-(x2,y2) tan(x)..., π/2, π/2, 3π/2,... 100 200 40001 100 400 * 17 200 40001 *17 PC
28 4.4 * 18 * 19 * 20 GWW GWH XLEFT x XRIGHT x YBOTTOM y YTOP y Function f(x) NLINES *18 *19 BASIC *20
29 4.5 (). ----------------------- GWW = 300 GWH = 300 XLEFT = -10 XRIGHT = 10 YBOTTOM = -10 NLINES = 100 Function f(x) f = Sin(x) Function ----------------------- GBackColor = "Navy" GScreen(GWW,GWH) YTOP = GWH*(XRIGHT-XLEFT)/GWW + YBOTTOM Window (XLEFT,YBOTTOM)-(XRIGHT,YTOP) GForeColor = "Cyan" Line (XRIGHT,0)-(XLEFT,0) Line (0,YBOTTOM)-(0,YTOP) GForeColor = "White" For i=0 to NLINES-1 x1 = XLEFT + (XRIGHT-XLEFT)*i/NLINES y1 = f(x1) x2 = XLEFT + (XRIGHT-XLEFT)*(i+1)/NLINES y2 = f(x2) Line (x1,y1)-(x2,y2) ---------------------------------- [----] [] Function f = * 21 4.5 4.5.1 t f (x) x(t)y(t) TSTATRTt TENDt Function x(t) Function y(t) *21 f (x) = sin(x) f = sin(x)
30 4.6 (). ----------------------- GWW = 300 GWH = 300 XLEFT = -10 XRIGHT = 10 YBOTTOM = -10 TSTART = 0 TEND = 2*Pi NLINES = 200 Function x(t) x = 8*Sin(4*t) Function Function y(t) y = 5*Sin(5*t) Function ----------------------- BackColor = "Navy" GScreen(GWW,GWH) YTOP = GWH*(XRIGHT-XLEFT)/GWW + YBOTTOM Window (XLEFT,YBOTTOM)-(XRIGHT,YTOP) ForeColor = "Cyan" Line (XRIGHT,0)-(XLEFT,0) Line (0,YBOTTOM)-(0,YTOP) ForeColor = "White" For i=0 to NLINES-1 t1 = TSTART + (TEND-TSTART)*i/NLINES x1 = x(t1) y1 = y(t1) t2 = TSTART + (TEND-TSTART)*(i+1)/NLINES x2 = x(t2) y2 = y(t2) Line (x1,y1)-(x2,y2) ---------------------------------- Function x(t)function y(t) x = 8 sin(4t) y = 5 sin(5t) x = 4 (1 + cos(t)) cos(2t) y = 4 (1 + cos(t)) sin(2t)
31 4.5.2 r = f (θ) r = x 2 + y 2 t = θ x = f (t) cos(t)y = f (t) sin(t) Function r(s) r=5*(1+cos(s)) Function Function x(t) x=r(t)*cos(t) Function Function y(t) y=r(t)*sin(t) Function Function r(s)t r = s r = cos(2s) xy 4.6 PC tbasic