̬̬̬̈̬̬̬̬̈̬̬̬̬̬̪쬪̬̬̬̪쬪 >> ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp pppppppppppp  ppppppppppppppppppppppppppppppppppppppppppppppppppppppp  pppppppppppppppppp  pppppppppppppppppppppppppppppppppppppppppp  pppp ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp0000ppppppp-- title: Water Ripples -- author: Marioio -- desc: Simulation of water ripples -- site: https://marioio333.neocities.org/ -- license: MIT License (change this to your license of choice) -- version: 1.0 -- script: lua previous = {} current = {} cols = 240 rows = 136 damping = 0.90 random_drop_rate = 90 t = 0 -- Mouse MOUSE_STATES = { IDDLE = 0, CLICKING = 1, HOLDING = 2, } mous = { x = 0, y = 0, state = MOUSE_STATES.IDDLE, } function BOOT() -- Initialize arrays for i=1,cols do previous[i] = {} current[i] = {} for j = 1,rows do previous[i][j] = 0 current[i][j] = 0 end end current[120][80] = 255 end function TIC() INPUT() UPDATE() DRAW() swapArrays() end function INPUT() mous.x, mous.y, clicking = mouse() if clicking then mous.state = math.min(mous.state+1,2) else mous.state = MOUSE_STATES.IDDLE end if mous.state == MOUSE_STATES.CLICKING and mous.x > 1 and mous.x < 239 and mous.y > 1 and mous.y < 135 then current[mous.x][mous.y] = 255 end end -- INPUT function UPDATE() -- random drop t = t+1 if t > random_drop_rate then t = 0 x = math.random(2, cols-1) y = math.random(2, rows-1) current[x][y] = 255 end -- Calculate next step of the ripple for i=2,cols-1 do for j = 2,rows-1 do current[i][j] = (previous[i-1][j] + previous[i+1][j] + previous[i][j+1] + previous[i][j-1])/2 -current[i][j] current[i][j] = current[i][j]*damping end end end -- UPDATE function DRAW() cls(0) for i=1,cols do for j = 1,rows do color = 0 local v = current[i][j] * 6 if math.abs(current[i][j]) > 0.5 then color = map(v,0,255,8,12) end pix(i,j,color) end end print("Click!",5,5,12) end -- DRAW function swapArrays() temp = previous previous = current current = temp end function map(n, oldMin, oldMax, newMin, newMax) percentage = (n-oldMin)/(oldMax-oldMin) return newMin+ percentage * (newMax-newMin) end