Microsoft Small Basic

Program Listing: ZNR597
GraphicsWindow.Width = 410
GraphicsWindow.Height =260
GraphicsWindow.Title = "アクアリウム"

'水
For i = 1 To 50
colorset = GraphicsWindow.GetColorFromRGB(50, 200 - 3*i, 255 - 2*i)
GraphicsWindow.BrushColor = colorset
GraphicsWindow.PenColor = colorset
mizu[i] = Shapes.AddRectangle(400, 5)
Controls.Move(mizu[i], 5, 5*i)
EndFor

'水槽の底の土
GraphicsWindow.BrushColor = "DimGray"
GraphicsWindow.PenColor = "DimGray"
sikakukeisita = Shapes.AddRectangle(400, 30)
Controls.Move(sikakukeisita, 5, 230)

'樹木
GraphicsWindow.BrushColor = "RosyBrown"
GraphicsWindow.PenColor = "RosyBrown"
wood[1] = Shapes.AddRectangle(380, 50)
Shapes.Rotate(wood[1], 10)
Shapes.Move(wood[1], 20, 180)
wood[2] = Shapes.AddRectangle(100, 20)
Shapes.Rotate(wood[2], 50)
Shapes.Move(wood[2], 150, 150)
wood[3] = Shapes.AddRectangle(80, 10)
Shapes.Rotate(wood[3], 120)
Shapes.Move(wood[3], 180, 110)
wood[4] = Shapes.AddRectangle(60, 5)
Shapes.Rotate(wood[4], 100)
Shapes.Move(wood[4], 180, 110)
wood[5] = Shapes.AddRectangle(90, 12)
Shapes.Rotate(wood[5], 70)
Shapes.Move(wood[5], 290, 180)

'藻
GraphicsWindow.BrushColor = "MediumAquamarine"
GraphicsWindow.PenColor = "MediumAquamarine"

For i = 1 To 5
kaisou_a[i] = Shapes.AddEllipse(15, 40)
Controls.Move(kaisou_a[i], 50, 250 - 35*i)
EndFor

For i = 1 To 8
kaisou_b[i] = Shapes.AddEllipse(20, 35)
Controls.Move(kaisou_b[i], 100, 250 - 30*i)
EndFor

For i = 1 To 4
kaisou_c[i] = Shapes.AddEllipse(10, 25)
Controls.Move(kaisou_c[i], 300, 250 - 20*i)
EndFor

GraphicsWindow.BrushColor = "YellowGreen"
GraphicsWindow.PenColor = "YellowGreen"

For i = 1 To 6
kaisou_d[i] = Shapes.AddEllipse(10, 30)
Controls.Move(kaisou_d[i], 70, 250 - 25*i)
EndFor

For i = 1 To 7
kaisou_e[i] = Shapes.AddEllipse(30, 35)
Controls.Move(kaisou_e[i], 150, 250 - 30*i)
EndFor

For i = 1 To 8
kaisou_f[i] = Shapes.AddEllipse(20, 35)
Controls.Move(kaisou_f[i], 350, 250 - 30*i)
EndFor

'石
For i = 1 To 30
GraphicsWindow.PenColor = "DarkGray"
GraphicsWindow.BrushColor = "DarkGray"
ishi[i] = Shapes.AddEllipse(30 + Math.GetRandomNumber(10), 20 + Math.GetRandomNumber(10))
Controls.Move(ishi[i], -20 + Math.GetRandomNumber(450), 220 + Math.GetRandomNumber(20))
EndFor

For i = 1 To 20
GraphicsWindow.PenColor = "Gray"
GraphicsWindow.BrushColor = "Gray"
ishi[i] = Shapes.AddEllipse(30 + Math.GetRandomNumber(10), 20 + Math.GetRandomNumber(10))
Controls.Move(ishi[i], -20 + Math.GetRandomNumber(450), 220 + Math.GetRandomNumber(20))
EndFor

'水槽の枠
GraphicsWindow.BrushColor = "DarkSlateGray"
GraphicsWindow.PenColor = "DarkSlateGray"
waku1 = Shapes.AddRectangle(5, 260)
waku2 = Shapes.AddRectangle(405, 5)
waku3 = Shapes.AddRectangle(5, 260)
Controls.Move(waku2, 0, 255)
Controls.Move(waku3, 405, 0)

'泡
GraphicsWindow.BrushColor = "White"
GraphicsWindow.PenColor = "White"
awa[1] = Shapes.AddEllipse(5, 5)
awa[2] = Shapes.AddEllipse(7, 7)
awa[3] = Shapes.AddEllipse(6, 6)
awa[4] = Shapes.AddEllipse(7, 7)
awa[5] = Shapes.AddEllipse(4, 4)
awa[6] = Shapes.AddEllipse(7, 7)
awa[7] = Shapes.AddEllipse(5, 5)
awa[8] = Shapes.AddEllipse(6, 6)
awa[9] = Shapes.AddEllipse(8, 8)

'魚
GraphicsWindow.BrushColor = "LightBlue"
GraphicsWindow.PenColor = "LightBlue"
sakana_a[1] = Shapes.AddEllipse(60, 20)
sakana_a[2] = Shapes.AddTriangle(0, 10, 5, 0, 5, 20)
sakana_a[3] = Shapes.AddTriangle(0, 10, -5, 0, -5, 20)
Shapes.HideShape(sakana_a[3])
GraphicsWindow.PenColor = "White"
GraphicsWindow.BrushColor = "DarkSlateGray"
sakana_a[4] = Shapes.AddEllipse(8, 8)
Controls.Move(sakana_a[1], 0+200, 0+100)
Controls.Move(sakana_a[2], 60+200, 0+100)
Controls.Move(sakana_a[4], 8+200, 5+100)
Shapes.Animate(sakana_a[1], 0+100, 0+100, 3000)
Shapes.Animate(sakana_a[2], 60+100, 0+100, 3000)
Shapes.Animate(sakana_a[4], 8+100, 5+100, 3000)

GraphicsWindow.BrushColor = "DarkBlue"
GraphicsWindow.PenColor = "DarkBlue"
sakana_b[1] = Shapes.AddEllipse(60, 20)
sakana_b[2] = Shapes.AddTriangle(0, 10, 5, 0, 5, 20)
sakana_b[3] = Shapes.AddTriangle(0, 10, -5, 0, -5, 20)
Shapes.HideShape(sakana_b[3])
GraphicsWindow.PenColor = "White"
GraphicsWindow.BrushColor = "DarkSlateGray"
sakana_b[4] = Shapes.AddEllipse(8, 8)
Controls.Move(sakana_b[1], 0+280, 0+70)
Controls.Move(sakana_b[2], 60+280, 0+70)
Controls.Move(sakana_b[4], 8+280, 5+70)
Shapes.Animate(sakana_b[1], 0+120, 0+70, 3000)
Shapes.Animate(sakana_b[2], 60+120, 0+70, 3000)
Shapes.Animate(sakana_b[4], 8+120, 5+70, 3000)

'魚と泡のループ
Timer.Tick = Move
Timer.Interval = 5000
Sub Move
Shapes.HideShape(sakana_a[2])
Shapes.ShowShape(sakana_a[3])
Controls.Move(sakana_a[1], 0+100, 0+100)
Controls.Move(sakana_a[3], 0+100, 0+100)
Controls.Move(sakana_a[4], 45+100, 5+100)
Shapes.Animate(sakana_a[1], 0+200, 0+100, 2500)
Shapes.Animate(sakana_a[3], 0+200, 0+100, 2500)
Shapes.Animate(sakana_a[4], 45+200, 5+100, 2500)

Shapes.HideShape(sakana_b[2])
Shapes.ShowShape(sakana_b[3])
Controls.Move(sakana_b[1], 0+120, 0+70)
Controls.Move(sakana_b[3], 0+120, 0+70)
Controls.Move(sakana_b[4], 45+120, 5+70)
Shapes.Animate(sakana_b[1], 0+280, 0+70, 2000)
Shapes.Animate(sakana_b[3], 0+280, 0+70, 2000)
Shapes.Animate(sakana_b[4], 45+280, 5+70, 2000)

Controls.Move(awa[1], 20, 250)
Shapes.Animate(awa[1], 20, -5, 3000)
Program.Delay(500)
Controls.Move(awa[2], 40, 250)
Shapes.Animate(awa[2], 40, -5, 2000)
Program.Delay(800)
Controls.Move(awa[3], 20, 250)
Shapes.Animate(awa[3], 20, -5, 1500)
Controls.Move(awa[4], 30, 250)
Shapes.Animate(awa[4], 30, -5, 2400)
Program.Delay(500)
Controls.Move(awa[5], 50, 250)
Shapes.Animate(awa[5], 50, -5, 2900)
Controls.Move(awa[6], 10, 250)
Shapes.Animate(awa[6], 10, -5, 1000)
Program.Delay(800)
Controls.Move(awa[7], 25, 250)
Shapes.Animate(awa[7], 25, -5, 1400)

Shapes.HideShape(sakana_a[3])
Shapes.ShowShape(sakana_a[2])
Controls.Move(sakana_a[1], 0+200, 0+100)
Controls.Move(sakana_a[2], 60+200, 0+100)
Controls.Move(sakana_a[4], 8+200, 5+100)
Shapes.Animate(sakana_a[1], 0+100, 0+100, 1500)
Shapes.Animate(sakana_a[2], 60+100, 0+100, 1500)
Shapes.Animate(sakana_a[4], 8+100, 5+100, 1500)
Shapes.ShowShape(sakana_b[2])
Shapes.HideShape(sakana_b[3])
Controls.Move(sakana_b[1], 0+280, 0+70)
Controls.Move(sakana_b[2], 60+280, 0+70)
Controls.Move(sakana_b[4], 45-40+280, 5+70)
Shapes.Animate(sakana_b[1], 0+120, 0+70, 2000)
Shapes.Animate(sakana_b[2], 60+120, 0+70, 2000)
Shapes.Animate(sakana_b[4], 45-40+120, 5+70, 2000)
Program.Delay(500)
Controls.Move(awa[8], 45, 250)
Shapes.Animate(awa[8], 45, -5, 1800)
Controls.Move(awa[9], 105, 250)
Shapes.Animate(awa[9], 105, -5, 1200)
EndSub