> .width 600 > .height 600 > x 300 > y 150 >>Beautiful!
>DEFINE WINDOW Superwnd FROM 10,10 TO 50, 50 NAME mywnd > .WIDTH=500 > .HEIGHT=500 > xdir = 300 > ydir = 150 > > IF m.x > 400 OR m.x < 100 > > IF m.y > 400 OR m.y < 25 >>
SET ESCAPE ON ON ESCAPE DO iquit *Window Dimensions LOCAL lnRow1, lnCol1, lnRow2, lnCol2 lnRow1 = 10 lnCol1 = 10 lnRow2 = 30 lnCol2 = 30 *mywnd dimensions LOCAL lnWidth, lnHeight lnWidth = 600 lnHeight = 600 *Distance between consecutive circles LOCAL xDir, yDir xdir = 1 ydir = 1 *Initial starting point. LOCAL x,y x=300 y=150 *Initial Starting Angle LOCAL Angle Angle = 0 *Bounce boundaries LOCAL lnMinX, lnMaxX, lnMinY, lnMaxY lnMinX = 100 lnMaxX = 200 lnMinY = 100 lnMaxY = 200 *Precalculate COS and SIN LOCAL lnI LOCAL ARRAY laCOS[360 + 270], laSIN[360 + 270] FOR lnI = 1 TO 360 + 270 laCOS[m.lnI] = COS(DTOR(m.lnI)) laSIN[m.lnI] = SIN(DTOR(m.lnI)) ENDFOR lnI DEFINE WINDOW Superwnd FROM m.lnRow1,m.lnCol1 TO m.lnRow2, m.lnCol2 NAME mywnd WITH mywnd .WIDTH = m.lnWidth .HEIGHT = m.lnHeight .AUTOCENTER=.T. SHOW WINDOW Superwnd SET CURSOR OFF ACTIVATE WINDOW Superwnd ACTIVATE SCREEN WAIT WINDOW NOWA "Hit ESC to terminate..." DO WHILE .T. .FORECOLOR=65535 .CIRCLE(50, m.x + m.y * laCOS[m.Angle + 1], m.x + m.y * laSIN[m.Angle + 1]) .FORECOLOR=65408 .CIRCLE(50, m.x - m.y * laCOS[m.Angle + 1], m.x - m.y * laSIN[m.Angle + 1]) .FORECOLOR=16711680 .CIRCLE(50, m.x + m.y * laCOS[m.Angle + 91], m.x + m.y * laSIN[m.Angle + 91]) .FORECOLOR=255 .CIRCLE(50, m.x + m.y * laCOS[m.Angle + 271], m.x + m.y * laSIN[m.Angle + 271]) *Advance drawing angle. IF m.Angle = 359 Angle = 0 ELSE Angle = m.Angle + 1 ENDIF *Bounce the circles off the sides of the bounce area *by moving the initial center point around. IF m.x < m.lnMinX OR m.x > m.lnMaxX xdir = -1 * m.xdir ENDIF x = m.x + m.xdir IF m.y < m.lnMinY OR m.y > m.lnMaxY ydir = -1 * m.ydir ENDIF y = m.y + m.ydir ENDDO ENDWITH DO iquit *------------- PROCEDURE iquit mywnd.CLS RELEASE mywnd RELEASE WINDOWS Superwnd SET CURSOR ON ON ESCAPE WAIT CLEAR CANCEL