Pitää yrittää vielä vähän kehitellä.. On niin karkea tuo minun tekele
Efektit
Re: Efektit
Hienohan tuo on Hyvää työtä
EDIT:
Re: Efektit
Teimpä tällaisen simppelihkön räjähdys/paineaaltoefektin.
Code: Select all
FrameLimit 40
SCREEN 800, 600
Const R_VÄLI = 5
Const R_NUM = 10
rstart = 10
rmax = 255
kasvu = 4
r = 0
Repeat
r = Explosion(r, rstart, rmax, kasvu, 0, R_VÄLI, R_NUM)
DrawScreen
Forever
Function Explosion(curR, rStart, rMax, rKasvu, tyyppi = 0, _kerrosväli = 5, _kerrosmäärä = 10)
If curR < rStart Then curR = rStart
curR = curR + rKasvu
If curR > rMax + _kerrosmäärä * _kerrosväli Then
If tyyppi = 0 Then // Looppi
curR = rStart
Else // Pysäytys
curR = -1 // Ilmoittaa siitä että efekti lopussa.
EndIf
EndIf
For i = 0 To _kerrosmäärä
col# = Max(Min(255 - ((curR - i * _kerrosväli * 1.0) / (rMax - rStart)) * 255.0, 255), 0)
Color col, col, col
Circle 400 - (curR/2 - i * _kerrosväli), 300 - (curR/2 - i * _kerrosväli), curR - (i * _kerrosväli) * 2, True
Next i
Return curR
EndFunction
-
- Devoted Member
- Posts: 594
- Joined: Tue Sep 30, 2008 4:30 pm
- Location: Ruudun toisella puolella
Re: Efektit
Löysin jonkin vanhan tuliefektin raakileen jonka olin tehnyt, mutta se ei jotenkin toiminut. Korjailin hetken ja sain tällaista aikaan;
skaalasin ruudun vielä Peisikin doublePixel -aliohjelmalla, kiitokset sinne
Code: Select all
Const SW=80
Const SH=60
SCREEN SW*2,SH*2,0,1
SCREEN SW*2,SH*2,0,2
zoomed_screen_a = MakeImage(ScreenWidth(), ScreenHeight())
zoomed_screen = MakeImage(ScreenWidth(), ScreenHeight())
MaskImage zoomed_screen_a, 255, 0, 254
MaskImage zoomed_screen, 255, 0, 254
Dim buf1(SW,SH) As Float
Dim buf2(SW,SH) As Float
c=0
pot#=1.2
Global t
blockynes=1
disrupt#=0
bx#=0
bxv#=0
r#=0.5
g#=2
b#=5
Repeat
t=Timer()
bxv=bxv+(KeyDown(32)-KeyDown(30))*0.1
bx=bx+bxv
bxv=CurveValue(0,bxv,20)
If bx>SW+4 Then bx=-5
If bx<-5 Then bx=SW+4
Lock
For i=0 To ScreenWidth()-1
'If i<bx+5 And i>bx-5 Then
buf1(i,ScreenHeight()-1) = 255
buf1(i,ScreenHeight()-2) = 255
'EndIf
Next i
xx=CurveValue(Rand(-80,160),xx,6)
xx2=CurveValue((xx+xx3)/2,xx2,10)
xx3=CurveValue(Rand(-80,160),xx3,10)
For x=1 To SW-1
For y=1 To SH-1
c1=buf1(x+1,y+1)
c2=buf1(x-1,y-1)
c3=buf1(x-1,y+1)
c4=buf1(x+1,y-1)
newc=(c1+c2+c3+c4)/Rnd(3,5)
newc=newc-Rnd(0.1,15)
If newc<0 Then newc=0
buf2(x,y-1)=newc
Next y
Next x
For x=1 To SW-1
For y=1 To SH-1
Color Min(255,Max(0,buf2(x,y)^pot/r)),Min(255,Max(0,buf2(x,y)^pot/g)),Min(255,Max(0,buf2(x,y)^pot/b))
Line x,y,x+1,y
buf1(x,y)=buf2(x,y)
Next y
Next x
Unlock
Gosub doublePixel
DrawScreen
Forever
doublePixel:
For y=0 To ScreenHeight() / 2
CopyBox 0, y/blockynes*blockynes, 640, 1, 0, y*2, SCREEN(), Image(zoomed_screen_a)
CopyBox 0, (y+1)/blockynes*blockynes, 640, 1, 0, y*2+1, SCREEN(), Image(zoomed_screen_a)
Next y
For x=0 To ScreenWidth() / 2
CopyBox x/blockynes*blockynes, Int( (Sin(x + t*0.01)*disrupt#) ), 1, 480, x*2, 0, Image(zoomed_screen_a), Image(zoomed_screen)
CopyBox x/blockynes*blockynes, -Int( (Sin(x + t*0.01)*disrupt#) ), 1, 480, x*2+1, 0, Image(zoomed_screen_a), Image(zoomed_screen)
Next x
DrawImage zoomed_screen, 0, 0
Return
Re: Efektit
Oho, on kyllä hienoin tuliefekti minkä olen täällä nähnyt. Ei edes pätkinyt yhtään tuon kun vois pistää johonkin peliin niin voisi tulla nättiä jälkeä. Harmi vaan kun ei ole mitään projua, johon tuota voisi ympätä.Wingman wrote:Löysin jonkin vanhan tuliefektin raakileen jonka olin tehnyt, mutta se ei jotenkin toiminut. Korjailin hetken ja sain tällaista aikaan;
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
-
- Devoted Member
- Posts: 594
- Joined: Tue Sep 30, 2008 4:30 pm
- Location: Ruudun toisella puolella
Re: Efektit
Tuli taas tehtyä metapallot, joita en taida olla tähän topiikkiin vielä lähettänyt.. Space asettaa palloille randomin kohdesijainnin, ja hiiren 1. nappi asettaa kohdesijainnin hiiren kohdalle. Koodissa BLOCK -vakio vaikuttaa pikselöityneisyyteen, nopeammilla koneilla pienempi arvo voi jopa pyöriä
käytin taas Peisikin DoublePixel -aliohjelmaa, se on vain niin kovin hyvä. kiitokset peisikin sedille.
käytin taas Peisikin DoublePixel -aliohjelmaa, se on vain niin kovin hyvä. kiitokset peisikin sedille.
Code: Select all
Const SW=100
Const SH=100
SCREEN SW*2,SH*2,0,1
SCREEN SW*2,SH*2,0,2
zoomed_screen_a = MakeImage(ScreenWidth(), ScreenHeight())
zoomed_screen = MakeImage(ScreenWidth(), ScreenHeight())
MaskImage zoomed_screen_a, 255, 0, 254
MaskImage zoomed_screen, 255, 0, 254
Type META
Field x As Float
Field y As Float
Field s As Float
Field r As Float
Field g As Float
Field b As Float
Field kx As Float
Field ky As Float
EndType
For i=0 To 8
ba.META=New(META)
ba\x=Rand(SW)
ba\y=Rand(SW)
ba\s=8
ba\r=Rnd(1)
ba\g=Rnd(1)
ba\b=Rnd(1)
ba\kx=Rand(SW)
ba\ky=Rand(SH)
Next i
Global t
Const BLOCK=3
blockynes=BLOCK
disrupt#=0
r#=0
g#=0
b#=0
Repeat
t=Timer()
For ba.META=Each META
ba\x=CurveValue(ba\kx,ba\x,20)
ba\y=CurveValue(ba\ky,ba\y,20)
If KeyHit(57) Then
ba\kx=Rand(SW)
ba\ky=Rand(SH)
EndIf
If MouseHit(1) Then
ba\kx=MouseX()/2
ba\ky=MouseY()/2
EndIf
Next ba.META
Lock
For x=0 To SW Step BLOCK
For y=0 To SH Step BLOCK
r=0
g=0
b=0
For ba.META=Each META
r=r+(512*ba\s/(Distance(ba\x,ba\y,x,y)^2))*ba\r
g=g+(512*ba\s/(Distance(ba\x,ba\y,x,y)^2))*ba\g
b=b+(512*ba\s/(Distance(ba\x,ba\y,x,y)^2))*ba\b
Next ba
r=Min(255,Max(0,r))
g=Min(255,Max(0,g))
b=Min(255,Max(0,b))
If MouseX()/2>x-1 And MouseX()/2<x+BLOCK And MouseY()/2>y-1 And MouseY()/2<y+BLOCK Then
txt$=Int(r)+" "+Int(g)+" "+Int(b)+" "
EndIf
Color r,g,b
For yy=y To y+BLOCK
Line x,yy,x+BLOCK,yy
Next yy
Next y
Next x
Unlock
Gosub doublePixel
Color 255,255,255
Text 0,0,txt
DrawScreen
Forever
doublePixel:
For y=0 To ScreenHeight() / 2
CopyBox 0, y/blockynes*blockynes, 640, 1, 0, y*2, SCREEN(), Image(zoomed_screen_a)
CopyBox 0, (y+1)/blockynes*blockynes, 640, 1, 0, y*2+1, SCREEN(), Image(zoomed_screen_a)
Next y
For x=0 To ScreenWidth() / 2
CopyBox x/blockynes*blockynes, Int( (Sin(x + t*0.01)*disrupt#) ), 1, 480, x*2, 0, Image(zoomed_screen_a), Image(zoomed_screen)
CopyBox x/blockynes*blockynes, -Int( (Sin(x + t*0.01)*disrupt#) ), 1, 480, x*2+1, 0, Image(zoomed_screen_a), Image(zoomed_screen)
Next x
DrawImage zoomed_screen, 0, 0
Return
Re: Efektit
Löytyipä kiintolevyä siivotessa tällainen jokin josta oli joskus aikanaan tarkoitus tulla jonkinlainen valaistusmoottori...
Code: Select all
FrameLimit 40
Const SW = 800
Const SH = 800
SCREEN SW,SH
Const LOOTA_W = 8
Const LOOTA_H = 8
Const VALOISUUS = 0
// RED = 1
// GREEN = 2
// BLUE = 3
Const LAMPPU = 4
Const PÄIVITETTY = 5
Const MAXVALO = 6
Const VALOISUUS_ALKU = 0
Const VALOISUUS_VÄLI = 20
Const VALOISUUS_MAX = 255
Const LAMPPU001_VALOISUUS = 150
Const LAMPPU001_R = 0
Const LAMPPU001_G = 0
Const LAMPPU001_B = 0
Dim ruudukko, _R, _G, _B, _valoisuus, _valo As Byte
Dim _x, _y, _xx, _yy, valo_range, ang As Short
Dim loota(SW/LOOTA_W, SH/LOOTA_H, 5) //loota(X, Y, VALOISUUS/RED/GREEN/BLUE/LAMPPU?/PÄIVITETTY?)
For xx = 0 To SW / LOOTA_W
For yy = 0 To SH / LOOTA_H
loota(xx, yy, VALOISUUS) = VALOISUUS_ALKU
loota(xx, yy, RED) = 0
loota(xx, yy, GREEN) = 0
loota(xx, yy, BLUE) = 0
loota(xx, yy, LAMPPU) = 0
loota(xx, yy, PÄIVITETTY) = 0
Next yy
Next xx
ruudukko = 0
Repeat
Color cbWhite
If KeyHit(cbKeySpace) Then
For xx = 0 To SW / LOOTA_W
For yy = 0 To SH / LOOTA_H
loota(xx, yy, VALOISUUS) = VALOISUUS_ALKU
loota(xx, yy, RED) = 0
loota(xx, yy, GREEN) = 0
loota(xx, yy, BLUE) = 0
loota(xx, yy, LAMPPU) = 0
loota(xx, yy, PÄIVITETTY) = 0
Next yy
Next xx
EndIf
If MouseHit(1) Then
_x = ToGrid(MouseX(), LOOTA_W) / LOOTA_W
_y = ToGrid(MouseY(), LOOTA_H) / LOOTA_H
If loota(_x, _y, LAMPPU) = 0 Then
_valoisuus = loota(_x, _y, VALOISUUS)
loota(_x, _y, VALOISUUS) = (VALOISUUS_ALKU + LAMPPU001_VALOISUUS)
loota(_x, _y, RED) = loota(_x, _y, RED) + LAMPPU001_R
loota(_x, _y, GREEN) = loota(_x, _y, GREEN) + LAMPPU001_G
loota(_x, _y, BLUE) = loota(_x, _y, BLUE) + LAMPPU001_B
loota(_x, _y, LAMPPU) = 1
loota(_x, _y, PÄIVITETTY) = 1
valo_range = (LAMPPU001_VALOISUUS / VALOISUUS_VÄLI)
For ang = 0 To 359 Step 4
For radius = 0 To valo_range
_xx = ToGrid(MouseX() + Cos(ang) * (radius * LOOTA_W), LOOTA_W) / LOOTA_W
_yy = ToGrid(MouseY() - Sin(ang) * (radius * LOOTA_H), LOOTA_H) / LOOTA_H
If _xx >= 0 And _yy >= 0 And _xx < SW/LOOTA_W And _yy < SH/LOOTA_H Then
If loota(_xx, _yy, PÄIVITETTY) = 0 Then //And loota(_xx, _yy, LAMPPU) = 0 Then
_dist = Distance(_x + (LOOTA_W / 2), _y + (LOOTA_H / 2), _xx + (LOOTA_W / 2), _yy + (LOOTA_H / 2))
If loota(_xx, _yy, RED) = 0 And loota(_xx, _yy, GREEN) = 0 And loota(_xx, _yy, BLUE) = 0 Then
loota(_xx, _yy, RED) = loota(_x, _y, RED)
loota(_xx, _yy, GREEN) = loota(_x, _y, GREEN)
loota(_xx, _yy, BLUE) = loota(_x, _y, BLUE)
If loota(_xx, _yy, VALOISUUS) = 0 Then
_valo = Max(0, loota(_x, _y, VALOISUUS) - (_dist * VALOISUUS_VÄLI))
loota(_xx, _yy, VALOISUUS) = _valo
Else
_valo = Max(0, loota(_x, _y, VALOISUUS) - (_dist * VALOISUUS_VÄLI))
loota(_xx, _yy, VALOISUUS) = (_valo + loota(_xx, _yy, VALOISUUS))
EndIf
Else
_R = (loota(_xx, _yy, RED) + loota(_x, _y, RED)) / 2
_G = (loota(_xx, _yy, GREEN) + loota(_x, _y, GREEN)) / 2
_B = (loota(_xx, _yy, BLUE) + loota(_x, _y, BLUE)) / 2
loota(_xx, _yy, RED) = _R
loota(_xx, _yy, GREEN) = _G
loota(_xx, _yy, BLUE) = _B
If loota(_xx, _yy, VALOISUUS) = 0 Then
_valo = Max(0, loota(_x, _y, VALOISUUS) - (_dist * VALOISUUS_VÄLI))
loota(_xx, _yy, VALOISUUS) = _valo
Else
_valo = Max(0, loota(_x, _y, VALOISUUS) - (_dist * VALOISUUS_VÄLI))
loota(_xx, _yy, VALOISUUS) = (_valo + loota(_xx, _yy, VALOISUUS))
EndIf
EndIf
loota(_xx, _yy, PÄIVITETTY) = 1
EndIf
EndIf
Next radius
Next ang
loota(_x, _y, VALOISUUS) = loota(_x, _y, VALOISUUS) + _valoisuus
EndIf
EndIf
For xx = 0 To SW / LOOTA_W
For yy = 0 To SH / LOOTA_H
loota(xx, yy, PÄIVITETTY) = 0
_R = Min(loota(xx, yy, RED) + loota(xx, yy, VALOISUUS), VALOISUUS_MAX)
_G = Min(loota(xx, yy, GREEN) + loota(xx, yy, VALOISUUS), VALOISUUS_MAX)
_B = Min(loota(xx, yy, BLUE) + loota(xx, yy, VALOISUUS), VALOISUUS_MAX)
Color _R, _G, _B
Box xx * LOOTA_W, yy * LOOTA_H, LOOTA_W, LOOTA_H, 1
Next yy
Next xx
If ruudukko = 1 Then
Color cbBlack
For xx = 0 To SW / LOOTA_W
Line xx * LOOTA_W, 0, xx * LOOTA_W, SH
Next xx
For yy = 0 To SH / LOOTA_H
Line 0, yy * LOOTA_H, SW, yy * LOOTA_H
Next yy
EndIf
Color cbBlue
Text 5, 5, "MX: "+ MouseX() + ", MY: " + MouseY()
Text 5, 5 + 15, "SMX: "+ ToGrid(MouseX(), LOOTA_W) + ", SMY: " + ToGrid(MouseY(), LOOTA_H)
Text 5, 5 + 30, "TileX: "+ (ToGrid(MouseX(), LOOTA_W)/LOOTA_W) + ", TileY: " + (ToGrid(MouseY(), LOOTA_H)/LOOTA_H)
Text 5, 5 + 45, "_xx: " + _xx + ", _yy: " +_yy
DrawScreen
Forever
/////////////////////////////////////////////////////////////////////////////////////////
// ToGrid(X/Y, GRID_W/H)
//
// Kohdistaa X tai Y koordinaatin ruudukkoon.
Function ToGrid(_xy#, _gridwh#)
Return Int(_xy - (_xy Mod _gridwh))
EndFunction
Re: Efektit
Hienohan tuo on mutta vähän buginen, kun välillä tulee mustia laatikoita niitten valkoisten pallojen keskelle.
-
- Member
- Posts: 52
- Joined: Sat May 12, 2012 7:11 pm
- Location: C:/WINDOWS/system32
Re: Efektit
Eli väsäsinpä tälläisen hienon efektin, joka piirtää ruuduntäyteen erilaisia dotteja. Saa käyttää, ei tarvitse mainita crediiteistä, koska tämä efe on todella helppo tehdä itsekin. Tämä saa kuitenkin hienon lopputuloksen. Koodia saa ja kannattaa optimoida.
Code: Select all
Repeat
Dot x,y
x=x+1
If x=ScreenWidth() Then
y=y+1
x=0
EndIf
Color r,g,b
r=Rand(255)
g=Rand(255)
b=Rand(255)
Drawscreen OFF
Until x=ScreenWidth() And y=ScreenHeight()
Last edited by Untitled.bmp on Sun May 13, 2012 1:01 pm, edited 1 time in total.
Intel core i7 3960X 3,9ghz 15mb
Sapphire Radeon HD7970
160gb ssd
2tb hdd
8gb Ram
Windows 7 Ultimate 64-bit & Linux Ubuntu 12.04LTS
Sapphire Radeon HD7970
160gb ssd
2tb hdd
8gb Ram
Windows 7 Ultimate 64-bit & Linux Ubuntu 12.04LTS
Re: Efektit
Sinulta on kadonnut DrawScreen jonnekkin?Untitled.bmp wrote:Eli väsäsinpä tälläisen hienon efektin, joka piirtää ruuduntäyteen erilaisia dotteja. Saa käyttää, ei tarvitse mainita crediiteistä, koska tämä efe on todella helppo tehdä itsekin. Tämä saa kuitenkin hienon lopputuloksen. Koodia saa ja kannattaa optimoida.
Code: Select all
Repeat Dot x,y x=x+1 If x=ScreenWidth() Then y=y+1 x=0 EndIf Color r,g,b r=Rand(255) g=Rand(255) b=Rand(255) Until x=ScreenWidth() And y=ScreenHeight()
-
- Member
- Posts: 52
- Joined: Sat May 12, 2012 7:11 pm
- Location: C:/WINDOWS/system32
Re: Efektit
Niin taisi käydä Taisi kadota, miettiessä, että tekiskö tosta funktion vai laittasko vain repeattiin noh, korjaan.Latexi95 wrote:Sinulta on kadonnut DrawScreen jonnekkin?Untitled.bmp wrote:Eli väsäsinpä tälläisen hienon efektin, joka piirtää ruuduntäyteen erilaisia dotteja. Saa käyttää, ei tarvitse mainita crediiteistä, koska tämä efe on todella helppo tehdä itsekin. Tämä saa kuitenkin hienon lopputuloksen. Koodia saa ja kannattaa optimoida.
Code: Select all
Repeat Dot x,y x=x+1 If x=ScreenWidth() Then y=y+1 x=0 EndIf Color r,g,b r=Rand(255) g=Rand(255) b=Rand(255) Until x=ScreenWidth() And y=ScreenHeight()
Intel core i7 3960X 3,9ghz 15mb
Sapphire Radeon HD7970
160gb ssd
2tb hdd
8gb Ram
Windows 7 Ultimate 64-bit & Linux Ubuntu 12.04LTS
Sapphire Radeon HD7970
160gb ssd
2tb hdd
8gb Ram
Windows 7 Ultimate 64-bit & Linux Ubuntu 12.04LTS
Re: Efektit
Pikseli kerrallaan piirtäminen on aika hidasta, paitsi jos tarkoituksena on nimenomaan ruudun pikku hiljaa täyttyminen pikseleillä (tai on se silloinkin hidasta, mutta silloin se ei haittaa). Tällä tavalla saa kerralla koko ruudun täytettyä, minun koneellani menee noin 250-300 ms:
Code: Select all
Repeat
Dot x,y
x=x+1
If x=ScreenWidth() Then
y=y+1
x=0
EndIf
Color r,g,b
r=Rand(255)
g=Rand(255)
b=Rand(255)
If y >ScreenHeight() Then Exit
Forever
DrawScreen
WaitKey
-
- Member
- Posts: 52
- Joined: Sat May 12, 2012 7:11 pm
- Location: C:/WINDOWS/system32
Re: Efektit
Kiitoksia Chaoswarmille avusta, nyt sain valmiiksi televisioefektin, kommentoida saa ja käyttämisen luvallisuudesta en tiedä, kysykää chaoswarmilta, minun puolesta saa käyttää ilman turhia krediittejä.
Code: Select all
Function televisio()
Repeat
Dot x,y
x=x+1
If x=ScreenWidth() Then
y=y+1
x=0
EndIf
Color r,r,r
r=Rand(255)
If y >ScreenHeight() Then Exit
Forever
DrawScreen
EndFunction()
alku:
Cls
televisio()
Goto alku
Intel core i7 3960X 3,9ghz 15mb
Sapphire Radeon HD7970
160gb ssd
2tb hdd
8gb Ram
Windows 7 Ultimate 64-bit & Linux Ubuntu 12.04LTS
Sapphire Radeon HD7970
160gb ssd
2tb hdd
8gb Ram
Windows 7 Ultimate 64-bit & Linux Ubuntu 12.04LTS
Re: Efektit
En kai minä nyt Esimerkit ja tutoriaalit -alueelle lähettäisi mitään koodeja, joita ei saa käyttää vapaasti.Untitled.bmp wrote:Kiitoksia Chaoswarmille avusta, nyt sain valmiiksi televisioefektin, kommentoida saa ja käyttämisen luvallisuudesta en tiedä, kysykää chaoswarmilta, minun puolesta saa käyttää ilman turhia krediittejä.
Worm muuten kirjoitetaan o:lla.
- Misthema
- Advanced Member
- Posts: 312
- Joined: Mon Aug 27, 2007 8:32 pm
- Location: Turku, Finland
- Contact:
Re: Efektit
Untitled.bmp wrote:Kiitoksia Chaoswarmille avusta, nyt sain valmiiksi televisioefektin, kommentoida saa ja käyttämisen luvallisuudesta en tiedä, kysykää chaoswarmilta, minun puolesta saa käyttää ilman turhia krediittejä.
Code: Select all
Function televisio() Repeat Dot x,y x=x+1 If x=ScreenWidth() Then y=y+1 x=0 EndIf Color r,r,r r=Rand(255) If y >ScreenHeight() Then Exit Forever DrawScreen EndFunction() alku: Cls televisio() Goto alku
Nopeutin efektiäsi hieman ja tein siitä säädettävän:
Code: Select all
SW = ScreenWidth()
SH = ScreenHeight()
Function televisio(x0%, y0%, w%, h%)
Lock
For y=y0 To h-1
For x=x0 To w-1
PutPixel2 x, y, Grey( Rand(255) )
Next x
Next y
Unlock
EndFunction
Function Grey%(val%)
Return val Shl 24 + val Shl 16 + val Shl 8 + val
EndFunction
x0=0:y0=0
x1=SW:y1=SH
Repeat
televisio(x0,y0, x1,y1)
If MouseHit(1) Then x0=MouseX() : y0=MouseY()
If MouseHit(2) Then x1=MouseX() : y1=MouseY()
DrawScreen
Forever
-
- Member
- Posts: 52
- Joined: Sat May 12, 2012 7:11 pm
- Location: C:/WINDOWS/system32
Re: Efektit
Kiitoksia Tuon televisioefektin oli kyllä tarkoitus olla pelkkä harjoittelua ja päätinpä tehdä työstä hupia muille, jotka sitä tarvitsevat, jos tarvitsevat.Misthema wrote:Untitled.bmp wrote:Kiitoksia Chaoswarmille avusta, nyt sain valmiiksi televisioefektin, kommentoida saa ja käyttämisen luvallisuudesta en tiedä, kysykää chaoswarmilta, minun puolesta saa käyttää ilman turhia krediittejä.
Code: Select all
Function televisio() Repeat Dot x,y x=x+1 If x=ScreenWidth() Then y=y+1 x=0 EndIf Color r,r,r r=Rand(255) If y >ScreenHeight() Then Exit Forever DrawScreen EndFunction() alku: Cls televisio() Goto alku
Nopeutin efektiäsi hieman ja tein siitä säädettävän:Code: Select all
SW = ScreenWidth() SH = ScreenHeight() Function televisio(x0%, y0%, w%, h%) Lock For y=y0 To h-1 For x=x0 To w-1 PutPixel2 x, y, Grey( Rand(255) ) Next x Next y Unlock EndFunction Function Grey%(val%) Return val Shl 24 + val Shl 16 + val Shl 8 + val EndFunction x0=0:y0=0 x1=SW:y1=SH Repeat televisio(x0,y0, x1,y1) If MouseHit(1) Then x0=MouseX() : y0=MouseY() If MouseHit(2) Then x1=MouseX() : y1=MouseY() DrawScreen Forever
Intel core i7 3960X 3,9ghz 15mb
Sapphire Radeon HD7970
160gb ssd
2tb hdd
8gb Ram
Windows 7 Ultimate 64-bit & Linux Ubuntu 12.04LTS
Sapphire Radeon HD7970
160gb ssd
2tb hdd
8gb Ram
Windows 7 Ultimate 64-bit & Linux Ubuntu 12.04LTS
Re: Efektit
Täytyy sanoa, että kaikkea turhaa sitä cb:llä saakin aikaan Esimerkiksi tämä random testailu, jossa varsinaisia koodirivejä alle 30
kiva myös täytetyllä boxilla, eli pyyhkäisee vain viimeisen parametrin veks box-komennon kohdalta..
Code: Select all
SCREEN 800,600
For x = 0 To ScreenWidth() Step 5
For y = 0 To ScreenHeight() Step 5
Box x, y, 5, 5,0
PickColor x,y-1
up_red = getRGB(RED)
up_green = getRGB(GREEN)
up_blue = getRGB(BLUE)
PickColor x,y+1
down_red = getRGB(RED)
down_green = getRGB(GREEN)
down_blue = getRGB(BLUE)
PickColor x-1,y
left_red = getRGB(RED)
left_green = getRGB(GREEN)
left_blue = getRGB(BLUE)
PickColor x+1,y
right_red = getRGB(RED)
right_green = getRGB(GREEN)
right_blue = getRGB(BLUE)
new_red = ((up_red + down_red + left_red + right_red)/4)+Rand(0,2)
new_green = ((up_red + down_green + left_green + right_green)/4)+Rand(0,2)
new_blue = ((up_blue + down_blue + left_blue + right_blue)/4)+Rand(0,2)
Color new_red, new_green, new_blue
Next y
Next x
DrawScreen
WaitKey
- Konstaduck
- Advanced Member
- Posts: 267
- Joined: Sat Dec 17, 2011 3:09 pm
- Location: Nurmijärvi, Finland
- Contact:
Re: Efektit
Melkoisen hidas se vain on. Pystyykö boxin kohdalla puskuri lukita, jotta piirto olisi nopeampi?MrMonday wrote:MrMondayn koodinpätkä ja viesti...
EDIT:
Hmm... Näköjään ei, sillä muuten ruudulla ei näy mitään...
Re: Efektit
Lukittuun puskuriin voi käsittääkseni piirustella vain omilla komennoillaan/funktioillaan, mutta tuossa ei hitaus sinänsä haittaa, kun se ei muutenkaan tee mitään järkevääKonstaduck wrote:Melkoisen hidas se vain on. Pystyykö boxin kohdalla puskuri lukita, jotta piirto olisi nopeampi?MrMonday wrote:MrMondayn koodinpätkä ja viesti...
EDIT:Hmm... Näköjään ei, sillä muuten ruudulla ei näy mitään...
En tiedä miten vauhdilla cbE tuon sitten piirtelisi.
-
- Moderator
- Posts: 1583
- Joined: Mon Aug 27, 2007 11:24 pm
- Location: Otaniemi - Mikkeli -pendelöinti
Re: Efektit
Lukittuun puskuriin voi varsinaisesti siihen tarkoitettujen komentojen lisäksi piirustella Linellä, joka on siten käytettynä huomattavasti nopeampi kuin lukitsematta. Kuvittelin tämän olevan kovin yleistä tietoa :)
Re: Efektit
Jostain syystä olen onnistunut ohittamaan tuon tiedon Ehkäpä siksi, etten ole lukittua puskuria koskaan käyttänyt, mutta vikkelä se kyllä verrattain on:koodaaja wrote:Lukittuun puskuriin voi varsinaisesti siihen tarkoitettujen komentojen lisäksi piirustella Linellä, joka on siten käytettynä huomattavasti nopeampi kuin lukitsematta. Kuvittelin tämän olevan kovin yleistä tietoa
Code: Select all
SCREEN 800,600
begin:
Lock
For x = 0 To ScreenWidth() Step 5
For y = 0 To ScreenHeight() Step 5
Line x,y,ScreenWidth(),ScreenHeight()
PickColor x,y-1
up_red = getRGB(RED)
up_green = getRGB(GREEN)
up_blue = getRGB(BLUE)
PickColor x,y+1
down_red = getRGB(RED)
down_green = getRGB(GREEN)
down_blue = getRGB(BLUE)
PickColor x-1,y
left_red = getRGB(RED)
left_green = getRGB(GREEN)
left_blue = getRGB(BLUE)
PickColor x+1,y
right_red = getRGB(RED)
right_green = getRGB(GREEN)
right_blue = getRGB(BLUE)
new_red = ((up_red + down_red + left_red + right_red)/4)+Rand(0,2)
new_green = ((up_red + down_green + left_green + right_green)/4)+Rand(0,2)
new_blue = ((up_blue + down_blue + left_blue + right_blue)/4)+Rand(0,2)
Color new_red, new_green, new_blue
Next y
Next x
Unlock
DrawScreen
Goto begin