Post by boggan on Dec 15, 2012 17:46:34 GMT 1
'This little proc is useful for instance when switching levels in a game, for presentations etc. Hope someone finds it useful.
Local bg As Picture
Global b As Picture
Set bg = LoadPicture(":bg2") ' A background picture, just to have something on screen!
Global scr3 As String
OpenW # 1, 0, 0, 1600, 1200, 0 'Open a window.
FullW # 1 'Make full!
PBox 0, 0, _X, 2
Get 0, 0, _X, 10, scr3
Local x As Int32
Stretch 0, 0, bg, _X, _Y
Set b = LoadPicture(":2") 'This is a 1360x1002 pattern of crisscrossing lines 1x1 pixels, file is attached!
For x = 1 To 36 'Go through the Wipes.
@wipe(x)
Stretch 0, 0, bg, _X, _Y 'Reset the background
Next x
Procedure wipe(wipe%)
RGBColor RGB(0, 0, 0)
Local kree As String
Local screenshot As String, scr1 As String, scr2 As String, scr32 As Int32, scr4 As Int32 ' String to hold screenshot!
Local breakx As Int32, breaky As Int32, b1 As Int32, b2 As Int32, b3 As Int32, b4 As Int32
Local val1 As Int32, val2 As Int32, val3 As Int32, val4 As Int32, wipe As Int32, wipe2 As Int32
Local v1 As Int32, v2 As Int32, v3 As Int32, v4 As Int32, v5 As Int32, v6 As Int32, v7 As Int32, v8 As Int32
Get 0, 0, _X, _Y, scr1 'Grab s screenshot
Select wipe% 'Choose wich type of Wipe.
Case 1 'Top half of screen UP,Bottom half=DOWN, FAST SPEED
breaky = _Y / 2 'Find out where 1/2 the screen is (Vertical)
breakx = _X / 2 'Same but horizontal
Get 0, 0, _X, breaky, scr1
val1 = breaky 'Decrease to scroll upward
Get 0, breaky + 1, _X, _Y, scr2
val2 = breaky + 1 'Increase to scroll downward.
For wipe = breaky To _Y Step 64
Sub val1, 64
Put 0, val1 - breaky, scr1
PBox 0, val1, _X, wipe
Put 0, wipe, scr2
Next wipe
Case 2'Top half of screen UP,Bottom half=DOWN, MEDIUM SPEED
breaky = _Y / 2 'Find out where 1/2 the screen is (Vertical)
breakx = _X / 2 'Same but horizontal
Get 0, 0, _X, breaky, scr1
val1 = breaky 'Decrease to scroll upward
Get 0, breaky + 1, _X, _Y, scr2
val2 = breaky + 1 'Increase to scroll downward.
For wipe = breaky To _Y Step 32
Sub val1, 32
Put 0, val1 - breaky, scr1
PBox 0, val1, _X, wipe
Put 0, wipe, scr2
Next wipe
Case 3'Top half of screen UP,Bottom half=DOWN, SLOWEST SPEED!
breaky = _Y / 2 'Find out where 1/2 the screen is (Vertical)
breakx = _X / 2 'Same but horizontal
Get 0, 0, _X, breaky, scr1
val1 = breaky 'Decrease to scroll upward
Get 0, breaky + 1, _X, _Y, scr2
val2 = breaky + 1 'Increase to scroll downward.
For wipe = breaky To _Y Step 16
Sub val1, 16
Put 0, val1 - breaky, scr1
PBox 0, val1, _X, wipe
Put 0, wipe, scr2
Next wipe
Case 4
For wipe = 0 To _Y Step 64
Put 0, wipe, scr1
PBox 0, 0, _X, wipe
Next wipe
Case 5
For wipe = 0 To _X Step 64
Put wipe, 0, scr1
PBox 0, 0, wipe - 1, _Y
Next wipe
Case 6
val1 = 0
For wipe = _X / 64 DownTo 0
Sub val1, 64
Add val3, 64
val2 = _X - val3
Put val1, 0, scr1
PBox val2, 0, _X, _Y
Next wipe
Case 7
val2 = _Y
For wipe = _Y / 64 DownTo 0
Sub val1, 64
Sub val2, 64
Put 0, val1, scr1
PBox 0, val2, _X, _Y
Next wipe
Case 8
val1 = _X / 2
val2 = _Y / 2
Local r As Int32
r = 0
Do
Add r, 4
PCircle val1, val2, r
Loop Until r => 1600
Case 9
val1 = 0
val2 = 0
For v3 = 1 To _X Step 3
If v4 < _Y
Add v4, 3
EndIf
PBox val1, val2, v3, v4
Next v3
Case 10
val1 = _X
val2 = 0
For v3 = val1 DownTo 0
Sub v3, 3
If val4 < _Y
Add val4, 3
EndIf
PBox val1, val2, v3, val4
Next v3
Case 11
val1 = _X
val2 = _Y
val4 = _Y
For v3 = val1 DownTo 0
Sub v3, 3
If val4 > 0
Sub val4, 3
EndIf
PBox val1, val2, v3, val4
Next v3
Case 15
val1 = 0
val2 = _Y
val4 = _Y
For v3 = val1 To _X Step 3
If val4 > 0
Sub val4, 3
EndIf
PBox val1, val2, v3, val4
Next v3
Case 13
Local boxsize = 1
val4 = _X + 30
val3 = _Y + 30
v1 = val4 / 15
v2 = val3 / 15
Do
Do
For v3 = 1 To _X Step v1
PBox v3 - boxsize, v4 - boxsize, v3 + boxsize, v4 + boxsize
Next v3
Add v4, v2
Loop Until v4 > _Y
Add boxsize, 1
v4 = 0
Loop Until boxsize = 90
Case 14
Local crad = 1
val4 = _X + 30
val3 = _Y + 30
v1 = val4 / 15
v2 = val3 / 15
Do
Do
For v3 = 1 To _X Step v1
PCircle v3, v4, crad
Next v3
Add v4, v2
Loop Until v4 > _Y
Add crad, 1
v4 = 0
Loop Until crad = 90
Case 12
PBox -1, -1, _X, 1
PBox -1, -1, 1, _Y
v1 = _X / 2
v2 = _Y / 2
val1 = 0
val2 = 0
val3 = _X
val4 = _Y
Local shrink As Int32
shrink = 2
For v3 = 0 To v1 Step 16
Stretch v3, val2, scr1, val3, val4
PBox v3 - 1, val2, 0, _Y
PBox v3, val2, _X, 0
PBox 0, _Y - 1, _X, val4 + v3
PBox v3 + val3, 0, _X, _Y
Add val2, 16
Sub val3, 32
Sub val4, 24
Next v3
Case 16
v1 = _X / 2
v2 = -200
v3 = _Y + 200
For val1 = 1 To 900 Step 4
PEllipse v1, v2, 1600, val1
PEllipse v1, v3, 1600, val1
Next val1
Case 17
v1 = _X / 2
v2 = _Y / 2
v3 = _X / 2
v4 = _Y / 2
For val1 = 1 To _X / 4
Sub v1, 4
Sub v2, 4
Add v3, 4
Add v4, 4
PRBox v1, v2, v3, v4
Next val1
Case 18
v1 = -1
v2 = -1
v3 = _X
v4 = _Y
v5 = _X
v6 = _Y
v7 = _X
v8 = -1
For val1 = 1 To _X / 4
Add val2, 4
Add val3, 3
Sub v5, 4
Sub v6, 3
Sub v7, 4
Add v8, 3
PRBox v1, v2, val2, val3
PRBox _X, -1, v7, v8
PRBox v3, v4, v5, v6
PRBox _X, _Y, v5, v6
PRBox -1, _Y, val2, _Y - val3
Next val1
Case 19
For v8 = 1 To _X + 1 Step 4
PBox 0, 0, v8, _Y
Next v8
Case 20
v7 = _X + 1
For v8 = 0 To _X Step 4
Sub v7, 4
PBox _X, 0, v7, _Y
Next v8
Case 21
For v1 = 1 To _Y + 4 Step 4
PBox 0, 0, _X, v1
Next v1
Case 22
v2 = _Y
For v1 = 1 To _Y Step 4
Sub v2, 4
PBox 0, _Y, _X, v2
Next v1
Case 23
For v1 = 1 To _X Step 4
PBox 0, 0, v1, _Y
Next v1
Case 24
For v1 = 1 To _X + 300 Step 6
PCircle 0, 0, v1
Next v1
Case 25
For v1 = 1 To _X + 300 Step 6
PCircle _X, _Y, v1
Next v1
Case 26
For v1 = 1 To _X + 300 Step 6
PCircle _X, 0, v1
Next v1
Case 27
For v1 = 1 To _X + 300 Step 6
PCircle 0, _Y, v1
Next v1
Case 28
val3 = 16
Local counter As Int32, scrnow As String, chunk As Int32, downsize As Int32
val1 = _X / val3
chunk = val1
v1 = 0
v2 = 0
v3 = _X
v4 = val1
Do
Add counter, 1
Get v1, v2, v3, v4, scrnow
downsize = v4
Do
Put 0, downsize - chunk, scrnow
PBox 0, v4, _X, downsize
Sub downsize, 36
Loop Until downsize =< -80
Add v4, chunk
Add v2, chunk
Loop Until counter = val3
Case 29
v2 = 3200
v3 = 2600
RGBColor RGB(0, 0, 0)
Do
Sub v2, 32
Sub v3, 24
Stretch 1, 1, b, v2, v3, SRCPAINT
Loop Until v2 =< 2000
Case 30
v2 = 3200
v3 = 2600
RGBColor RGB(0, 0, 0)
Do
Sub v2, 32
Sub v3, 24
Stretch 1, 1, b, v2, v3, SRCINVERT
Loop Until v2 =< 2000
v4 = _Y
Do
Sub v4, 4
PBox 0, _Y, _X, v4
Loop Until v4 =< 0
Case 31
v1 = _X / 2
v2 = _Y / 2
Do
Add v4, 1
Add v3, 1
PEllipse v1, v2, v3, v4
Loop Until v3 => 100
Do
Add v4, 3
Add v3, 1
PEllipse v1, v2, v3, v4
Loop Until v4 => 200
Do
Add v4, 1
Add v3, 3
PEllipse v1, v2, v3, v4
Loop Until v3 > 1200
Case 32
v2 = _X
v3 = _Y
For v1 = 1 To _Y / 24
Sub v3, 24
Stretch 0, 0, scr1, v2, v3
PBox 0, _Y, _X, v3
Next v1
Case 33
v2 = _X + 32
v3 = _Y + 32
For v1 = 1 To _X / 24
Sub v2, 23
Stretch 0, 0, scr1, v2, v3
PBox _X, 0, v2, v3
Next v1
Case 34
v1 = 0
v2 = -50
v3 = -300
v4 = -550
v5 = -800
v6 = -1050
v7 = _Y / 6
Do
PBox v1, val2, val3, val4 + v7
PBox v2, val2 + v7, val3, val4 + v7 + v7
PBox v3, val2 + v7 + v7, val3, val4 + v7 + v7 + v7
PBox v4, val2 + v7 + v7 + v7, val3, val4 + v7 + v7 + v7 + v7
PBox v5, val2 + v7 + v7 + v7 + v7, val3, val4 + v7 + v7 + v7 + v7 + v7
PBox v6, val2 + v7 + v7 + v7 + v7 + v7, val3, val4 + v7 + v7 + v7 + v7 + v7 + v7
Add v1, 4
Add v2, 4
Add v3, 4
Add v4, 4
Add v5, 4
Add v6, 4
Loop Until v6 => _X
Case 35
v1 = 0
v2 = 50
For v3 = 1 To _Y Step 50
For v5 = 1 To 2000000
Next v5
PBox 0, v3, _X, v3 + 20
Next v3
For v3 = -25 To _Y Step 25
For v5 = 1 To 2000000
Next v5
PBox 0, v3, _X, v3 + 40
Next v3
PBox 0, 0, _X, _Y
Case 36
v3 = _X / 2
v4 = _Y / 2
Local rn%, rd
For rn% = 1 To 9000 Step 3
v1 = Sin(rd) * rd + _X / 2
v2 = Cos(rd) * rd + _Y / 2
PBox v1, v2, v1 + 3 + rd / 28, v2 + 3 + rd / 28
Add rd, .2
Next rn%
rd = 0
For rn% = 1 To 18000 Step 2
v1 = Sin(rd) * rd + _X / 2
v2 = Cos(rd) * rd + _Y / 2
PBox v1, v2, v1 + 3 + rd / 100, v2 + 3 + rd
Add rd, .1
Next rn%
EndSelect
For rn% = 1 To _X / 2 Step 8
PCircle v3, v4, rn%
Next rn%
RGBColor RGB(255, 255, 255)
Return
Local bg As Picture
Global b As Picture
Set bg = LoadPicture(":bg2") ' A background picture, just to have something on screen!
Global scr3 As String
OpenW # 1, 0, 0, 1600, 1200, 0 'Open a window.
FullW # 1 'Make full!
PBox 0, 0, _X, 2
Get 0, 0, _X, 10, scr3
Local x As Int32
Stretch 0, 0, bg, _X, _Y
Set b = LoadPicture(":2") 'This is a 1360x1002 pattern of crisscrossing lines 1x1 pixels, file is attached!
For x = 1 To 36 'Go through the Wipes.
@wipe(x)
Stretch 0, 0, bg, _X, _Y 'Reset the background
Next x
Procedure wipe(wipe%)
RGBColor RGB(0, 0, 0)
Local kree As String
Local screenshot As String, scr1 As String, scr2 As String, scr32 As Int32, scr4 As Int32 ' String to hold screenshot!
Local breakx As Int32, breaky As Int32, b1 As Int32, b2 As Int32, b3 As Int32, b4 As Int32
Local val1 As Int32, val2 As Int32, val3 As Int32, val4 As Int32, wipe As Int32, wipe2 As Int32
Local v1 As Int32, v2 As Int32, v3 As Int32, v4 As Int32, v5 As Int32, v6 As Int32, v7 As Int32, v8 As Int32
Get 0, 0, _X, _Y, scr1 'Grab s screenshot
Select wipe% 'Choose wich type of Wipe.
Case 1 'Top half of screen UP,Bottom half=DOWN, FAST SPEED
breaky = _Y / 2 'Find out where 1/2 the screen is (Vertical)
breakx = _X / 2 'Same but horizontal
Get 0, 0, _X, breaky, scr1
val1 = breaky 'Decrease to scroll upward
Get 0, breaky + 1, _X, _Y, scr2
val2 = breaky + 1 'Increase to scroll downward.
For wipe = breaky To _Y Step 64
Sub val1, 64
Put 0, val1 - breaky, scr1
PBox 0, val1, _X, wipe
Put 0, wipe, scr2
Next wipe
Case 2'Top half of screen UP,Bottom half=DOWN, MEDIUM SPEED
breaky = _Y / 2 'Find out where 1/2 the screen is (Vertical)
breakx = _X / 2 'Same but horizontal
Get 0, 0, _X, breaky, scr1
val1 = breaky 'Decrease to scroll upward
Get 0, breaky + 1, _X, _Y, scr2
val2 = breaky + 1 'Increase to scroll downward.
For wipe = breaky To _Y Step 32
Sub val1, 32
Put 0, val1 - breaky, scr1
PBox 0, val1, _X, wipe
Put 0, wipe, scr2
Next wipe
Case 3'Top half of screen UP,Bottom half=DOWN, SLOWEST SPEED!
breaky = _Y / 2 'Find out where 1/2 the screen is (Vertical)
breakx = _X / 2 'Same but horizontal
Get 0, 0, _X, breaky, scr1
val1 = breaky 'Decrease to scroll upward
Get 0, breaky + 1, _X, _Y, scr2
val2 = breaky + 1 'Increase to scroll downward.
For wipe = breaky To _Y Step 16
Sub val1, 16
Put 0, val1 - breaky, scr1
PBox 0, val1, _X, wipe
Put 0, wipe, scr2
Next wipe
Case 4
For wipe = 0 To _Y Step 64
Put 0, wipe, scr1
PBox 0, 0, _X, wipe
Next wipe
Case 5
For wipe = 0 To _X Step 64
Put wipe, 0, scr1
PBox 0, 0, wipe - 1, _Y
Next wipe
Case 6
val1 = 0
For wipe = _X / 64 DownTo 0
Sub val1, 64
Add val3, 64
val2 = _X - val3
Put val1, 0, scr1
PBox val2, 0, _X, _Y
Next wipe
Case 7
val2 = _Y
For wipe = _Y / 64 DownTo 0
Sub val1, 64
Sub val2, 64
Put 0, val1, scr1
PBox 0, val2, _X, _Y
Next wipe
Case 8
val1 = _X / 2
val2 = _Y / 2
Local r As Int32
r = 0
Do
Add r, 4
PCircle val1, val2, r
Loop Until r => 1600
Case 9
val1 = 0
val2 = 0
For v3 = 1 To _X Step 3
If v4 < _Y
Add v4, 3
EndIf
PBox val1, val2, v3, v4
Next v3
Case 10
val1 = _X
val2 = 0
For v3 = val1 DownTo 0
Sub v3, 3
If val4 < _Y
Add val4, 3
EndIf
PBox val1, val2, v3, val4
Next v3
Case 11
val1 = _X
val2 = _Y
val4 = _Y
For v3 = val1 DownTo 0
Sub v3, 3
If val4 > 0
Sub val4, 3
EndIf
PBox val1, val2, v3, val4
Next v3
Case 15
val1 = 0
val2 = _Y
val4 = _Y
For v3 = val1 To _X Step 3
If val4 > 0
Sub val4, 3
EndIf
PBox val1, val2, v3, val4
Next v3
Case 13
Local boxsize = 1
val4 = _X + 30
val3 = _Y + 30
v1 = val4 / 15
v2 = val3 / 15
Do
Do
For v3 = 1 To _X Step v1
PBox v3 - boxsize, v4 - boxsize, v3 + boxsize, v4 + boxsize
Next v3
Add v4, v2
Loop Until v4 > _Y
Add boxsize, 1
v4 = 0
Loop Until boxsize = 90
Case 14
Local crad = 1
val4 = _X + 30
val3 = _Y + 30
v1 = val4 / 15
v2 = val3 / 15
Do
Do
For v3 = 1 To _X Step v1
PCircle v3, v4, crad
Next v3
Add v4, v2
Loop Until v4 > _Y
Add crad, 1
v4 = 0
Loop Until crad = 90
Case 12
PBox -1, -1, _X, 1
PBox -1, -1, 1, _Y
v1 = _X / 2
v2 = _Y / 2
val1 = 0
val2 = 0
val3 = _X
val4 = _Y
Local shrink As Int32
shrink = 2
For v3 = 0 To v1 Step 16
Stretch v3, val2, scr1, val3, val4
PBox v3 - 1, val2, 0, _Y
PBox v3, val2, _X, 0
PBox 0, _Y - 1, _X, val4 + v3
PBox v3 + val3, 0, _X, _Y
Add val2, 16
Sub val3, 32
Sub val4, 24
Next v3
Case 16
v1 = _X / 2
v2 = -200
v3 = _Y + 200
For val1 = 1 To 900 Step 4
PEllipse v1, v2, 1600, val1
PEllipse v1, v3, 1600, val1
Next val1
Case 17
v1 = _X / 2
v2 = _Y / 2
v3 = _X / 2
v4 = _Y / 2
For val1 = 1 To _X / 4
Sub v1, 4
Sub v2, 4
Add v3, 4
Add v4, 4
PRBox v1, v2, v3, v4
Next val1
Case 18
v1 = -1
v2 = -1
v3 = _X
v4 = _Y
v5 = _X
v6 = _Y
v7 = _X
v8 = -1
For val1 = 1 To _X / 4
Add val2, 4
Add val3, 3
Sub v5, 4
Sub v6, 3
Sub v7, 4
Add v8, 3
PRBox v1, v2, val2, val3
PRBox _X, -1, v7, v8
PRBox v3, v4, v5, v6
PRBox _X, _Y, v5, v6
PRBox -1, _Y, val2, _Y - val3
Next val1
Case 19
For v8 = 1 To _X + 1 Step 4
PBox 0, 0, v8, _Y
Next v8
Case 20
v7 = _X + 1
For v8 = 0 To _X Step 4
Sub v7, 4
PBox _X, 0, v7, _Y
Next v8
Case 21
For v1 = 1 To _Y + 4 Step 4
PBox 0, 0, _X, v1
Next v1
Case 22
v2 = _Y
For v1 = 1 To _Y Step 4
Sub v2, 4
PBox 0, _Y, _X, v2
Next v1
Case 23
For v1 = 1 To _X Step 4
PBox 0, 0, v1, _Y
Next v1
Case 24
For v1 = 1 To _X + 300 Step 6
PCircle 0, 0, v1
Next v1
Case 25
For v1 = 1 To _X + 300 Step 6
PCircle _X, _Y, v1
Next v1
Case 26
For v1 = 1 To _X + 300 Step 6
PCircle _X, 0, v1
Next v1
Case 27
For v1 = 1 To _X + 300 Step 6
PCircle 0, _Y, v1
Next v1
Case 28
val3 = 16
Local counter As Int32, scrnow As String, chunk As Int32, downsize As Int32
val1 = _X / val3
chunk = val1
v1 = 0
v2 = 0
v3 = _X
v4 = val1
Do
Add counter, 1
Get v1, v2, v3, v4, scrnow
downsize = v4
Do
Put 0, downsize - chunk, scrnow
PBox 0, v4, _X, downsize
Sub downsize, 36
Loop Until downsize =< -80
Add v4, chunk
Add v2, chunk
Loop Until counter = val3
Case 29
v2 = 3200
v3 = 2600
RGBColor RGB(0, 0, 0)
Do
Sub v2, 32
Sub v3, 24
Stretch 1, 1, b, v2, v3, SRCPAINT
Loop Until v2 =< 2000
Case 30
v2 = 3200
v3 = 2600
RGBColor RGB(0, 0, 0)
Do
Sub v2, 32
Sub v3, 24
Stretch 1, 1, b, v2, v3, SRCINVERT
Loop Until v2 =< 2000
v4 = _Y
Do
Sub v4, 4
PBox 0, _Y, _X, v4
Loop Until v4 =< 0
Case 31
v1 = _X / 2
v2 = _Y / 2
Do
Add v4, 1
Add v3, 1
PEllipse v1, v2, v3, v4
Loop Until v3 => 100
Do
Add v4, 3
Add v3, 1
PEllipse v1, v2, v3, v4
Loop Until v4 => 200
Do
Add v4, 1
Add v3, 3
PEllipse v1, v2, v3, v4
Loop Until v3 > 1200
Case 32
v2 = _X
v3 = _Y
For v1 = 1 To _Y / 24
Sub v3, 24
Stretch 0, 0, scr1, v2, v3
PBox 0, _Y, _X, v3
Next v1
Case 33
v2 = _X + 32
v3 = _Y + 32
For v1 = 1 To _X / 24
Sub v2, 23
Stretch 0, 0, scr1, v2, v3
PBox _X, 0, v2, v3
Next v1
Case 34
v1 = 0
v2 = -50
v3 = -300
v4 = -550
v5 = -800
v6 = -1050
v7 = _Y / 6
Do
PBox v1, val2, val3, val4 + v7
PBox v2, val2 + v7, val3, val4 + v7 + v7
PBox v3, val2 + v7 + v7, val3, val4 + v7 + v7 + v7
PBox v4, val2 + v7 + v7 + v7, val3, val4 + v7 + v7 + v7 + v7
PBox v5, val2 + v7 + v7 + v7 + v7, val3, val4 + v7 + v7 + v7 + v7 + v7
PBox v6, val2 + v7 + v7 + v7 + v7 + v7, val3, val4 + v7 + v7 + v7 + v7 + v7 + v7
Add v1, 4
Add v2, 4
Add v3, 4
Add v4, 4
Add v5, 4
Add v6, 4
Loop Until v6 => _X
Case 35
v1 = 0
v2 = 50
For v3 = 1 To _Y Step 50
For v5 = 1 To 2000000
Next v5
PBox 0, v3, _X, v3 + 20
Next v3
For v3 = -25 To _Y Step 25
For v5 = 1 To 2000000
Next v5
PBox 0, v3, _X, v3 + 40
Next v3
PBox 0, 0, _X, _Y
Case 36
v3 = _X / 2
v4 = _Y / 2
Local rn%, rd
For rn% = 1 To 9000 Step 3
v1 = Sin(rd) * rd + _X / 2
v2 = Cos(rd) * rd + _Y / 2
PBox v1, v2, v1 + 3 + rd / 28, v2 + 3 + rd / 28
Add rd, .2
Next rn%
rd = 0
For rn% = 1 To 18000 Step 2
v1 = Sin(rd) * rd + _X / 2
v2 = Cos(rd) * rd + _Y / 2
PBox v1, v2, v1 + 3 + rd / 100, v2 + 3 + rd
Add rd, .1
Next rn%
EndSelect
For rn% = 1 To _X / 2 Step 8
PCircle v3, v4, rn%
Next rn%
RGBColor RGB(255, 255, 255)
Return