Code: Select all
SCREEN 800,600
Type RAIN
Field x#
Field y#
Field fs
Field angle
EndType
Repeat
If drops < 200 // Sateen volyymin saa säädettyä tässä, eli onko sade ennemmin tihkua vaiko "saavista kaatamalla".
drop.RAIN = New(RAIN) // Luodaan uusi jäsen, eli pisara.
drop\x# = Rand(0,ScreenWidth()) // Pisaran alkupositio x-akselilla.
drop\y# = 0 // Pisaran alkupositio y-akselilla.
drop\fs = Rand(14,16) // Putoamisnopeus.
drop\angle = Rand(100,110) // Ja tässä säädetään sateen kulma.
drops = drops + 1
EndIf
For drop.RAIN = Each RAIN // Käydään kaikki jäsenet, eli pisarat läpi.
drop\x# = drop\x# + Cos(drop\angle)*drop\fs // Pisaran uusi sijainti x-akselilla.
drop\y# = drop\y# + Sin(drop\angle)*drop\fs // Pisaran uusi sijainti y-akselilla.
Color 100,100,255 // Sateen väri.
Line drop\x#,drop\y#,drop\x#+Cos(drop\angle)*drop\fs,drop\y#+Sin(drop\angle)*drop\fs // Piirretään pisara.
If drop\y# > Rand(400,600) // Jos pisara osuu maahan... (ja missä kohtaa pisara osuu maahan)
drop\x# = Rand(0,ScreenWidth()) //...niin asetetaan pisaralle uusi vaakasijainti...
drop\y# = 0 //...ja takaisin ylös.
EndIf
If drop\x# < 0 Then drop\x# = ScreenWidth() // Mikäli mennään ruudun reunojen yli, asetetaan pisaran vaakasijainniksi ruudun toinen pää.
If drop\x# > ScreenWidth() Then drop\x# = 0 // Sama kuin ylempi, mutta toisinpäin.
Next drop // Siirrytään seuraavaan jäseneen.
DrawScreen
Until KeyHit(1)
Seuraaminen oli hyvin hankalaa, koska väkisinkin silmät jumittu yhteen pisaraan, tai jotain... Sama juttu kuin katselisit ohi meneviä puita auton tai minkä tahansa kyydistä.MrMonday wrote:
Jep, kyllä tämä taustan vaatii, sillä eihän tästä tällaisenaan ole sitäkään vähää iloa. Kun taustalla tapahtuu olennainen, ei huomio keskity yksittäisiin pisaroihin. Mutta ei tämä muutenkaan mitenkään kaunein mahdollinen ole, vaan nykyisellään cb ei kummoista silmäkarkkia mahdollista, joten toteutus on tylsä piirtokomennoilla tapahtuva räpellys. Jos toteuttaisi kuvilla, niin että maahan osuessaan pyöräytettäisiin joku roiskahdus-animaatio, niin voisi jo näyttää joltain, mutta sitten kun muun pelin pitäisi vielä pyöriä taustalla, niin eipä taida kuvat tulla kysymykseen. En tosin tiedä, että millä tolalla cbE on nykyään, josko sillä saisi jo nättiäkin jälkeä aikaan ilman suorituskykyongelmia. Ja tehokkaalla optimoinnilla saa toki myös paljon aikaan.Misthema wrote:Seuraaminen oli hyvin hankalaa, koska väkisinkin silmät jumittu yhteen pisaraan, tai jotain... Sama juttu kuin katselisit ohi meneviä puita auton tai minkä tahansa kyydistä.MrMonday wrote:
Joku jännä tausta tuohon niin vois näkyä paremmin.
Code: Select all
SCREEN 640, 480
Dim p#(999,5)
ym# = -.6
For i = 0 To 999
Gosub reset
Next i
ym = 1
back = MakeImage(640,480)
DrawToImage back
For i = 1 To 6
Color i*5, i*5, i*5
Box 0, 360+2^i,640, 2^i
Next i
DrawToScreen
Repeat
DrawImage back, 0, 0
Lock
For i = 0 To 999
p(i,3) = p(i,3) + Sin(Timer()*.1)*.0005
p(i,5) = p(i,5) + Sin(Timer()*.11)*.0005
p(i,0) = p(i,0) + p(i,3)
p(i,1) = p(i,1) + p(i,4)
p(i,2) = p(i,2) + p(i,5)
If p(i,1)<-.6 Then p(i,4) = .02
a# = 600.0/(p(i,2)+2)
Color Min(255,.2*a), Min(255,.24*a), Min(255,.34*a)
b# = 600.0/(p(i,2)+p(i,5)*.9+2)
Line 320+p(i,0)*a, 240-p(i,1)*a, 320+(p(i,0)+p(i,3)*.9)*b, 240-(p(i,1)+p(i,4)*.9)*b
If p(i,1)<-.6 Then Gosub reset
Next i
Unlock
DrawScreen
Forever
reset:
p(i,0) = Rnd(-1,1)
p(i,1) = Rnd(ym,1)
p(i,2) = Rnd(-1,1)
p(i,3) = Rnd(-.01,.01)
p(i,4) = Rnd(-.08,-.05)
p(i,5) = Rnd(-.01,.01)
Return
Code: Select all
Global gDelta# : gDelta = 0.0
Global gLastFrameTime : gLastFrameTime = Timer()
Dim _gScrollTexts(11) As Float
num = 0
Repeat
Gosub UpdateDelta
ScrollText(0, 10, 10, 300, "This text is kinda cool, if you ask me. ")
ScrollText(1, 10, 30, 125, "It works well.")
ScrollText(2, 185, 30, 125, "Delta time halved the FPS. No idea why.")
If KeyHit(cbKeySpace) Then num + 1
For i = 1 To 8
ScrollText(2 + i, 185, 50 + 12 * i, 125, "Text #" + (i + num), 60 * (i / 3.0))
Next i
ScrollText(11, 10, 160, 380, "Loop")
Text 10, 50, "FPS: " + FPS()
Text 10, 72, "Hit spacebar To"
Text 10, 84, "increase numbers."
//Text 10, 100,"Delta: " + gDelta
DrawScreen
Forever
UpdateDelta:
_t = Timer()
gDelta = (_t - gLastFrameTime) / 1000.0
gLastFrameTime = _t
Return
// Draws a scrolling text.
// Variables:
// id Unique ID of the text. Can be reused if the old text isn't visible anymore.
// x Top left X-coordinate of the text.
// y Top left Y-coordinate of the text.
// width Width the scrolling text should occupy.
// txt The text to show. Can change at any point.
// speed Pixels to scroll per second. Negative value scrolls to right.
Function ScrollText(id As Integer, x As Integer, y As Integer, width As Integer, txt As String, speed As Float = 60.0)
twidth = TextWidth(txt)
pos# = _gScrollTexts(id) - (speed * gDelta)
//pos# = _gScrollTexts(id) - speed
If speed < 0 And pos >= Max(width, twidth) + 10 Then pos = pos - twidth - 10
If speed > 0 And pos <= -twidth - 10 Then pos = pos + twidth + 10
_gScrollTexts(id) = pos
img = MakeImage(width, TextHeight("|"))
DrawToImage img
Text pos, 0, txt
If speed > 0
For i = 1 To Int(width / twidth) + 1
Text pos + (twidth + 10) * i, 0, txt
Next i
Else
For i = 1 To Int(width / twidth) + 1
Text pos - (twidth + 10) * i, 0, txt
Next i
EndIf
DrawToScreen
DrawImage img, x, y
DeleteImage img
EndFunction
Code: Select all
SCREEN 640, 240
cx = 0
tides1 = MakeImage(32, 9)
tides2 = MakeImage(32, 10)
tides3 = MakeImage(32, 11)
tides4 = MakeImage(32, 12)
tides5 = MakeImage(32, 13)
tides6 = MakeImage(32, 14)
tides7 = MakeImage(32, 15)
tides8 = MakeImage(32, 16)
bg = MakeImage(640, 240)
Function SeaGradient(yt#)
Color 21+(yt#*122),83+(yt#*118),132+(yt#*73)
EndFunction
DrawToImage bg
For y# = 0 To 239
yt# = (y# / 189)
Color 150+(yt#*57),205+(yt#*31),20+(yt#*232)
Line 0, y, 640, y
Next y#
DrawToImage tides1
For y# = 0 To 8
For x# = 0 To 31
yt# = Rnd(0.0, 0.5)
SeaGradient (yt#)
Dot x,y
Next x#
Next y#
DrawToImage tides2
For y# = 0 To 9
For x# = 0 To 15
yt# = Rnd(0.0, 0.6)
SeaGradient (yt#)
Line x*2,y,(x*2)+1,y
Next x#
Next y#
DrawToImage tides3
For y# = 0 To 10
For x# = 0 To 15
yt# = Rnd(0.0, 0.7)
SeaGradient (yt#)
Line x*2,y,(x*2)+1,y
Next x#
Next y#
DrawToImage tides4
For y# = 0 To 11
For x# = 0 To 15
yt# = Rnd(0.0, 0.81)
SeaGradient (yt#)
Line x*2,y,(x*2)+1,y
Next x#
Next y#
DrawToImage tides5
For y# = 0 To 12
For x# = 0 To 15
yt# = Rnd(0.0, 0.89)
SeaGradient (yt#)
Line x*2,y,(x*2)+1,y
Next x#
Next y#
DrawToImage tides6
For y# = 0 To 13
For x# = 0 To 7
yt# = Rnd(0.0, 0.97)
SeaGradient (yt#)
Line x*4,y,(x*4)+3,y
Next x#
Next y#
DrawToImage tides7
For y# = 0 To 14
For x# = 0 To 7
yt# = Rnd(0.0, 1)
SeaGradient (yt#)
Line x*4,y,(x*4)+3,y
Next x#
Next y#
DrawToImage tides8
For y# = 0 To 15
For x# = 0 To 7
yt# = Rnd(0.0, 1)
SeaGradient (yt#)
Line x*4,y,(x*4)+3,y
Next x#
Next y#
DrawToScreen
'1 2 4 12 16 16 32 64
'/32 /16 /8 (/16)*3 /4 /2 (/4)*3 /1
tx = 83
Repeat
cx = (cx + tx)
DrawImage bg, 0, 0
For x = -64 To 704 Step 32
DrawImage tides1, x + ((cx Mod 8192) / 128), 240 - (16 + 15 + 14 + 13 + 12 + 11 + 10 + 9)
DrawImage tides2, x + ((cx Mod 4096) / 64), 240 - (16 + 15 + 14 + 13 + 12 + 11 + 10)
DrawImage tides3, x + ((cx Mod 2048) / 32), 240 - (16 + 15 + 14 + 13 + 12 + 11)
DrawImage tides4, x + ((cx Mod 1024) / 16), 240 - (16 + 15 + 14 + 13 + 12)
DrawImage tides5, x + ((cx Mod 512) / 8), 240 - (16 + 15 + 14 + 13)
DrawImage tides6, x + ((cx Mod 256) / 4), 240 - (16 + 15 + 14)
DrawImage tides7, x + ((cx Mod 128) / 2), 240 - (16 + 15)
DrawImage tides8, x + ((cx Mod 64)), 240 - (16)
Next x
Text 0, 0, tx
If KeyHit(203) Then tx - 1
If KeyHit(205) Then tx + 1
If KeyDown(1) Then Exit
DrawScreen
Forever
Code: Select all
w = 200
h = 200
SCREEN 400, 400
SCREEN w, h, 0, 2
Dim pixels(w*h) As integer
'Dim zBuffer(w*h) As Float
fPos = 10
cPos = 10
yValue# = 0
z# = 0
depth# = 0
xx# = 0
yy# = 0
xPix = 0
yPix = 0
do:
Lock SCREEN()
rot + 20
cosini = Cos(rot)
sini = Sin(rot)
For y = 0 To h - 1
yValue = (y - h / 2.4) / h
z = cPos / yValue
If yValue < 0 Then z = fPos / -yValue
For x = 0 To w - 1
depth = (x - w / 2.0) / h
depth = depth * z
xx = depth * cosini + z * sini
yy = z * cosini - depth * sini
xPix = Int(xx)
yPix = Int(yy)
'zBuffer(x+y*w) = z
pixels(x+y*w) = (xPix * 16) + (yPix * 16) Shl 8
If z > 400 Then pixels(x+y*w) = 0
PutPixel2 x, y, pixels(x+y*w)
SetWindow Str(y) + " " + Str(x)
Next x
Next y
Unlock SCREEN()
DrawScreen
WaitKey
Goto do
Suosittelen heti alkuun poistamaan SetWindow-komennon. Vie nimittäin aika mukavasti potentiaalista laskenta-aikaa. Tuo projektiosi pystyy jostain syystä piirtämään ainoastaan 45 asteen välein, joten rot + 20 on sama vaihtaa rot + 45, jotta joka painalluksella saadaan uusi kuva. Muuta yleistä pientä optimointia myös ja tässä olisi minun lopputulos. En ihan tarkkaan tajua tämän toimintaa, joten siinä kaikki (muutin myös tyyliasun törkeästi itselleni sopivaksi).MessyC wrote:Kaippa tätäkin efektiksi voisi kutsua, vaikkakin 3d projektiotahan tässä tavallaan tehdään. Tein tämän erään java-tutoriaalin perusteella, mutta koska CB ei ole paras komennoiltaan eikä nopeudeltaansa varsinkaan, niin en tästä saanut niin hienoa kuitenkaan. Renderöinnissä kestää kauan ja se vie tehoja paljon, sekä bittioperaattoreiden puutteet tekee vähän hassun näköisen. Ohjelma saattaa myös jumittaa konetta joskus, sillä se yrittää käyttää prossua niin paljon (näin ainakin luulisin). Nappia painamalla renderöi uuden kuvan mahdollisesti vähän eri suunnasta. Parannuksia ja virheitä saa ja pitää kertoa, kuuntelen mielelläni
*snip*
Code: Select all
w = 200
h = 200
SCREEN 400, 400
SCREEN w, h, 0, 2
Dim pixels(w*h) As integer
'Dim zBuffer(w*h) As Float
fPos = 10
cPos# = 10
yValue# = 0
z# = 0
depth# = 0
xx# = 0
yy# = 0
do:
Lock SCREEN()
rot = (rot + 10) Mod 360
cosini# = Cos(rot)
sini# = Sin(rot)
t = Timer()
For y = 0 To h - 1
yValue = (y - h / 2.4) / h
If yValue < 0 Then z = fPos / (-yValue) Else z = cPos / yValue
For x = 0 To w - 1
pix = 0
If z <= 400 Then
depth = ((x - w / 2.0) / h) * z
xx = depth * cosini + z * sini
yy = z * cosini - depth * sini
pix = (xx * 16) + (yy * 16) Shl 8
EndIf
PutPixel2 x, y, pix
Next x
Next y
Unlock SCREEN()
Text 10, 10, rot + " - Took: " + (Timer() - t) + " ms"
DrawScreen
While Timer() - t < 100
Wait 1
Wend
Goto do
Muokkasin koodia, se toimiikin kuten pitää. \o/
EDIT2: Optimisation maximus!
Code: Select all
w = 200
h = 200
SCREEN 400, 400
SCREEN w, h, 0, 2
Dim pixels(w*h) As integer
'Dim zBuffer(w*h) As Float
fPos = 10
cPos# = 10
yValue# = 0
z# = 0
depth# = 0
xx# = 0
yy# = 0
w2# = w / 2.0
h2# = h / 2.4
do:
Lock SCREEN()
rot = (rot + 10) Mod 360
cosini# = Cos(rot)
sini# = Sin(rot)
t = Timer()
For y = 0 To h - 1
yValue = (y - h2) / h
If yValue < 0 Then z = fPos / (-yValue) Else z = cPos / yValue
If z <= 400 Then
sinz# = z * sini
cosz# = z * cosini
div# = h / z // a / b * c == a / (b / c)
For x = 0 To w - 1
depth = (x - w2) / div
PutPixel2 x, y, Int(((depth * cosini + sinz) * 16) + ((cosz - depth * sini) * 16) Shl 8)
Next x
EndIf
Next y
Unlock SCREEN()
Text 10, 10, rot + " - Took: " + (Timer() - t) + " ms"
DrawScreen
While Timer() - t < 100
Wait 1
Wend
Goto do
Wou, kiitoksia paljon! CoolBasicilla on jonkin verran tullut koodailtua, mutta hyvin vähän, joten kaikkea en tiedä vielä. En osannut odottaa että SetWindow vie noinkin paljon tehoa ja ylipäätään stabiiliutta - juuri tämän komennon takia ohjelma jumittikin usein. Tulipahan opittua lisää Tämän koitin "portata" edes jotenkin CB:lle, joten koodin ulkoasuun en kiinnittänyt liikaa huomiota, kuten en liikaa optimointiinkaan. Parempaa saan sitten aikaan kun opin enemmän.Jani wrote: Suosittelen heti alkuun poistamaan SetWindow-komennon. Vie nimittäin aika mukavasti potentiaalista laskenta-aikaa. Tuo projektiosi pystyy jostain syystä piirtämään ainoastaan 45 asteen välein, joten rot + 20 on sama vaihtaa rot + 45, jotta joka painalluksella saadaan uusi kuva. Muuta yleistä pientä optimointia myös ja tässä olisi minun lopputulos. En ihan tarkkaan tajua tämän toimintaa, joten siinä kaikki (muutin myös tyyliasun törkeästi itselleni sopivaksi).
Kiitos vielä kerran, kun siistit ja optimoit, Jani!
EDIT 2:
Kokeilin hieman teksturointia, mutta ei ihan toivottua lopputulosta löytynyt.. Latauslinkissä, koska siinä on kuva mukana. Janin ekaa edittiä käytin pohjana.
EDIT 3:
Janin kanssa yhteistyössä tekstuurit korjattu, linkki päivitetty
Code: Select all
SCREEN 640, 360
const LINE_COUNT = 354
const POS_X = 0
const POS_Y = 1
dim list(LINE_COUNT, 1) as float
dim list2(LINE_COUNT, 1) as float
list(0, POS_X) = 311.0
list(0, POS_Y) = 5.0
list(1, POS_X) = 364.0
list(1, POS_Y) = 14.0
list(2, POS_X) = 391.0
list(2, POS_Y) = 30.0
list(3, POS_X) = 414.0
list(3, POS_Y) = 60.0
list(4, POS_X) = 434.0
list(4, POS_Y) = 96.0
list(5, POS_X) = 441.0
list(5, POS_Y) = 145.0
list(6, POS_X) = 442.0
list(6, POS_Y) = 188.0
list(7, POS_X) = 428.0
list(7, POS_Y) = 221.0
list(8, POS_X) = 412.0
list(8, POS_Y) = 252.0
list(9, POS_X) = 412.0
list(9, POS_Y) = 269.0
list(10, POS_X) = 408.0
list(10, POS_Y) = 280.0
list(11, POS_X) = 401.0
list(11, POS_Y) = 284.0
list(12, POS_X) = 390.0
list(12, POS_Y) = 287.0
list(13, POS_X) = 385.0
list(13, POS_Y) = 283.0
list(14, POS_X) = -1.0
list(14, POS_Y) = -1.0
list(15, POS_X) = 386.0
list(15, POS_Y) = 279.0
list(16, POS_X) = 393.0
list(16, POS_Y) = 245.0
list(17, POS_X) = 410.0
list(17, POS_Y) = 241.0
list(18, POS_X) = 415.0
list(18, POS_Y) = 224.0
list(19, POS_X) = 416.0
list(19, POS_Y) = 212.0
list(20, POS_X) = 407.0
list(20, POS_Y) = 214.0
list(21, POS_X) = 403.0
list(21, POS_Y) = 221.0
list(22, POS_X) = 400.0
list(22, POS_Y) = 232.0
list(23, POS_X) = 396.0
list(23, POS_Y) = 234.0
list(24, POS_X) = -1.0
list(24, POS_Y) = -1.0
list(25, POS_X) = 392.0
list(25, POS_Y) = 231.0
list(26, POS_X) = 393.0
list(26, POS_Y) = 215.0
list(27, POS_X) = 385.0
list(27, POS_Y) = 201.0
list(28, POS_X) = 383.0
list(28, POS_Y) = 189.0
list(29, POS_X) = 380.0
list(29, POS_Y) = 173.0
list(30, POS_X) = 377.0
list(30, POS_Y) = 125.0
list(31, POS_X) = 369.0
list(31, POS_Y) = 110.0
list(32, POS_X) = 346.0
list(32, POS_Y) = 105.0
list(33, POS_X) = 318.0
list(33, POS_Y) = 114.0
list(34, POS_X) = 288.0
list(34, POS_Y) = 128.0
list(35, POS_X) = 269.0
list(35, POS_Y) = 133.0
list(36, POS_X) = 239.0
list(36, POS_Y) = 129.0
list(37, POS_X) = 222.0
list(37, POS_Y) = 128.0
list(38, POS_X) = 212.0
list(38, POS_Y) = 137.0
list(39, POS_X) = 206.0
list(39, POS_Y) = 154.0
list(40, POS_X) = 204.0
list(40, POS_Y) = 178.0
list(41, POS_X) = 203.0
list(41, POS_Y) = 197.0
list(42, POS_X) = 200.0
list(42, POS_Y) = 211.0
list(43, POS_X) = 203.0
list(43, POS_Y) = 223.0
list(44, POS_X) = 191.0
list(44, POS_Y) = 198.0
list(45, POS_X) = 182.0
list(45, POS_Y) = 199.0
list(46, POS_X) = 177.0
list(46, POS_Y) = 200.0
list(47, POS_X) = 167.0
list(47, POS_Y) = 194.0
list(48, POS_X) = -1.0
list(48, POS_Y) = -1.0
list(49, POS_X) = 167.0
list(49, POS_Y) = 191.0
list(50, POS_X) = 169.0
list(50, POS_Y) = 153.0
list(51, POS_X) = 169.0
list(51, POS_Y) = 125.0
list(52, POS_X) = 177.0
list(52, POS_Y) = 92.0
list(53, POS_X) = 187.0
list(53, POS_Y) = 67.0
list(54, POS_X) = 194.0
list(54, POS_Y) = 56.0
list(55, POS_X) = 211.0
list(55, POS_Y) = 32.0
list(56, POS_X) = 226.0
list(56, POS_Y) = 22.0
list(57, POS_X) = 241.0
list(57, POS_Y) = 15.0
list(58, POS_X) = 265.0
list(58, POS_Y) = 9.0
list(59, POS_X) = 315.0
list(59, POS_Y) = 6.0
list(60, POS_X) = 332.0
list(60, POS_Y) = 7.0
list(61, POS_X) = -1.0
list(61, POS_Y) = -1.0
list(62, POS_X) = 187.0
list(62, POS_Y) = 198.0
list(63, POS_X) = 185.0
list(63, POS_Y) = 214.0
list(64, POS_X) = 188.0
list(64, POS_Y) = 226.0
list(65, POS_X) = 196.0
list(65, POS_Y) = 233.0
list(66, POS_X) = 204.0
list(66, POS_Y) = 236.0
list(67, POS_X) = -1.0
list(67, POS_Y) = -1.0
list(68, POS_X) = 192.0
list(68, POS_Y) = 202.0
list(69, POS_X) = 194.0
list(69, POS_Y) = 219.0
list(70, POS_X) = 202.0
list(70, POS_Y) = 228.0
list(71, POS_X) = -1.0
list(71, POS_Y) = -1.0
list(72, POS_X) = 204.0
list(72, POS_Y) = 240.0
list(73, POS_X) = 206.0
list(73, POS_Y) = 263.0
list(74, POS_X) = 212.0
list(74, POS_Y) = 285.0
list(75, POS_X) = 225.0
list(75, POS_Y) = 305.0
list(76, POS_X) = 236.0
list(76, POS_Y) = 319.0
list(77, POS_X) = 254.0
list(77, POS_Y) = 344.0
list(78, POS_X) = 263.0
list(78, POS_Y) = 352.0
list(79, POS_X) = 278.0
list(79, POS_Y) = 355.0
list(80, POS_X) = 289.0
list(80, POS_Y) = 353.0
list(81, POS_X) = 307.0
list(81, POS_Y) = 356.0
list(82, POS_X) = 324.0
list(82, POS_Y) = 348.0
list(83, POS_X) = 338.0
list(83, POS_Y) = 335.0
list(84, POS_X) = 356.0
list(84, POS_Y) = 320.0
list(85, POS_X) = 372.0
list(85, POS_Y) = 298.0
list(86, POS_X) = 382.0
list(86, POS_Y) = 285.0
list(87, POS_X) = -1.0
list(87, POS_Y) = -1.0
list(88, POS_X) = 250.0
list(88, POS_Y) = 295.0
list(89, POS_X) = 267.0
list(89, POS_Y) = 300.0
list(90, POS_X) = 275.0
list(90, POS_Y) = 299.0
list(91, POS_X) = 283.0
list(91, POS_Y) = 303.0
list(92, POS_X) = 295.0
list(92, POS_Y) = 302.0
list(93, POS_X) = 308.0
list(93, POS_Y) = 303.0
list(94, POS_X) = 327.0
list(94, POS_Y) = 299.0
list(95, POS_X) = 323.0
list(95, POS_Y) = 309.0
list(96, POS_X) = 312.0
list(96, POS_Y) = 317.0
list(97, POS_X) = 289.0
list(97, POS_Y) = 319.0
list(98, POS_X) = 274.0
list(98, POS_Y) = 314.0
list(99, POS_X) = 264.0
list(99, POS_Y) = 308.0
list(100, POS_X) = 251.0
list(100, POS_Y) = 297.0
list(101, POS_X) = -1.0
list(101, POS_Y) = -1.0
list(102, POS_X) = 253.0
list(102, POS_Y) = 294.0
list(103, POS_X) = 265.0
list(103, POS_Y) = 290.0
list(104, POS_X) = 276.0
list(104, POS_Y) = 295.0
list(105, POS_X) = 285.0
list(105, POS_Y) = 297.0
list(106, POS_X) = 297.0
list(106, POS_Y) = 296.0
list(107, POS_X) = 309.0
list(107, POS_Y) = 296.0
list(108, POS_X) = 324.0
list(108, POS_Y) = 299.0
list(109, POS_X) = -1.0
list(109, POS_Y) = -1.0
list(110, POS_X) = 283.0
list(110, POS_Y) = 283.0
list(111, POS_X) = 280.0
list(111, POS_Y) = 290.0
list(112, POS_X) = 283.0
list(112, POS_Y) = 296.0
list(113, POS_X) = -1.0
list(113, POS_Y) = -1.0
list(114, POS_X) = 289.0
list(114, POS_Y) = 283.0
list(115, POS_X) = 294.0
list(115, POS_Y) = 288.0
list(116, POS_X) = 291.0
list(116, POS_Y) = 294.0
list(117, POS_X) = -1.0
list(117, POS_Y) = -1.0
list(118, POS_X) = 321.0
list(118, POS_Y) = 264.0
list(119, POS_X) = 345.0
list(119, POS_Y) = 298.0
list(120, POS_X) = -1.0
list(120, POS_Y) = -1.0
list(121, POS_X) = 262.0
list(121, POS_Y) = 245.0
list(122, POS_X) = 245.0
list(122, POS_Y) = 276.0
list(123, POS_X) = -1.0
list(123, POS_Y) = -1.0
list(124, POS_X) = 301.0
list(124, POS_Y) = 191.0
list(125, POS_X) = 295.0
list(125, POS_Y) = 211.0
list(126, POS_X) = 299.0
list(126, POS_Y) = 234.0
list(127, POS_X) = 308.0
list(127, POS_Y) = 253.0
list(128, POS_X) = 314.0
list(128, POS_Y) = 268.0
list(129, POS_X) = 306.0
list(129, POS_Y) = 273.0
list(130, POS_X) = 297.0
list(130, POS_Y) = 269.0
list(131, POS_X) = 290.0
list(131, POS_Y) = 274.0
list(132, POS_X) = 275.0
list(132, POS_Y) = 275.0
list(133, POS_X) = 268.0
list(133, POS_Y) = 269.0
list(134, POS_X) = 267.0
list(134, POS_Y) = 264.0
list(135, POS_X) = 266.0
list(135, POS_Y) = 258.0
list(136, POS_X) = 271.0
list(136, POS_Y) = 249.0
list(137, POS_X) = 277.0
list(137, POS_Y) = 205.0
list(138, POS_X) = -1.0
list(138, POS_Y) = -1.0
list(139, POS_X) = 316.0
list(139, POS_Y) = 327.0
list(140, POS_X) = 312.0
list(140, POS_Y) = 331.0
list(141, POS_X) = 316.0
list(141, POS_Y) = 333.0
list(142, POS_X) = 321.0
list(142, POS_Y) = 330.0
list(143, POS_X) = 316.0
list(143, POS_Y) = 328.0
list(144, POS_X) = -1.0
list(144, POS_Y) = -1.0
list(145, POS_X) = 265.0
list(145, POS_Y) = 195.0
list(146, POS_X) = 253.0
list(146, POS_Y) = 190.0
list(147, POS_X) = 237.0
list(147, POS_Y) = 192.0
list(148, POS_X) = 229.0
list(148, POS_Y) = 198.0
list(149, POS_X) = 238.0
list(149, POS_Y) = 204.0
list(150, POS_X) = 253.0
list(150, POS_Y) = 204.0
list(151, POS_X) = 264.0
list(151, POS_Y) = 204.0
list(152, POS_X) = 268.0
list(152, POS_Y) = 205.0
list(153, POS_X) = 269.0
list(153, POS_Y) = 198.0
list(154, POS_X) = 266.0
list(154, POS_Y) = 196.0
list(155, POS_X) = -1.0
list(155, POS_Y) = -1.0
list(156, POS_X) = 316.0
list(156, POS_Y) = 203.0
list(157, POS_X) = 324.0
list(157, POS_Y) = 192.0
list(158, POS_X) = 335.0
list(158, POS_Y) = 190.0
list(159, POS_X) = 346.0
list(159, POS_Y) = 192.0
list(160, POS_X) = 358.0
list(160, POS_Y) = 199.0
list(161, POS_X) = 359.0
list(161, POS_Y) = 202.0
list(162, POS_X) = 349.0
list(162, POS_Y) = 205.0
list(163, POS_X) = 339.0
list(163, POS_Y) = 206.0
list(164, POS_X) = 329.0
list(164, POS_Y) = 205.0
list(165, POS_X) = 318.0
list(165, POS_Y) = 204.0
list(166, POS_X) = -1.0
list(166, POS_Y) = -1.0
list(167, POS_X) = 314.0
list(167, POS_Y) = 205.0
list(168, POS_X) = 313.0
list(168, POS_Y) = 211.0
list(169, POS_X) = 323.0
list(169, POS_Y) = 212.0
list(170, POS_X) = 334.0
list(170, POS_Y) = 214.0
list(171, POS_X) = 346.0
list(171, POS_Y) = 211.0
list(172, POS_X) = 360.0
list(172, POS_Y) = 202.0
list(173, POS_X) = -1.0
list(173, POS_Y) = -1.0
list(174, POS_X) = 271.0
list(174, POS_Y) = 205.0
list(175, POS_X) = 271.0
list(175, POS_Y) = 209.0
list(176, POS_X) = 263.0
list(176, POS_Y) = 210.0
list(177, POS_X) = 247.0
list(177, POS_Y) = 211.0
list(178, POS_X) = 234.0
list(178, POS_Y) = 211.0
list(179, POS_X) = 227.0
list(179, POS_Y) = 199.0
list(180, POS_X) = -1.0
list(180, POS_Y) = -1.0
list(181, POS_X) = 267.0
list(181, POS_Y) = 182.0
list(182, POS_X) = 250.0
list(182, POS_Y) = 182.0
list(183, POS_X) = 230.0
list(183, POS_Y) = 181.0
list(184, POS_X) = 220.0
list(184, POS_Y) = 180.0
list(185, POS_X) = 216.0
list(185, POS_Y) = 186.0
list(186, POS_X) = 226.0
list(186, POS_Y) = 189.0
list(187, POS_X) = 256.0
list(187, POS_Y) = 187.0
list(188, POS_X) = 265.0
list(188, POS_Y) = 186.0
list(189, POS_X) = 268.0
list(189, POS_Y) = 181.0
list(190, POS_X) = -1.0
list(190, POS_Y) = -1.0
list(191, POS_X) = 310.0
list(191, POS_Y) = 185.0
list(192, POS_X) = 335.0
list(192, POS_Y) = 179.0
list(193, POS_X) = 351.0
list(193, POS_Y) = 180.0
list(194, POS_X) = 364.0
list(194, POS_Y) = 182.0
list(195, POS_X) = 367.0
list(195, POS_Y) = 189.0
list(196, POS_X) = 361.0
list(196, POS_Y) = 190.0
list(197, POS_X) = 350.0
list(197, POS_Y) = 186.0
list(198, POS_X) = 337.0
list(198, POS_Y) = 186.0
list(199, POS_X) = 325.0
list(199, POS_Y) = 188.0
list(200, POS_X) = 310.0
list(200, POS_Y) = 188.0
list(201, POS_X) = 311.0
list(201, POS_Y) = 183.0
list(202, POS_X) = -1.0
list(202, POS_Y) = -1.0
list(203, POS_X) = 349.0
list(203, POS_Y) = 144.0
list(204, POS_X) = 305.0
list(204, POS_Y) = 149.0
list(205, POS_X) = 295.0
list(205, POS_Y) = 156.0
list(206, POS_X) = 267.0
list(206, POS_Y) = 150.0
list(207, POS_X) = 251.0
list(207, POS_Y) = 153.0
list(208, POS_X) = 236.0
list(208, POS_Y) = 157.0
list(209, POS_X) = -1.0
list(209, POS_Y) = -1.0
list(210, POS_X) = 352.0
list(210, POS_Y) = 158.0
list(211, POS_X) = 323.0
list(211, POS_Y) = 162.0
list(212, POS_X) = 307.0
list(212, POS_Y) = 166.0
list(213, POS_X) = 275.0
list(213, POS_Y) = 166.0
list(214, POS_X) = 251.0
list(214, POS_Y) = 165.0
list(215, POS_X) = 228.0
list(215, POS_Y) = 168.0
list(216, POS_X) = -1.0
list(216, POS_Y) = -1.0
list(217, POS_X) = 386.0
list(217, POS_Y) = 291.0
list(218, POS_X) = 381.0
list(218, POS_Y) = 317.0
list(219, POS_X) = 374.0
list(219, POS_Y) = 339.0
list(220, POS_X) = 366.0
list(220, POS_Y) = 354.0
list(221, POS_X) = -1.0
list(221, POS_Y) = -1.0
list(222, POS_X) = 391.0
list(222, POS_Y) = 296.0
list(223, POS_X) = 388.0
list(223, POS_Y) = 320.0
list(224, POS_X) = 383.0
list(224, POS_Y) = 337.0
list(225, POS_X) = 373.0
list(225, POS_Y) = 356.0
list(226, POS_X) = -1.0
list(226, POS_Y) = -1.0
list(227, POS_X) = 228.0
list(227, POS_Y) = 314.0
list(228, POS_X) = 230.0
list(228, POS_Y) = 334.0
list(229, POS_X) = 244.0
list(229, POS_Y) = 355.0
list(230, POS_X) = -1.0
list(230, POS_Y) = -1.0
list(231, POS_X) = 223.0
list(231, POS_Y) = 314.0
list(232, POS_X) = 223.0
list(232, POS_Y) = 336.0
list(233, POS_X) = 228.0
list(233, POS_Y) = 357.0
list(234, POS_X) = -1.0
list(234, POS_Y) = -1.0
list(235, POS_X) = 205.0
list(235, POS_Y) = 271.0
list(236, POS_X) = 153.0
list(236, POS_Y) = 297.0
list(237, POS_X) = 95.0
list(237, POS_Y) = 323.0
list(238, POS_X) = 84.0
list(238, POS_Y) = 354.0
list(239, POS_X) = -1.0
list(239, POS_Y) = -1.0
list(240, POS_X) = 93.0
list(240, POS_Y) = 322.0
list(241, POS_X) = 67.0
list(241, POS_Y) = 340.0
list(242, POS_X) = 57.0
list(242, POS_Y) = 356.0
list(243, POS_X) = -1.0
list(243, POS_Y) = -1.0
list(244, POS_X) = 413.0
list(244, POS_Y) = 267.0
list(245, POS_X) = 465.0
list(245, POS_Y) = 300.0
list(246, POS_X) = 518.0
list(246, POS_Y) = 312.0
list(247, POS_X) = 527.0
list(247, POS_Y) = 322.0
list(248, POS_X) = 536.0
list(248, POS_Y) = 353.0
list(249, POS_X) = -1.0
list(249, POS_Y) = -1.0
list(250, POS_X) = 202.0
list(250, POS_Y) = 239.0
list(251, POS_X) = 189.0
list(251, POS_Y) = 241.0
list(252, POS_X) = 184.0
list(252, POS_Y) = 235.0
list(253, POS_X) = 182.0
list(253, POS_Y) = 221.0
list(254, POS_X) = 183.0
list(254, POS_Y) = 216.0
list(255, POS_X) = -1.0
list(255, POS_Y) = -1.0
list(256, POS_X) = 202.0
list(256, POS_Y) = 244.0
list(257, POS_X) = 194.0
list(257, POS_Y) = 252.0
list(258, POS_X) = 198.0
list(258, POS_Y) = 260.0
list(259, POS_X) = 203.0
list(259, POS_Y) = 268.0
list(260, POS_X) = -1.0
list(260, POS_Y) = -1.0
list(261, POS_X) = 301.0
list(261, POS_Y) = 78.0
list(262, POS_X) = 281.0
list(262, POS_Y) = 87.0
list(263, POS_X) = 256.0
list(263, POS_Y) = 86.0
list(264, POS_X) = 239.0
list(264, POS_Y) = 85.0
list(265, POS_X) = 209.0
list(265, POS_Y) = 105.0
list(266, POS_X) = -1.0
list(266, POS_Y) = -1.0
list(267, POS_X) = 296.0
list(267, POS_Y) = 75.0
list(268, POS_X) = 271.0
list(268, POS_Y) = 81.0
list(269, POS_X) = 244.0
list(269, POS_Y) = 78.0
list(270, POS_X) = 220.0
list(270, POS_Y) = 90.0
list(271, POS_X) = 210.0
list(271, POS_Y) = 97.0
list(272, POS_X) = -1.0
list(272, POS_Y) = -1.0
list(273, POS_X) = 327.0
list(273, POS_Y) = 46.0
list(274, POS_X) = 349.0
list(274, POS_Y) = 44.0
list(275, POS_X) = 370.0
list(275, POS_Y) = 51.0
list(276, POS_X) = 392.0
list(276, POS_Y) = 67.0
list(277, POS_X) = -1.0
list(277, POS_Y) = -1.0
list(278, POS_X) = 331.0
list(278, POS_Y) = 37.0
list(279, POS_X) = 347.0
list(279, POS_Y) = 32.0
list(280, POS_X) = 366.0
list(280, POS_Y) = 39.0
list(281, POS_X) = 395.0
list(281, POS_Y) = 55.0
list(282, POS_X) = -1.0
list(282, POS_Y) = -1.0
list(283, POS_X) = 349.0
list(283, POS_Y) = 49.0
list(284, POS_X) = 369.0
list(284, POS_Y) = 64.0
list(285, POS_X) = -1.0
list(285, POS_Y) = -1.0
list(286, POS_X) = 353.0
list(286, POS_Y) = 78.0
list(287, POS_X) = 382.0
list(287, POS_Y) = 89.0
list(288, POS_X) = 401.0
list(288, POS_Y) = 104.0
list(289, POS_X) = 411.0
list(289, POS_Y) = 122.0
list(290, POS_X) = -1.0
list(290, POS_Y) = -1.0
list(291, POS_X) = 213.0
list(291, POS_Y) = 69.0
list(292, POS_X) = 204.0
list(292, POS_Y) = 80.0
list(293, POS_X) = -1.0
list(293, POS_Y) = -1.0
list(294, POS_X) = 207.0
list(294, POS_Y) = 63.0
list(295, POS_X) = 196.0
list(295, POS_Y) = 70.0
list(296, POS_X) = -1.0
list(296, POS_Y) = -1.0
list(297, POS_X) = 202.0
list(297, POS_Y) = 94.0
list(298, POS_X) = 189.0
list(298, POS_Y) = 106.0
list(299, POS_X) = -1.0
list(299, POS_Y) = -1.0
list(300, POS_X) = 182.0
list(300, POS_Y) = 129.0
list(301, POS_X) = 178.0
list(301, POS_Y) = 142.0
list(302, POS_X) = -1.0
list(302, POS_Y) = -1.0
list(303, POS_X) = 316.0
list(303, POS_Y) = 27.0
list(304, POS_X) = 327.0
list(304, POS_Y) = 18.0
list(305, POS_X) = 338.0
list(305, POS_Y) = 16.0
list(306, POS_X) = 360.0
list(306, POS_Y) = 17.0
list(307, POS_X) = 372.0
list(307, POS_Y) = 26.0
list(308, POS_X) = -1.0
list(308, POS_Y) = -1.0
list(309, POS_X) = 328.0
list(309, POS_Y) = 26.0
list(310, POS_X) = 342.0
list(310, POS_Y) = 23.0
list(311, POS_X) = 365.0
list(311, POS_Y) = 28.0
list(312, POS_X) = 375.0
list(312, POS_Y) = 35.0
list(313, POS_X) = -1.0
list(313, POS_Y) = -1.0
list(314, POS_X) = 386.0
list(314, POS_Y) = 115.0
list(315, POS_X) = 405.0
list(315, POS_Y) = 143.0
list(316, POS_X) = -1.0
list(316, POS_Y) = -1.0
list(317, POS_X) = 386.0
list(317, POS_Y) = 142.0
list(318, POS_X) = 391.0
list(318, POS_Y) = 153.0
list(319, POS_X) = 384.0
list(319, POS_Y) = 154.0
list(320, POS_X) = 386.0
list(320, POS_Y) = 144.0
list(321, POS_X) = -1.0
list(321, POS_Y) = -1.0
list(322, POS_X) = 415.0
list(322, POS_Y) = 162.0
list(323, POS_X) = -1.0
list(323, POS_Y) = -1.0
list(324, POS_X) = 428.0
list(324, POS_Y) = 185.0
list(325, POS_X) = 426.0
list(325, POS_Y) = 202.0
list(326, POS_X) = -1.0
list(326, POS_Y) = -1.0
list(327, POS_X) = 347.0
list(327, POS_Y) = 62.0
list(328, POS_X) = 357.0
list(328, POS_Y) = 67.0
list(329, POS_X) = -1.0
list(329, POS_Y) = -1.0
list(330, POS_X) = 245.0
list(330, POS_Y) = 32.0
list(331, POS_X) = 230.0
list(331, POS_Y) = 45.0
list(332, POS_X) = -1.0
list(332, POS_Y) = -1.0
list(333, POS_X) = 232.0
list(333, POS_Y) = 55.0
list(334, POS_X) = 225.0
list(334, POS_Y) = 63.0
list(335, POS_X) = -1.0
list(335, POS_Y) = -1.0
list(336, POS_X) = 225.0
list(336, POS_Y) = 58.0
list(337, POS_X) = 204.0
list(337, POS_Y) = 82.0
list(338, POS_X) = -1.0
list(338, POS_Y) = -1.0
list(339, POS_X) = 225.0
list(339, POS_Y) = 29.0
list(340, POS_X) = 211.0
list(340, POS_Y) = 46.0
list(341, POS_X) = -1.0
list(341, POS_Y) = -1.0
list(342, POS_X) = 197.0
list(342, POS_Y) = 156.0
list(343, POS_X) = 192.0
list(343, POS_Y) = 170.0
list(344, POS_X) = -1.0
list(344, POS_Y) = -1.0
list(345, POS_X) = 400.0
list(345, POS_Y) = 73.0
list(346, POS_X) = 414.0
list(346, POS_Y) = 93.0
list(347, POS_X) = -1.0
list(347, POS_Y) = -1.0
list(348, POS_X) = 318.0
list(348, POS_Y) = 199.0
list(349, POS_X) = 312.0
list(349, POS_Y) = 201.0
list(350, POS_X) = 316.0
list(350, POS_Y) = 203.0
list(351, POS_X) = -1.0
list(351, POS_Y) = -1.0
list(352, POS_X) = 264.0
list(352, POS_Y) = 199.0
list(353, POS_X) = 259.0
list(353, POS_Y) = 203.0
list(354, POS_X) = -1.0
list(354, POS_Y) = -1.0
'img = loadImage("hansolo.jpg")
'f = openToEdit("fug.txt")
'seekFile f, fileSize("fug.txt")
speed = 15 // fps = 15
frames = speed * 10 // 10 seconds
frameLimit speed
global f_ofs_x as float
global f_ofs_y as float
f_ofs_x = -248.0
f_ofs_y = -198.0
dim eyes(1, 1) as float
eyes(0, 0) = 248' + f_ofs_x
eyes(0, 1) = 198' + f_ofs_y
eyes(1, 0) = 335' + f_ofs_x
eyes(1, 1) = 198' + f_ofs_y
start = timer()
frame = 0
ind = 0
img_y = 15
function draw(xx#, yy#, s#, iter)
if iter <= 0 then return 0
for i = 0 to LINE_COUNT
r = 1
x1# = list(i, POS_X)
y1# = list(i, POS_Y)
list2(i, POS_X) = x1'+ rand(-r, r)
list2(i, POS_Y) = y1 '+ rand(-r, r)
if x1 <> -1 and y1 <> -1 then
list2(i, POS_X) = (x1+ rand(-r, r) + f_ofs_x)*s + xx
list2(i, POS_Y) = (y1+ rand(-r, r) +f_ofs_y)*s + yy
endif
next i
if iter mod 2 = 0 then
color 255,0,0
else
color 255,255,255
endif
for i = 1 to LINE_COUNT
x1# = list2(i, POS_X)
y1# = list2(i, POS_Y)
x2# = list2(i+1, POS_X)
y2# = list2(i+1, POS_Y)
if (x2 <> -1 and y2 <> -1) and (x1 <> -1 and y2 <> -1) then
line x1, y1, x2, y2
endif
next i
for i = 0 to 1
ex# = (eyes(i, 0) + f_ofs_x)*s + xx
ey# = (eyes(i, 1) + f_ofs_y)*s + yy
draw(ex, ey, 0.03*s, iter-1)
'box ex,ey , 8,8,1
next i
endFunction
frames = 63
scale# = 1.0
temp = makeImage(screenWidth(), screenHeight())
repeat
//drawImage img, 0, img_y
'453 167
mx# = mouseX()
my# = mouseY()
'scale = scale + mouseMoveZ()*scale*0.1
scale = 2.0^(frame*0.16)
f_ofs_x = f_ofs_x + (-leftKey() + rightKey())*0.1
f_ofs_y = f_ofs_y + (-upKey() + downKey())*0.1
'drawToImage temp
'color 0,0,0
'box 0,0,imageWidth(temp), imageHeight(temp), 1
draw(453, 167, scale, 4)
'drawToScreen
'text 0,0,frame
'text 0,12,(timer()-start) / 1000.0
'text 0,24, ind + ": " + mx + ", "+ my
'text 0,36, f_ofs_x + ", " + f_ofs_y
drawScreen
'setWindow "FPS " + FPS()
'wait roundDown((1.0 / speed) * 1000)
'saveImage temp, "frames/kuva" + frame + ".bmp"
'if frame=frames-1 then end
frame = (frame + 1) mod frames
REMSTART
drawToImage img
if mouseHit(1) or mouseHit(2) then
if mouseHit(2) then
mx = -1
my = -1
endif
writeLine f, "("+ind+", POS_X) = " + mx
writeLine f, "("+ind+", POS_Y) = " + my
ind = ind + 1
if mx <> -1 and my <> -1 and ind > 0 then
line old_x#, old_y# - img_y, mx, my - img_y
endif
old_x# = mx
old_y# = my
endif
drawToScreen
if keyHit(cbKeySpace) then
closeFile(f)
endif
REMEND
forever
Sijoititko kyseiset kordinaattilukuarvot ihan puhtaasti päästäsi?CCE wrote:Maailman ensimmäinen Han Solo -zoomeri!Code: Select all
SCREEN 640, 360 const LINE_COUNT = 354 const POS_X = 0 const POS_Y = 1 dim list(LINE_COUNT, 1) as float dim list2(LINE_COUNT, 1) as float list(0, POS_X) = 311.0 list(0, POS_Y) = 5.0 list(1, POS_X) = 364.0 list(1, POS_Y) = 14.0 list(2, POS_X) = 391.0 list(2, POS_Y) = 30.0 list(3, POS_X) = 414.0 list(3, POS_Y) = 60.0 list(4, POS_X) = 434.0 list(4, POS_Y) = 96.0 list(5, POS_X) = 441.0 list(5, POS_Y) = 145.0 list(6, POS_X) = 442.0 list(6, POS_Y) = 188.0 list(7, POS_X) = 428.0 list(7, POS_Y) = 221.0 list(8, POS_X) = 412.0 list(8, POS_Y) = 252.0 list(9, POS_X) = 412.0 list(9, POS_Y) = 269.0 list(10, POS_X) = 408.0 list(10, POS_Y) = 280.0 list(11, POS_X) = 401.0 list(11, POS_Y) = 284.0 list(12, POS_X) = 390.0 list(12, POS_Y) = 287.0 list(13, POS_X) = 385.0 list(13, POS_Y) = 283.0 list(14, POS_X) = -1.0 list(14, POS_Y) = -1.0 list(15, POS_X) = 386.0 list(15, POS_Y) = 279.0 list(16, POS_X) = 393.0 list(16, POS_Y) = 245.0 list(17, POS_X) = 410.0 list(17, POS_Y) = 241.0 list(18, POS_X) = 415.0 list(18, POS_Y) = 224.0 list(19, POS_X) = 416.0 list(19, POS_Y) = 212.0 list(20, POS_X) = 407.0 list(20, POS_Y) = 214.0 list(21, POS_X) = 403.0 list(21, POS_Y) = 221.0 list(22, POS_X) = 400.0 list(22, POS_Y) = 232.0 list(23, POS_X) = 396.0 list(23, POS_Y) = 234.0 list(24, POS_X) = -1.0 list(24, POS_Y) = -1.0 list(25, POS_X) = 392.0 list(25, POS_Y) = 231.0 list(26, POS_X) = 393.0 list(26, POS_Y) = 215.0 list(27, POS_X) = 385.0 list(27, POS_Y) = 201.0 list(28, POS_X) = 383.0 list(28, POS_Y) = 189.0 list(29, POS_X) = 380.0 list(29, POS_Y) = 173.0 list(30, POS_X) = 377.0 list(30, POS_Y) = 125.0 list(31, POS_X) = 369.0 list(31, POS_Y) = 110.0 list(32, POS_X) = 346.0 list(32, POS_Y) = 105.0 list(33, POS_X) = 318.0 list(33, POS_Y) = 114.0 list(34, POS_X) = 288.0 list(34, POS_Y) = 128.0 list(35, POS_X) = 269.0 list(35, POS_Y) = 133.0 list(36, POS_X) = 239.0 list(36, POS_Y) = 129.0 list(37, POS_X) = 222.0 list(37, POS_Y) = 128.0 list(38, POS_X) = 212.0 list(38, POS_Y) = 137.0 list(39, POS_X) = 206.0 list(39, POS_Y) = 154.0 list(40, POS_X) = 204.0 list(40, POS_Y) = 178.0 list(41, POS_X) = 203.0 list(41, POS_Y) = 197.0 list(42, POS_X) = 200.0 list(42, POS_Y) = 211.0 list(43, POS_X) = 203.0 list(43, POS_Y) = 223.0 list(44, POS_X) = 191.0 list(44, POS_Y) = 198.0 list(45, POS_X) = 182.0 list(45, POS_Y) = 199.0 list(46, POS_X) = 177.0 list(46, POS_Y) = 200.0 list(47, POS_X) = 167.0 list(47, POS_Y) = 194.0 list(48, POS_X) = -1.0 list(48, POS_Y) = -1.0 list(49, POS_X) = 167.0 list(49, POS_Y) = 191.0 list(50, POS_X) = 169.0 list(50, POS_Y) = 153.0 list(51, POS_X) = 169.0 list(51, POS_Y) = 125.0 list(52, POS_X) = 177.0 list(52, POS_Y) = 92.0 list(53, POS_X) = 187.0 list(53, POS_Y) = 67.0 list(54, POS_X) = 194.0 list(54, POS_Y) = 56.0 list(55, POS_X) = 211.0 list(55, POS_Y) = 32.0 list(56, POS_X) = 226.0 list(56, POS_Y) = 22.0 list(57, POS_X) = 241.0 list(57, POS_Y) = 15.0 list(58, POS_X) = 265.0 list(58, POS_Y) = 9.0 list(59, POS_X) = 315.0 list(59, POS_Y) = 6.0 list(60, POS_X) = 332.0 list(60, POS_Y) = 7.0 list(61, POS_X) = -1.0 list(61, POS_Y) = -1.0 list(62, POS_X) = 187.0 list(62, POS_Y) = 198.0 list(63, POS_X) = 185.0 list(63, POS_Y) = 214.0 list(64, POS_X) = 188.0 list(64, POS_Y) = 226.0 list(65, POS_X) = 196.0 list(65, POS_Y) = 233.0 list(66, POS_X) = 204.0 list(66, POS_Y) = 236.0 list(67, POS_X) = -1.0 list(67, POS_Y) = -1.0 list(68, POS_X) = 192.0 list(68, POS_Y) = 202.0 list(69, POS_X) = 194.0 list(69, POS_Y) = 219.0 list(70, POS_X) = 202.0 list(70, POS_Y) = 228.0 list(71, POS_X) = -1.0 list(71, POS_Y) = -1.0 list(72, POS_X) = 204.0 list(72, POS_Y) = 240.0 list(73, POS_X) = 206.0 list(73, POS_Y) = 263.0 list(74, POS_X) = 212.0 list(74, POS_Y) = 285.0 list(75, POS_X) = 225.0 list(75, POS_Y) = 305.0 list(76, POS_X) = 236.0 list(76, POS_Y) = 319.0 list(77, POS_X) = 254.0 list(77, POS_Y) = 344.0 list(78, POS_X) = 263.0 list(78, POS_Y) = 352.0 list(79, POS_X) = 278.0 list(79, POS_Y) = 355.0 list(80, POS_X) = 289.0 list(80, POS_Y) = 353.0 list(81, POS_X) = 307.0 list(81, POS_Y) = 356.0 list(82, POS_X) = 324.0 list(82, POS_Y) = 348.0 list(83, POS_X) = 338.0 list(83, POS_Y) = 335.0 list(84, POS_X) = 356.0 list(84, POS_Y) = 320.0 list(85, POS_X) = 372.0 list(85, POS_Y) = 298.0 list(86, POS_X) = 382.0 list(86, POS_Y) = 285.0 list(87, POS_X) = -1.0 list(87, POS_Y) = -1.0 list(88, POS_X) = 250.0 list(88, POS_Y) = 295.0 list(89, POS_X) = 267.0 list(89, POS_Y) = 300.0 list(90, POS_X) = 275.0 list(90, POS_Y) = 299.0 list(91, POS_X) = 283.0 list(91, POS_Y) = 303.0 list(92, POS_X) = 295.0 list(92, POS_Y) = 302.0 list(93, POS_X) = 308.0 list(93, POS_Y) = 303.0 list(94, POS_X) = 327.0 list(94, POS_Y) = 299.0 list(95, POS_X) = 323.0 list(95, POS_Y) = 309.0 list(96, POS_X) = 312.0 list(96, POS_Y) = 317.0 list(97, POS_X) = 289.0 list(97, POS_Y) = 319.0 list(98, POS_X) = 274.0 list(98, POS_Y) = 314.0 list(99, POS_X) = 264.0 list(99, POS_Y) = 308.0 list(100, POS_X) = 251.0 list(100, POS_Y) = 297.0 list(101, POS_X) = -1.0 list(101, POS_Y) = -1.0 list(102, POS_X) = 253.0 list(102, POS_Y) = 294.0 list(103, POS_X) = 265.0 list(103, POS_Y) = 290.0 list(104, POS_X) = 276.0 list(104, POS_Y) = 295.0 list(105, POS_X) = 285.0 list(105, POS_Y) = 297.0 list(106, POS_X) = 297.0 list(106, POS_Y) = 296.0 list(107, POS_X) = 309.0 list(107, POS_Y) = 296.0 list(108, POS_X) = 324.0 list(108, POS_Y) = 299.0 list(109, POS_X) = -1.0 list(109, POS_Y) = -1.0 list(110, POS_X) = 283.0 list(110, POS_Y) = 283.0 list(111, POS_X) = 280.0 list(111, POS_Y) = 290.0 list(112, POS_X) = 283.0 list(112, POS_Y) = 296.0 list(113, POS_X) = -1.0 list(113, POS_Y) = -1.0 list(114, POS_X) = 289.0 list(114, POS_Y) = 283.0 list(115, POS_X) = 294.0 list(115, POS_Y) = 288.0 list(116, POS_X) = 291.0 list(116, POS_Y) = 294.0 list(117, POS_X) = -1.0 list(117, POS_Y) = -1.0 list(118, POS_X) = 321.0 list(118, POS_Y) = 264.0 list(119, POS_X) = 345.0 list(119, POS_Y) = 298.0 list(120, POS_X) = -1.0 list(120, POS_Y) = -1.0 list(121, POS_X) = 262.0 list(121, POS_Y) = 245.0 list(122, POS_X) = 245.0 list(122, POS_Y) = 276.0 list(123, POS_X) = -1.0 list(123, POS_Y) = -1.0 list(124, POS_X) = 301.0 list(124, POS_Y) = 191.0 list(125, POS_X) = 295.0 list(125, POS_Y) = 211.0 list(126, POS_X) = 299.0 list(126, POS_Y) = 234.0 list(127, POS_X) = 308.0 list(127, POS_Y) = 253.0 list(128, POS_X) = 314.0 list(128, POS_Y) = 268.0 list(129, POS_X) = 306.0 list(129, POS_Y) = 273.0 list(130, POS_X) = 297.0 list(130, POS_Y) = 269.0 list(131, POS_X) = 290.0 list(131, POS_Y) = 274.0 list(132, POS_X) = 275.0 list(132, POS_Y) = 275.0 list(133, POS_X) = 268.0 list(133, POS_Y) = 269.0 list(134, POS_X) = 267.0 list(134, POS_Y) = 264.0 list(135, POS_X) = 266.0 list(135, POS_Y) = 258.0 list(136, POS_X) = 271.0 list(136, POS_Y) = 249.0 list(137, POS_X) = 277.0 list(137, POS_Y) = 205.0 list(138, POS_X) = -1.0 list(138, POS_Y) = -1.0 list(139, POS_X) = 316.0 list(139, POS_Y) = 327.0 list(140, POS_X) = 312.0 list(140, POS_Y) = 331.0 list(141, POS_X) = 316.0 list(141, POS_Y) = 333.0 list(142, POS_X) = 321.0 list(142, POS_Y) = 330.0 list(143, POS_X) = 316.0 list(143, POS_Y) = 328.0 list(144, POS_X) = -1.0 list(144, POS_Y) = -1.0 list(145, POS_X) = 265.0 list(145, POS_Y) = 195.0 list(146, POS_X) = 253.0 list(146, POS_Y) = 190.0 list(147, POS_X) = 237.0 list(147, POS_Y) = 192.0 list(148, POS_X) = 229.0 list(148, POS_Y) = 198.0 list(149, POS_X) = 238.0 list(149, POS_Y) = 204.0 list(150, POS_X) = 253.0 list(150, POS_Y) = 204.0 list(151, POS_X) = 264.0 list(151, POS_Y) = 204.0 list(152, POS_X) = 268.0 list(152, POS_Y) = 205.0 list(153, POS_X) = 269.0 list(153, POS_Y) = 198.0 list(154, POS_X) = 266.0 list(154, POS_Y) = 196.0 list(155, POS_X) = -1.0 list(155, POS_Y) = -1.0 list(156, POS_X) = 316.0 list(156, POS_Y) = 203.0 list(157, POS_X) = 324.0 list(157, POS_Y) = 192.0 list(158, POS_X) = 335.0 list(158, POS_Y) = 190.0 list(159, POS_X) = 346.0 list(159, POS_Y) = 192.0 list(160, POS_X) = 358.0 list(160, POS_Y) = 199.0 list(161, POS_X) = 359.0 list(161, POS_Y) = 202.0 list(162, POS_X) = 349.0 list(162, POS_Y) = 205.0 list(163, POS_X) = 339.0 list(163, POS_Y) = 206.0 list(164, POS_X) = 329.0 list(164, POS_Y) = 205.0 list(165, POS_X) = 318.0 list(165, POS_Y) = 204.0 list(166, POS_X) = -1.0 list(166, POS_Y) = -1.0 list(167, POS_X) = 314.0 list(167, POS_Y) = 205.0 list(168, POS_X) = 313.0 list(168, POS_Y) = 211.0 list(169, POS_X) = 323.0 list(169, POS_Y) = 212.0 list(170, POS_X) = 334.0 list(170, POS_Y) = 214.0 list(171, POS_X) = 346.0 list(171, POS_Y) = 211.0 list(172, POS_X) = 360.0 list(172, POS_Y) = 202.0 list(173, POS_X) = -1.0 list(173, POS_Y) = -1.0 list(174, POS_X) = 271.0 list(174, POS_Y) = 205.0 list(175, POS_X) = 271.0 list(175, POS_Y) = 209.0 list(176, POS_X) = 263.0 list(176, POS_Y) = 210.0 list(177, POS_X) = 247.0 list(177, POS_Y) = 211.0 list(178, POS_X) = 234.0 list(178, POS_Y) = 211.0 list(179, POS_X) = 227.0 list(179, POS_Y) = 199.0 list(180, POS_X) = -1.0 list(180, POS_Y) = -1.0 list(181, POS_X) = 267.0 list(181, POS_Y) = 182.0 list(182, POS_X) = 250.0 list(182, POS_Y) = 182.0 list(183, POS_X) = 230.0 list(183, POS_Y) = 181.0 list(184, POS_X) = 220.0 list(184, POS_Y) = 180.0 list(185, POS_X) = 216.0 list(185, POS_Y) = 186.0 list(186, POS_X) = 226.0 list(186, POS_Y) = 189.0 list(187, POS_X) = 256.0 list(187, POS_Y) = 187.0 list(188, POS_X) = 265.0 list(188, POS_Y) = 186.0 list(189, POS_X) = 268.0 list(189, POS_Y) = 181.0 list(190, POS_X) = -1.0 list(190, POS_Y) = -1.0 list(191, POS_X) = 310.0 list(191, POS_Y) = 185.0 list(192, POS_X) = 335.0 list(192, POS_Y) = 179.0 list(193, POS_X) = 351.0 list(193, POS_Y) = 180.0 list(194, POS_X) = 364.0 list(194, POS_Y) = 182.0 list(195, POS_X) = 367.0 list(195, POS_Y) = 189.0 list(196, POS_X) = 361.0 list(196, POS_Y) = 190.0 list(197, POS_X) = 350.0 list(197, POS_Y) = 186.0 list(198, POS_X) = 337.0 list(198, POS_Y) = 186.0 list(199, POS_X) = 325.0 list(199, POS_Y) = 188.0 list(200, POS_X) = 310.0 list(200, POS_Y) = 188.0 list(201, POS_X) = 311.0 list(201, POS_Y) = 183.0 list(202, POS_X) = -1.0 list(202, POS_Y) = -1.0 list(203, POS_X) = 349.0 list(203, POS_Y) = 144.0 list(204, POS_X) = 305.0 list(204, POS_Y) = 149.0 list(205, POS_X) = 295.0 list(205, POS_Y) = 156.0 list(206, POS_X) = 267.0 list(206, POS_Y) = 150.0 list(207, POS_X) = 251.0 list(207, POS_Y) = 153.0 list(208, POS_X) = 236.0 list(208, POS_Y) = 157.0 list(209, POS_X) = -1.0 list(209, POS_Y) = -1.0 list(210, POS_X) = 352.0 list(210, POS_Y) = 158.0 list(211, POS_X) = 323.0 list(211, POS_Y) = 162.0 list(212, POS_X) = 307.0 list(212, POS_Y) = 166.0 list(213, POS_X) = 275.0 list(213, POS_Y) = 166.0 list(214, POS_X) = 251.0 list(214, POS_Y) = 165.0 list(215, POS_X) = 228.0 list(215, POS_Y) = 168.0 list(216, POS_X) = -1.0 list(216, POS_Y) = -1.0 list(217, POS_X) = 386.0 list(217, POS_Y) = 291.0 list(218, POS_X) = 381.0 list(218, POS_Y) = 317.0 list(219, POS_X) = 374.0 list(219, POS_Y) = 339.0 list(220, POS_X) = 366.0 list(220, POS_Y) = 354.0 list(221, POS_X) = -1.0 list(221, POS_Y) = -1.0 list(222, POS_X) = 391.0 list(222, POS_Y) = 296.0 list(223, POS_X) = 388.0 list(223, POS_Y) = 320.0 list(224, POS_X) = 383.0 list(224, POS_Y) = 337.0 list(225, POS_X) = 373.0 list(225, POS_Y) = 356.0 list(226, POS_X) = -1.0 list(226, POS_Y) = -1.0 list(227, POS_X) = 228.0 list(227, POS_Y) = 314.0 list(228, POS_X) = 230.0 list(228, POS_Y) = 334.0 list(229, POS_X) = 244.0 list(229, POS_Y) = 355.0 list(230, POS_X) = -1.0 list(230, POS_Y) = -1.0 list(231, POS_X) = 223.0 list(231, POS_Y) = 314.0 list(232, POS_X) = 223.0 list(232, POS_Y) = 336.0 list(233, POS_X) = 228.0 list(233, POS_Y) = 357.0 list(234, POS_X) = -1.0 list(234, POS_Y) = -1.0 list(235, POS_X) = 205.0 list(235, POS_Y) = 271.0 list(236, POS_X) = 153.0 list(236, POS_Y) = 297.0 list(237, POS_X) = 95.0 list(237, POS_Y) = 323.0 list(238, POS_X) = 84.0 list(238, POS_Y) = 354.0 list(239, POS_X) = -1.0 list(239, POS_Y) = -1.0 list(240, POS_X) = 93.0 list(240, POS_Y) = 322.0 list(241, POS_X) = 67.0 list(241, POS_Y) = 340.0 list(242, POS_X) = 57.0 list(242, POS_Y) = 356.0 list(243, POS_X) = -1.0 list(243, POS_Y) = -1.0 list(244, POS_X) = 413.0 list(244, POS_Y) = 267.0 list(245, POS_X) = 465.0 list(245, POS_Y) = 300.0 list(246, POS_X) = 518.0 list(246, POS_Y) = 312.0 list(247, POS_X) = 527.0 list(247, POS_Y) = 322.0 list(248, POS_X) = 536.0 list(248, POS_Y) = 353.0 list(249, POS_X) = -1.0 list(249, POS_Y) = -1.0 list(250, POS_X) = 202.0 list(250, POS_Y) = 239.0 list(251, POS_X) = 189.0 list(251, POS_Y) = 241.0 list(252, POS_X) = 184.0 list(252, POS_Y) = 235.0 list(253, POS_X) = 182.0 list(253, POS_Y) = 221.0 list(254, POS_X) = 183.0 list(254, POS_Y) = 216.0 list(255, POS_X) = -1.0 list(255, POS_Y) = -1.0 list(256, POS_X) = 202.0 list(256, POS_Y) = 244.0 list(257, POS_X) = 194.0 list(257, POS_Y) = 252.0 list(258, POS_X) = 198.0 list(258, POS_Y) = 260.0 list(259, POS_X) = 203.0 list(259, POS_Y) = 268.0 list(260, POS_X) = -1.0 list(260, POS_Y) = -1.0 list(261, POS_X) = 301.0 list(261, POS_Y) = 78.0 list(262, POS_X) = 281.0 list(262, POS_Y) = 87.0 list(263, POS_X) = 256.0 list(263, POS_Y) = 86.0 list(264, POS_X) = 239.0 list(264, POS_Y) = 85.0 list(265, POS_X) = 209.0 list(265, POS_Y) = 105.0 list(266, POS_X) = -1.0 list(266, POS_Y) = -1.0 list(267, POS_X) = 296.0 list(267, POS_Y) = 75.0 list(268, POS_X) = 271.0 list(268, POS_Y) = 81.0 list(269, POS_X) = 244.0 list(269, POS_Y) = 78.0 list(270, POS_X) = 220.0 list(270, POS_Y) = 90.0 list(271, POS_X) = 210.0 list(271, POS_Y) = 97.0 list(272, POS_X) = -1.0 list(272, POS_Y) = -1.0 list(273, POS_X) = 327.0 list(273, POS_Y) = 46.0 list(274, POS_X) = 349.0 list(274, POS_Y) = 44.0 list(275, POS_X) = 370.0 list(275, POS_Y) = 51.0 list(276, POS_X) = 392.0 list(276, POS_Y) = 67.0 list(277, POS_X) = -1.0 list(277, POS_Y) = -1.0 list(278, POS_X) = 331.0 list(278, POS_Y) = 37.0 list(279, POS_X) = 347.0 list(279, POS_Y) = 32.0 list(280, POS_X) = 366.0 list(280, POS_Y) = 39.0 list(281, POS_X) = 395.0 list(281, POS_Y) = 55.0 list(282, POS_X) = -1.0 list(282, POS_Y) = -1.0 list(283, POS_X) = 349.0 list(283, POS_Y) = 49.0 list(284, POS_X) = 369.0 list(284, POS_Y) = 64.0 list(285, POS_X) = -1.0 list(285, POS_Y) = -1.0 list(286, POS_X) = 353.0 list(286, POS_Y) = 78.0 list(287, POS_X) = 382.0 list(287, POS_Y) = 89.0 list(288, POS_X) = 401.0 list(288, POS_Y) = 104.0 list(289, POS_X) = 411.0 list(289, POS_Y) = 122.0 list(290, POS_X) = -1.0 list(290, POS_Y) = -1.0 list(291, POS_X) = 213.0 list(291, POS_Y) = 69.0 list(292, POS_X) = 204.0 list(292, POS_Y) = 80.0 list(293, POS_X) = -1.0 list(293, POS_Y) = -1.0 list(294, POS_X) = 207.0 list(294, POS_Y) = 63.0 list(295, POS_X) = 196.0 list(295, POS_Y) = 70.0 list(296, POS_X) = -1.0 list(296, POS_Y) = -1.0 list(297, POS_X) = 202.0 list(297, POS_Y) = 94.0 list(298, POS_X) = 189.0 list(298, POS_Y) = 106.0 list(299, POS_X) = -1.0 list(299, POS_Y) = -1.0 list(300, POS_X) = 182.0 list(300, POS_Y) = 129.0 list(301, POS_X) = 178.0 list(301, POS_Y) = 142.0 list(302, POS_X) = -1.0 list(302, POS_Y) = -1.0 list(303, POS_X) = 316.0 list(303, POS_Y) = 27.0 list(304, POS_X) = 327.0 list(304, POS_Y) = 18.0 list(305, POS_X) = 338.0 list(305, POS_Y) = 16.0 list(306, POS_X) = 360.0 list(306, POS_Y) = 17.0 list(307, POS_X) = 372.0 list(307, POS_Y) = 26.0 list(308, POS_X) = -1.0 list(308, POS_Y) = -1.0 list(309, POS_X) = 328.0 list(309, POS_Y) = 26.0 list(310, POS_X) = 342.0 list(310, POS_Y) = 23.0 list(311, POS_X) = 365.0 list(311, POS_Y) = 28.0 list(312, POS_X) = 375.0 list(312, POS_Y) = 35.0 list(313, POS_X) = -1.0 list(313, POS_Y) = -1.0 list(314, POS_X) = 386.0 list(314, POS_Y) = 115.0 list(315, POS_X) = 405.0 list(315, POS_Y) = 143.0 list(316, POS_X) = -1.0 list(316, POS_Y) = -1.0 list(317, POS_X) = 386.0 list(317, POS_Y) = 142.0 list(318, POS_X) = 391.0 list(318, POS_Y) = 153.0 list(319, POS_X) = 384.0 list(319, POS_Y) = 154.0 list(320, POS_X) = 386.0 list(320, POS_Y) = 144.0 list(321, POS_X) = -1.0 list(321, POS_Y) = -1.0 list(322, POS_X) = 415.0 list(322, POS_Y) = 162.0 list(323, POS_X) = -1.0 list(323, POS_Y) = -1.0 list(324, POS_X) = 428.0 list(324, POS_Y) = 185.0 list(325, POS_X) = 426.0 list(325, POS_Y) = 202.0 list(326, POS_X) = -1.0 list(326, POS_Y) = -1.0 list(327, POS_X) = 347.0 list(327, POS_Y) = 62.0 list(328, POS_X) = 357.0 list(328, POS_Y) = 67.0 list(329, POS_X) = -1.0 list(329, POS_Y) = -1.0 list(330, POS_X) = 245.0 list(330, POS_Y) = 32.0 list(331, POS_X) = 230.0 list(331, POS_Y) = 45.0 list(332, POS_X) = -1.0 list(332, POS_Y) = -1.0 list(333, POS_X) = 232.0 list(333, POS_Y) = 55.0 list(334, POS_X) = 225.0 list(334, POS_Y) = 63.0 list(335, POS_X) = -1.0 list(335, POS_Y) = -1.0 list(336, POS_X) = 225.0 list(336, POS_Y) = 58.0 list(337, POS_X) = 204.0 list(337, POS_Y) = 82.0 list(338, POS_X) = -1.0 list(338, POS_Y) = -1.0 list(339, POS_X) = 225.0 list(339, POS_Y) = 29.0 list(340, POS_X) = 211.0 list(340, POS_Y) = 46.0 list(341, POS_X) = -1.0 list(341, POS_Y) = -1.0 list(342, POS_X) = 197.0 list(342, POS_Y) = 156.0 list(343, POS_X) = 192.0 list(343, POS_Y) = 170.0 list(344, POS_X) = -1.0 list(344, POS_Y) = -1.0 list(345, POS_X) = 400.0 list(345, POS_Y) = 73.0 list(346, POS_X) = 414.0 list(346, POS_Y) = 93.0 list(347, POS_X) = -1.0 list(347, POS_Y) = -1.0 list(348, POS_X) = 318.0 list(348, POS_Y) = 199.0 list(349, POS_X) = 312.0 list(349, POS_Y) = 201.0 list(350, POS_X) = 316.0 list(350, POS_Y) = 203.0 list(351, POS_X) = -1.0 list(351, POS_Y) = -1.0 list(352, POS_X) = 264.0 list(352, POS_Y) = 199.0 list(353, POS_X) = 259.0 list(353, POS_Y) = 203.0 list(354, POS_X) = -1.0 list(354, POS_Y) = -1.0 'img = loadImage("hansolo.jpg") 'f = openToEdit("fug.txt") 'seekFile f, fileSize("fug.txt") speed = 15 // fps = 15 frames = speed * 10 // 10 seconds frameLimit speed global f_ofs_x as float global f_ofs_y as float f_ofs_x = -248.0 f_ofs_y = -198.0 dim eyes(1, 1) as float eyes(0, 0) = 248' + f_ofs_x eyes(0, 1) = 198' + f_ofs_y eyes(1, 0) = 335' + f_ofs_x eyes(1, 1) = 198' + f_ofs_y start = timer() frame = 0 ind = 0 img_y = 15 function draw(xx#, yy#, s#, iter) if iter <= 0 then return 0 for i = 0 to LINE_COUNT r = 1 x1# = list(i, POS_X) y1# = list(i, POS_Y) list2(i, POS_X) = x1'+ rand(-r, r) list2(i, POS_Y) = y1 '+ rand(-r, r) if x1 <> -1 and y1 <> -1 then list2(i, POS_X) = (x1+ rand(-r, r) + f_ofs_x)*s + xx list2(i, POS_Y) = (y1+ rand(-r, r) +f_ofs_y)*s + yy endif next i if iter mod 2 = 0 then color 255,0,0 else color 255,255,255 endif for i = 1 to LINE_COUNT x1# = list2(i, POS_X) y1# = list2(i, POS_Y) x2# = list2(i+1, POS_X) y2# = list2(i+1, POS_Y) if (x2 <> -1 and y2 <> -1) and (x1 <> -1 and y2 <> -1) then line x1, y1, x2, y2 endif next i for i = 0 to 1 ex# = (eyes(i, 0) + f_ofs_x)*s + xx ey# = (eyes(i, 1) + f_ofs_y)*s + yy draw(ex, ey, 0.03*s, iter-1) 'box ex,ey , 8,8,1 next i endFunction frames = 63 scale# = 1.0 temp = makeImage(screenWidth(), screenHeight()) repeat //drawImage img, 0, img_y '453 167 mx# = mouseX() my# = mouseY() 'scale = scale + mouseMoveZ()*scale*0.1 scale = 2.0^(frame*0.16) f_ofs_x = f_ofs_x + (-leftKey() + rightKey())*0.1 f_ofs_y = f_ofs_y + (-upKey() + downKey())*0.1 'drawToImage temp 'color 0,0,0 'box 0,0,imageWidth(temp), imageHeight(temp), 1 draw(453, 167, scale, 4) 'drawToScreen 'text 0,0,frame 'text 0,12,(timer()-start) / 1000.0 'text 0,24, ind + ": " + mx + ", "+ my 'text 0,36, f_ofs_x + ", " + f_ofs_y drawScreen 'setWindow "FPS " + FPS() 'wait roundDown((1.0 / speed) * 1000) 'saveImage temp, "frames/kuva" + frame + ".bmp" 'if frame=frames-1 then end frame = (frame + 1) mod frames /* drawToImage img if mouseHit(1) or mouseHit(2) then if mouseHit(2) then mx = -1 my = -1 endif writeLine f, "("+ind+", POS_X) = " + mx writeLine f, "("+ind+", POS_Y) = " + my ind = ind + 1 if mx <> -1 and my <> -1 and ind > 0 then line old_x#, old_y# - img_y, mx, my - img_y endif old_x# = mx old_y# = my endif drawToScreen if keyHit(cbKeySpace) then closeFile(f) endif */ forever
En suinkaan, vaan käytin hiiripohjaista editoria, jonka kommentoitu lähdekoodi on mukana viestissäni.Jopas jotakin wrote:Sijoititko kyseiset kordinaattilukuarvot ihan puhtaasti päästäsi?
Code: Select all
SCREEN 400,300,0,1
Const BLOK=8
Function RGB(r,g,b)
r=Min(255,Max(0,r))
g=Min(255,Max(0,g))
b=Min(255,Max(0,b))
Return r Shl 16 + g Shl 8 + b
End Function
Dim plasma(400,300) As Float
'ClsColor 64,64,64
Cls
mode=0
z#=10
Repeat
t#=t+0.1
If z>1.1 Then
z=z-0.1
Else
z=1.1
End If
mode=mode+(KeyHit(200)-KeyHit(208))
Lock
a#=a+10
sina#=Sin(a)
cosa#=Cos(a)
For x = 0 To 400 Step BLOK
For y = 0 To 300 Step BLOK
Select mode
Case 0
plasma(x,y)=CurveValue((Sin(x*1.1+t*17)*Cos(y*Sin(x+t*17)+t*11)*2),plasma(x,y),20)
Case 1
plasma(x,y)=CurveValue((Sin(x*1.1+t*17)*Cos(y*0.7+t*11)),plasma(x,y),20)
Case 2
plasma(x,y)=CurveValue((Sin(x*1.1+t*17)*Cos(y*x+t*11)),plasma(x,y),20)
Default
plasma(x,y)=CurveValue(0,plasma(x,y),20)
End Select
r=255*(-plasma(x,y))
g=255*(-plasma(x,y))
b=255*(plasma(x,y))
If 1=1 Then
xx=(x-200)+plasma(x,y)*BLOK+Rnd(-1,1)
yy=(y-150)+plasma(x,y)*BLOK+Rnd(-1,1)
xx=xx*(1/z)
yy=yy*(1/z)
'xx=xx*cosa+yy*-sina
'yy=xx*-sina+yy*cosa
xx=xx+200+plasma(x,y)*BLOK
yy=yy+150-plasma(x,y)*BLOK
rg=RGB(r/2,g/2,b/2)
PutPixel2 xx,yy,RGB(r*4,g*4,b*4)
PutPixel2 xx+1,yy,rg
PutPixel2 xx,yy+1,rg
PutPixel2 xx-1,yy,rg
PutPixel2 xx,yy-1,rg
PutPixel2 xx+1,yy+1,rg
PutPixel2 xx-1,yy+1,rg
PutPixel2 xx-1,yy-1,rg
PutPixel2 xx+1,yy-1,rg
End If
Next y
Next x
Unlock
DrawScreen
Forever
Code: Select all
'This is your first CoolBasic intro!
'katso alkuperäinen selitys: http://atomim.kapsi.fi/r/pyor.cb
'lisätty zoomaus
SetWindow "ladataan mipmappeja"
SCREEN 400,300,0,2
'SCREEN 800,600
img= LoadImage("media/map.bmp")
Smooth2D ON
'remstart
img2=CloneImage(img)
ResizeImage img2,ImageWidth(img)*1.5,ImageHeight(img)*1.5
fiximg(img2)
ResizeImage img2,ImageWidth(img),ImageHeight(img)
fiximg(img2)
img3=CloneImage(img2)
ResizeImage img3,ImageWidth(img)*1.5,ImageHeight(img)*1.5
fiximg(img3)
ResizeImage img3,ImageWidth(img),ImageHeight(img)
fiximg(img3)
img4=CloneImage(img3)
ResizeImage img4,ImageWidth(img)*1.5,ImageHeight(img)*1.5
fiximg(img4)
ResizeImage img4,ImageWidth(img),ImageHeight(img)
fiximg(img4)
ResizeImage img4,ImageWidth(img)*0.5,ImageHeight(img)*0.5
fiximg(img4)
img5=CloneImage(img4)
ResizeImage img5,ImageWidth(img)*1.5,ImageHeight(img)*1.5
fiximg(img5)
ResizeImage img5,ImageWidth(img),ImageHeight(img)
fiximg(img5)
ResizeImage img5,ImageWidth(img)*0.5,ImageHeight(img)*0.5
fiximg(img5)
imgb=CloneImage(img)
ResizeImage imgb,ImageWidth(img)*2,ImageHeight(img)*2
fiximg(imgb)
'remend
Global extraspace#
extraspace=3.7//1.75
bw=ImageWidth(img)*extraspace
bh=imageHeight(img)
ix=(bw-ImageWidth(img))/2
iy=(bh*extraspace-bh)/2
buf = MakeImage(bw,Int(bh*extraspace))
buf2 = makeImage(bw,Int(bh*extraspace))
buf3 = makeImage(bw,bh)
buf4 = makeImage(bw,bh)
t=timer()
kulma#=0
Repeat
'ajanotto alku
t=Timer()
tt=t*0.3
zoom#=1+Sin(tt*0.2)*0.4*2.0
kulma#=tt*0.13
cposx#=Sin(tt*0.03)*2000
cposy#=Sin(tt*0.017)*2000
clear(buf):clear(buf2):clear(buf3):clear(buf4)
DrawToImage buf
'DrawImage img,ix,iy
cx#=(cposx+400*10) Mod 400
cy#=(cposy+300*10) Mod 300
For x=-1 To 1 Step 1
For y=-1 To 1 Step 1
If zoom<1.0 And zoom>0.7 Then
DrawImage imgb*(zoom>=1.0)+img2*(zoom>0.85 And zoom<1.0)+img3*(zoom<=0.85 And zoom>=0.7),ix+x*400+cx,iy+y*300+cy
ElseIf zoom<0.7 Then
DrawImage img5*(zoom<=0.6)+img4*(zoom<0.7 And zoom >0.6),ix+ImageWidth(img)*0.5*0.5+x*400*0.5+cx*0.5,iy+bh*0.5*0.5+y*300*0.5+cy*0.5
Else
DrawImage imgb,ix-ImageWidth(img)*0.5+x*400*2+cx*2,iy-bh*0.5+y*300*2+cy*2
EndIf
Next y
Next x
DrawToScreen
pyör(buf,buf2,buf3,buf4,kulma,zoom*((1.0/2)^(0+(zoom>=1.0)-(zoom<=0.7))) )
DrawImage buf4,-ix,0
For x=10 To -10 Step -1
For y=10 To- 10 Step -1
xo=Cos(kulma)*zoom*(400)*y-Sin(kulma)*zoom*(300)*x
yo=-Cos(kulma)*zoom*(300)*x-Sin(kulma)*zoom*(400)*y
DrawImage buf4,-ix+xo,yo
Next y
Next x
If MouseDown(1)
Color Sin(kulma)*127+128,Cos(MouseX())*127+128,Sin(MouseY()+tt*0.01)*127+128
a2=GetAngle(200,150,MouseX(),MouseY())
a3=kulma-a2
d=Distance(MouseX(),MouseY(),200,150)/zoom
xx#=(200+Cos(a3)*d-cposx+400*100) Mod 400
yy#=(150+Sin(a3)*d-cposy+300*100) Mod 300
DrawToImage img2
Circle xx,yy,10
DrawToScreen
DrawToImage img3
Circle xx,yy,10
DrawToScreen
DrawToImage img4
Circle xx*0.5,yy*0.5,5
DrawToScreen
DrawToImage img5
Circle xx*0.5,yy*0.5,5
DrawToScreen
DrawToImage imgb
Circle xx*2,yy*2,20
DrawToScreen
EndIf
'DrawImage buf,-ix,-iy:DrawImage buf2,400-ix,-iy:DrawImage buf3,-ix,300:DrawImage buf4,400-ix+(kulma Mod 2)*0,300
//ajanotto loppu
t2=Timer()-t
setWindow "kulma: "+a+" pyöritysaika: "+t2
DrawScreen
Forever
Function pyör(buf,buf2,buf3,buf4, a#, zoom#)
w=ImageWidth(buf4)
w2#=w/2
h=ImageHeight(buf4)
h2#=h/2
he=h*extraspace
he2#=h2*extraspace
izoom#=1.0/zoom
If (a+270) mod 360 > 180 Then
a#= (a+90) mod 360 - 90
y#=sin(a)
x#=- tan(a/2.0)
For i=0 To he
CopyBox 0,Int((i-he2)*izoom+he2+1000)-1000,w,1,Int((he2-i)*x*izoom),i,Image(buf),Image(buf2)
Next i
For i=0 To w
CopyBox Int((i-w2)*izoom+w2+1000)-1000,0,1,he,i,Int((w2-i)*y)+Int(h2-he2),Image(buf2),Image(buf3)
Next i
For i=0 to h
CopyBox 0,i,w,1,Int((h2-i)*x),i,image(buf3),image(buf4)
next i
//lasketaan toiset 180 astetta suunnilleen samanlailla
'remstart
Else
a#=((a+90) mod 360 + 90)
y#=sin(a)
x#=-tan(a/2.0)
For i=0 to he
CopyBox 0,Int((i-he2)*izoom+he2+1000)-1000,w,1,Int((he2-i)*x*izoom),i,Image(buf),image(buf2)
Next i
For i=0 To w
CopyBox Int(w-((i-w2)*izoom+w2)+1000)-1000,0,1,he,i,-Int((w2-i)*y)+Int(h2-he2),Image(buf2),Image(buf3)
Next i
For i=0 to h
CopyBox 0,h-i,w,1,Int((h2-i)*x),i,image(buf3),image(buf4)
Next i
EndIf
'remend
EndFunction
function clear(buf)
drawToImage buf
cls
DrawToScreen
EndFunction
'tällä korjataan resizeimagen tummentamat reunat
Function Fiximg(buf)
DrawToImage(buf)
For i=1 To 2
CopyBox 0,i,ImageWidth(buf),1,0,0,Image(buf)
CopyBox i,0,1,ImageHeight(buf),0,0,Image(buf)
CopyBox 0,ImageHeight(buf)-1-i,ImageWidth(buf),1,0,ImageHeight(buf)-i,Image(buf)
CopyBox ImageWidth(buf)-1-i,0,1,ImageHeight(buf),ImageWidth(buf)-i,0,Image(buf)
Next i
DrawToScreen
EndFunction
Annoin sen pyöriä jonkun aikaa mutta 10.000 "bobs" eikä FPS tipu.koodaaja wrote:Isketääs tämä tännekin. Shadebobeja yhden ZX -demon innoittamana, renderöintinopeuksia eri pallomäärille saa ilmoitella.
Code: Select all
SCREEN 640, 480 Dim imgs(9) Repeat If im = 0 And ang = 0 Then ball = MakeImage(50, 50) DrawToImage ball For i = 0 To 49 If i<10 then imgs(i) = MakeImage(640, 480) For j = 0 To 49 If Distance(i,j,25,25)<23 Then c# = Max(.0, .1+.45*((i-25)/24.0-(j-25)/24.0+Sqrt(1-(i-25)*(i-25)/576.0-(j-25)*(j-25)/756.0))) Color 20+c*80, 40+c*80, 100+c*100 Else Color 255, 0, 255 EndIf Dot i, j Next j Next i DrawToScreen MaskImage ball, 255, 0, 255 Color 255, 255, 255 im = 0 EndIf im = (im + 1) Mod 10 DrawToImage imgs(im) For i = 0 To balls + 1 DrawImage ball, 320+120.0*Cos(.20*(ang+im))-80*Sin(.60*(ang+im))-25, 240+120*Sin(.17*(ang+im))+80*Cos(.57*(ang+im))-25 Next i If im = 9 Then ang = ang + 9 count + 1 EndIf DrawToScreen DrawImage imgs(im), 0, 0 Text 5,5, "CB knows no boundaries (FPS():"+Str(FPS())+")" Text 400, 460, Str(count)+" bobs by msqrt/Peisik" DrawScreen Forever