Microsoft Small Basic

Program Listing: SMB798
' Cloud 0.1
' Copyright (c) 2012 Nonki Takahashi. All rights reserved.
'
' History:
' 0.1 2012/11/27 Created.
'
GraphicsWindow.Title = "Cloud 0.1"
GraphicsWindow.BackgroundColor = "SkyBlue"
GraphicsWindow.PenWidth = 0
GraphicsWindow.BrushColor = "White"
MAX = 50
For i = 1 To MAX
size = Math.GetRandomNumber(25)
cloud[i]["obj"] = Shapes.AddEllipse(25 + size, 25 + size)
radiusX = 100 - Math.GetRandomNumber(200)
radiusY = 50 - Math.GetRandomNumber(100)
angle = Math.GetRadians(Math.GetRandomNumber(360))
cloud[i]["x"] = 100 + radiusX * Math.Sin(angle)
cloud[i]["y"] = 100 + radiusY * Math.Cos(angle)
cloud[i]["scale"] = 1
cloud[i]["opacity"] = 90
Shapes.Move(cloud[i]["obj"], cloud[i]["x"], cloud[i]["y"])
Shapes.Move(cloud[i]["obj"], cloud[i]["x"], cloud[i]["y"])
Shapes.Zoom(cloud[i]["obj"], cloud[i]["scale"], cloud[i]["scale"])
Shapes.SetOpacity(cloud[i]["obj"], cloud[i]["opacity"])
EndFor
Timer.Interval = 1000
Timer.Tick = OnTick

Sub OnTick
Timer.Pause()
For i = 1 To MAX
cloud[i]["x"] = cloud[i]["x"] + Math.GetRandomNumber(5)
cloud[i]["y"] = cloud[i]["y"] + 5 - Math.GetRandomNumber(10)
cloud[i]["scale"] = cloud[i]["scale"] * 1.005
cloud[i]["opacity"] = cloud[i]["opacity"] * 0.98
Shapes.Move(cloud[i]["obj"], cloud[i]["x"], cloud[i]["y"])
Shapes.Move(cloud[i]["obj"], cloud[i]["x"], cloud[i]["y"])
Shapes.Zoom(cloud[i]["obj"], cloud[i]["scale"], cloud[i]["scale"])
Shapes.SetOpacity(cloud[i]["obj"], cloud[i]["opacity"])
EndFor
Timer.Resume()
EndSub