selam;
efekti ben kodladım.
orjinal adı lake olan efektin yapısı da ragnor'un dediği gibi basit. efekt kabaca, resmi ekrana basan trace rutinin içinde y eksenine sinüs uygulayarak elde ediliyor diyebiliriz. fake kod ile izah edersek :
loop
{
n++
for x=1 to picWidth
{
for y=1 to picHeight
{
pixel (x, y, picture(x, [B]sin(y+n)[/B]))
}
}
}
koyu kısım olayın en önemli noktası. onu silip y yazsaydık ekrana sadece resmi düz basacaktı.
qbasic ile yazdığım çalışır örnek:
SCREEN 13
DIM RESIM(79, 94), COSMAP(30)
FOR n = 0 TO 30
COSMAP(n) = COS(n * 3.14 / 15)
NEXT
FOR X = 0 TO 78
FOR Y = 0 TO 93
RESIM(X, Y) = X XOR Y
PSET (X + 120, Y), X XOR Y
NEXT
NEXT
CLOSE 1
DO
n = n - 1
F = .1
FOR Y = 0 TO 93
F = F + .002
FOR X = 0 TO 78
c = 93 - Y + COSMAP(ABS(Y / F + n) MOD 30) * 5
IF c > 93 THEN c = 93
IF c < 0 THEN c = 0
PSET (120 + X, 95 + Y), RESIM(X, c)
NEXT
NEXT
xx:
X = INP(&H3DA)
IF (X AND 8) = 1 THEN GOTO xx
IF (X AND 8) = 0 THEN GOTO xx
LOOP UNTIL INKEY$ <> ""