Code Doodles!

General discussion about LÖVE, Lua, game development, puns, and unicorns.
User avatar
DaedalusYoung
Party member
Posts: 413
Joined: Sun Jul 14, 2013 8:04 pm

Re: Code Doodles!

Post by DaedalusYoung »

I like these, I'll have to try it myself some day.

Sheepolution, your numbering is off, you've got two number 5's in here.
User avatar
Sheepolution
Party member
Posts: 264
Joined: Mon Mar 04, 2013 9:31 am
Location: The Netherlands
Contact:

Re: Code Doodles!

Post by Sheepolution »

What the hell, you're right. My whole life is a lie now..
User avatar
Rednas
Prole
Posts: 2
Joined: Tue Apr 08, 2014 1:02 pm

Re: Code Doodles!

Post by Rednas »

Image

Hello, This is my first post ever. I kinda made something that could be considered a Code Doodle, it's kinda bad though :? ... I was wondering if somebody maybe got some tips for me how to make it shorter, or how to make it better or something :cool: .. thanks in advance. (space to move btw).

Code: Select all

 function love.load()
   line = {x1 = 10, y1 = 200, x2 = 10, y2 = 400}
   line2 = {x1 = 790, y1 = 200, x2 = 790, y2 = 400}
   xspeed = 3000
   yspeed = 3000
   xspeed2 = 3000
   yspeed2 = 3000
end

function love.update(dt)
   if love.keyboard.isDown(" ") then
         line.x1 = line.x1 + xspeed * dt
         if line.x1 > 790 then
            xspeed = 0
            yspeed = 3000
            line.x1 = 791
            line.x2 = line.x2 + yspeed * dt        
         end
         if line.x2 > 790 then
            line.x2 = 791
            yspeed = 0
            xspeed = 3000
            xspeed = -xspeed
         end
         if line.x1 < 10 then
            line.x1 = 9
            xspeed = 0
            yspeed = 3000
            line.x2 = line.x2 - yspeed * dt
         end
         if line.x2 < 10 then
            line.x2 = 9
            yspeed = 0
            xspeed = 3000
            line.x2 = line.x2 + yspeed * dt         
         end
         -----------------------------------------
         line2.x1 = line2.x1 + xspeed2 * dt
         if line2.x1 > 790 then
            xspeed2 = 0
            yspeed2 = 3000
            line2.x1 = 791
            line2.x2 = line2.x2 + yspeed2 * dt
         end
         if line2.x2 > 790 then
            line2.x2 = 791
            yspeed2 = 0
            xspeed2 = 3000
            xspeed2 = -xspeed2 
         end
         if line2.x1 < 10 then
            line2.x1 = 9
            xspeed2 = 0
            yspeed2 = 3000
            line2.x2 = line2.x2 - yspeed2 * dt
         end
         if line2.x2 < 10 then
            line2.x2 = 9
            yspeed2 = 0
            xspeed2 = 3000
            line2.x2 = line2.x2 + yspeed2 * dt
         end
   end
end

function love.draw()
   love.graphics.setColor(math.random(255),math.random(255),math.random(255))
   love.graphics.line(line.x1,line.y1,line.x2,line.y2)
   love.graphics.circle("fill", line2.x1, line2.y1, 5, 5)
   love.graphics.circle("fill", line2.x2, line2.y2, 5, 5)
   love.graphics.setColor(math.random(255),math.random(255),math.random(255))
   love.graphics.line(line2.x1,line2.y1,line2.x2,line2.y2)
   love.graphics.circle("fill", line.x1, line.y1, 5, 5)
   love.graphics.circle("fill", line.x2, line.y2, 5, 5)
   love.graphics.setColor(255,255,255)
end 
User avatar
veethree
Inner party member
Posts: 877
Joined: Sat Dec 10, 2011 7:18 pm

Re: Code Doodles!

Post by veethree »

Colorful noise.
Image
it moves and potentially lags depending on your system.

Code: Select all

screen = {
		width = love.graphics.getWidth(),
		height = love.graphics.getHeight()
	}

--Settings
local cell_size = 6.25
local width = math.floor(screen.width / cell_size)
local height = math.floor(screen.height / cell_size)
local noise_scale = 0.05
local z_speed  = 4

local z = 0
local grid = {}

function love.load()
	for y=0, height-1 do
		grid[y] = {}
		for x=0, width-1 do
			grid[y][x] = {
					value = 0
				}
		end
	end
end

function love.update(dt)
	z = z + z_speed * dt
	for y=0, height-1 do
		for x=0, width-1 do
			grid[y][x].value = love.math.noise(x * noise_scale, y * noise_scale, z * noise_scale) * 255
		end
	end
	love.window.setTitle(love.timer.getFPS())
end

function love.draw()
	for y=0, height-1 do
		for x=0, width-1 do
			local cell = grid[y][x]
			love.graphics.setColor(hsl(cell.value, 255, 126, 255))
			love.graphics.rectangle("fill", x * cell_size, y * cell_size, cell_size, cell_size)
		end
	end
end

function love.keypressed(key)
	if key == "escape" then love.event.push("quit") end
end

function hsl(h, s, l, a)
    if s<=0 then return l,l,l,a end
    h, s, l = h/256*6, s/255, l/255
    local c = (1-math.abs(2*l-1))*s
    local x = (1-math.abs(h%2-1))*c
    local m,r,g,b = (l-.5*c), 0,0,0
    if h < 1     then r,g,b = c,x,0
    elseif h < 2 then r,g,b = x,c,0
    elseif h < 3 then r,g,b = 0,c,x
    elseif h < 4 then r,g,b = 0,x,c
    elseif h < 5 then r,g,b = x,0,c
    else              r,g,b = c,0,x
    end return (r+m)*255,(g+m)*255,(b+m)*255,a
end
User avatar
DaedalusYoung
Party member
Posts: 413
Joined: Sun Jul 14, 2013 8:04 pm

Re: Code Doodles!

Post by DaedalusYoung »

My first: Blobs

Image

Code: Select all

--[[ CODE DOODLE #1 by DaedalusYoung ]]--
--[[              Blobs              ]]--

local colour = {}
local blobs = {}
local spawning = true
local width, height = 800, 600

function colour.alpha(t, a)
	local r, g, b = unpack(t)
	a = a or 127
	return { r, g, b, a }
end

local function makeblob(size)
	size = size or 50
	return { colour = love.math.random(15), x = love.math.random(-200, width + 200), y = love.math.random(-150, height + 150), size = love.math.random(size / 2.5, size), decayspeed = love.math.random(1, 15), wait = love.math.random(5) }
end

local function randomcolour()
	return { (love.math.random(8) * 16) + 127, (love.math.random(8) * 16) + 127, (love.math.random(8) * 16) + 127 }
end

function love.load()
	width, height = love.window.getWidth(), love.window.getHeight()
	for x = 1, 15 do
		colour[x] = randomcolour()
	end
	for x = 1, 200 do
		blobs[x] = makeblob(love.math.random(50))
	end
end

function love.update(dt)
	local zeroblobs = 0
	for x = 1, 200 do
		blobs[x].size = blobs[x].size - (dt * blobs[x].decayspeed)
		blobs[x].x = blobs[x].x + (400 - blobs[x].x) * (dt / (blobs[x].size / 2))
		blobs[x].y = blobs[x].y + (300 - blobs[x].y) * (dt / (blobs[x].size / 2))
		blobs[x].decayspeed = blobs[x].decayspeed + (dt * 4)
		if blobs[x].size <= 0 then
			blobs[x].size = 0
			if spawning then
				blobs[x].wait = blobs[x].wait - dt
				if blobs[x].wait <= 0 then
					blobs[x] = makeblob()
				end
			else
				zeroblobs = math.floor(zeroblobs + 1.5)
			end
		end
	end
	if zeroblobs == 200 then
		for x = 1, 15 do
			colour[x] = randomcolour()
		end
		for x = 1, 200 do
			blobs[x] = makeblob(love.math.random(50))
		end
		spawning = true
	end
end

function love.draw()
	love.graphics.setBlendMode('additive')
	for x = 1, 200 do
		love.graphics.setColor(colour.alpha(colour[blobs[x].colour], blobs[x].size * 5.1))
		love.graphics.circle('fill', blobs[x].x, blobs[x].y, blobs[x].size, blobs[x].size * 0.75)
		love.graphics.setColor(255,255,255, blobs[x].size * 2.55)
		love.graphics.circle('fill', blobs[x].x - (blobs[x].size * 0.3), blobs[x].y - (blobs[x].size * 0.3), blobs[x].size * 0.5, blobs[x].size * 0.75)
	end
end

function love.mousepressed()
	spawning = false
end
User avatar
Kasperelo
Party member
Posts: 343
Joined: Fri Apr 13, 2012 1:47 pm
Location: The Milky Way

Re: Code Doodles!

Post by Kasperelo »

These are really cool! I need to make some.
User avatar
substitute541
Party member
Posts: 484
Joined: Fri Aug 24, 2012 9:04 am
Location: Southern Leyte, Visayas, Philippines
Contact:

Re: Code Doodles!

Post by substitute541 »

Wooo, springy nodes!
weeeeeeee....
weeeeeeee....
Springy Nodes.png (138.6 KiB) Viewed 7995 times
By the way, ridiculous things WILL happen if you set the maxDist variable too high.

Edit 1: Optimized code a bit.

Code: Select all

local screen = {}

function love.load()
	screen.width = love.window.getWidth()
	screen.height = love.window.getHeight()

	nodeList = {}
	nodeRadius = 2
	numNodes = 100

	for i=1, numNodes do
		local node = {}
		node.x = math.random()*screen.width
		node.y = math.random()*screen.height
		local v = math.random()*150
		local th = math.random()*2*math.pi
		node.vx = v*math.cos(th)
		node.vy = v*math.sin(th)

		nodeList[i] = node
	end

	phyClock = {}
	phyClock.curTime = 0

	springConstant = 75
	maxDist = 100
end

function love.update(dt)
	-- do physics at about 100 frames per second
	while phyClock.curTime < dt do
		phyClock.curTime = phyClock.curTime + 0.01

		for i=1, numNodes do
			local A = nodeList[i]
			for j=i+1, numNodes do
				local B = nodeList[j]

				local dx = (A.x-B.x)
				local dy = (A.y-B.y)
				local dist = dx^2 + dy^2
				if dist < maxDist*maxDist then
					local ang = math.atan2(dy, dx)
					local falloff = 1-dist/(maxDist*maxDist)

					local F = springConstant*falloff

					A.vx = A.vx - F*math.cos(ang)*0.01
					A.vy = A.vy - F*math.sin(ang)*0.01
					B.vx = B.vx + F*math.cos(ang)*0.01
					B.vy = B.vy + F*math.sin(ang)*0.01
				end
			end
		end

		for i=1, numNodes do
			local node = nodeList[i]

			node.x = node.x + node.vx*0.01
			node.y = node.y + node.vy*0.01

			if node.x+nodeRadius < 0 then
				node.x = screen.width + nodeRadius
			elseif node.x-nodeRadius > screen.width then
				node.x = -nodeRadius
			end

			if node.y+nodeRadius < 0 then
				node.y = screen.height + nodeRadius
			elseif node.y-nodeRadius > screen.height then
				node.y = -nodeRadius
			end
		end
	end
	phyClock.curTime = phyClock.curTime - dt
end

function love.draw()
	for i=1, numNodes do
		love.graphics.setColor(255, 255, 255)
		local node = nodeList[i]
		love.graphics.circle("fill", node.x, node.y, nodeRadius)
		for j=i+1, numNodes do
			local b = nodeList[j]
			local dist = (node.x-b.x)^2 + (node.y-b.y)^2
			local falloff = math.max((1-dist/(maxDist*maxDist)), 0)
			if falloff > 0 then
				--love.graphics.setColor(255, 255, 255, falloff*192)
				love.graphics.setColor(HSL(falloff*255, 255, 128, falloff*255))
				love.graphics.line(node.x, node.y, b.x, b.y)
			end
		end
	end
end

-- Converts HSL to RGB. (input and output range: 0 - 255)
function HSL(h, s, l, a)
    if s<=0 then return l,l,l,a end
    h, s, l = h/256*6, s/255, l/255
    local c = (1-math.abs(2*l-1))*s
    local x = (1-math.abs(h%2-1))*c
    local m,r,g,b = (l-.5*c), 0,0,0
    if h < 1     then r,g,b = c,x,0
    elseif h < 2 then r,g,b = x,c,0
    elseif h < 3 then r,g,b = 0,c,x
    elseif h < 4 then r,g,b = 0,x,c
    elseif h < 5 then r,g,b = x,0,c
    else              r,g,b = c,0,x
    end return (r+m)*255,(g+m)*255,(b+m)*255,a
end
Version 2:
I'M ON FIAAAAAAAAAAA
I'M ON FIAAAAAAAAAAA
Springy Nodes 2.png (227.77 KiB) Viewed 7978 times

Code: Select all

local screen = {}

function love.load()
	screen.width = love.window.getWidth()
	screen.height = love.window.getHeight()

	nodeList = {}
	nodeRadius = 2
	numNodes = 150

	for i=1, numNodes do
		local node = {}
		node.x = math.random()*screen.width
		node.y = math.random()*screen.height
		local v = math.random()*200
		local th = math.random()*2*math.pi
		node.vx = v*math.cos(th)
		node.vy = v*math.sin(th)

		nodeList[i] = node
	end

	phyClock = {}
	phyClock.curTime = 0

	springConstant = 75
	maxDist = 120

	curTime = 0
end

function love.update(dt)
	-- do physics at about 100 frames per second
	curTime = curTime + dt
	while phyClock.curTime < dt do
		phyClock.curTime = phyClock.curTime + 0.01

		for i=1, numNodes do
			local A = nodeList[i]
			for j=i+1, numNodes do
				local B = nodeList[j]

				local dx = (A.x-B.x)
				local dy = (A.y-B.y)
				local dist = dx^2 + dy^2
				if dist < maxDist*maxDist then
					local ang = math.atan2(dy, dx)
					local falloff = 1-dist/(maxDist*maxDist)

					local F = springConstant*falloff

					A.vx = A.vx - F*math.cos(ang)*0.01
					A.vy = A.vy - F*math.sin(ang)*0.01
					B.vx = B.vx + F*math.cos(ang)*0.01
					B.vy = B.vy + F*math.sin(ang)*0.01
				end
			end
		end

		for i=1, numNodes do
			local node = nodeList[i]

			node.x = node.x + node.vx*0.01
			node.y = node.y + node.vy*0.01

			if node.x+nodeRadius < 0 then
				node.x = screen.width + nodeRadius
			elseif node.x-nodeRadius > screen.width then
				node.x = -nodeRadius
			end

			if node.y+nodeRadius < 0 then
				node.y = screen.height + nodeRadius
			elseif node.y-nodeRadius > screen.height then
				node.y = -nodeRadius
			end
		end
	end
	phyClock.curTime = phyClock.curTime - dt
end

function love.draw()
	love.graphics.setBlendMode("additive")
	for i=1, numNodes do
		love.graphics.setColor(0, 255, 255)
		local node = nodeList[i]
		love.graphics.circle("fill", node.x, node.y, nodeRadius)
		for j=i+1, numNodes do
			local b = nodeList[j]
			local dist = (node.x-b.x)^2 + (node.y-b.y)^2
			local falloff = math.max((1-dist/(maxDist*maxDist)), 0)
			if falloff > 0 then
				--love.graphics.setColor(255, 255, 255, falloff*192)
				love.graphics.setColor(HSL((falloff*255+curTime*32)%255, 255, 128, falloff*255))
				--love.graphics.setLineWidth(falloff*nodeRadius*2)
				love.graphics.line(node.x, node.y, b.x, b.y)
			end
		end
	end
end

-- Converts HSL to RGB. (input and output range: 0 - 255)
function HSL(h, s, l, a)
    if s<=0 then return l,l,l,a end
    h, s, l = h/256*6, s/255, l/255
    local c = (1-math.abs(2*l-1))*s
    local x = (1-math.abs(h%2-1))*c
    local m,r,g,b = (l-.5*c), 0,0,0
    if h < 1     then r,g,b = c,x,0
    elseif h < 2 then r,g,b = x,c,0
    elseif h < 3 then r,g,b = 0,c,x
    elseif h < 4 then r,g,b = 0,x,c
    elseif h < 5 then r,g,b = x,0,c
    else              r,g,b = c,0,x
    end return (r+m)*255,(g+m)*255,(b+m)*255,a
end
Last edited by substitute541 on Wed Apr 09, 2014 8:51 am, edited 3 times in total.
Currently designing themes for WordPress.

Sometimes lurks around the forum.
Germanunkol
Party member
Posts: 712
Joined: Fri Jun 22, 2012 4:54 pm
Contact:

Re: Code Doodles!

Post by Germanunkol »

That's soooo pretty! :)

Favourite one so far, I think.
trAInsported - Write AI to control your trains
Bandana (Dev blog) - Platformer featuring an awesome little ninja by Micha and me
GridCars - Our jam entry for LD31
Germanunkol.de
User avatar
Sheepolution
Party member
Posts: 264
Joined: Mon Mar 04, 2013 9:31 am
Location: The Netherlands
Contact:

Re: Code Doodles!

Post by Sheepolution »

Holy shit these are all so cool! It's fun to experiment with them.
User avatar
Kasperelo
Party member
Posts: 343
Joined: Fri Apr 13, 2012 1:47 pm
Location: The Milky Way

Re: Code Doodles!

Post by Kasperelo »

Code: Select all

function love.load()
   points={}
   currentPoint=1
end

function love.update(dt)
   if love.keyboard.isDown("right") then
      points[currentPoint].x=points[currentPoint].x+100*dt
   elseif love.keyboard.isDown("left") then
      points[currentPoint].x=points[currentPoint].x-100*dt
   end

   if love.keyboard.isDown("up") then
      points[currentPoint].y=points[currentPoint].y-100*dt
   elseif love.keyboard.isDown("down") then
      points[currentPoint].y=points[currentPoint].y+100*dt
   end
end

function love.keypressed(key)
   if key=="backspace" then
      table.remove(points,currentPoint)
   end

   if love.keyboard.isDown("lctrl") and key=="tab" then
      currentPoint=currentPoint-1
      if currentPoint<1 then
	 currentPoint=#points
      end
   elseif key=="tab" then
      currentPoint=currentPoint+1
      if currentPoint>#points then
	 currentPoint=1
      end
   end
end

function love.mousepressed(x,y,button)
   if button=="l" then
      table.insert(points,{x=love.mouse.getX(),y=love.mouse.getY()})
   end
end

function love.draw()
   for i=1,#points do
      love.graphics.setColor(255,0,0)
      if i<#points then
	 love.graphics.line(points[i].x,points[i].y,points[i+1].x,points[i+1].y)
      else
	 love.graphics.line(points[i].x,points[i].y,points[1].x,points[1].y)
	 if currentPoint==1 then
	    love.graphics.setColor(255,255,255)
	    love.graphics.circle("fill",points[1].x,points[1].y,4)
	 end
      end

      if currentPoint==i then
	 love.graphics.setColor(255,255,255)
      else
	 love.graphics.setColor(255,0,0)
      end
      love.graphics.circle("fill",points[i].x,points[i].y,4)
   end
end
Attachments
main.love
(615 Bytes) Downloaded 229 times
Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest