to aaa
;MSWLogo
;Program crta strujni krug u kome prikazuje
;sklopke koje mogu biti grupirane u paralelnom i
;serijskom spoju. Nema zastite od krivog ulaznog podatka
;tako da ulazni podatak mora biti flat lista ili lista s podlistama,
;a podaci samo brojevi "1" ili "0" koji oznacavaju ukljucenu ili
;iskljucenu sklopku. Crtez prikazuje i rasvjetno tijelo koje u ovisnosti o
;stanju sklopki moze biti ukljuceno ili ne.
;Pokrenuti s:
;---------------------------------
;cs rt 90 struja [1 1 1 0 0]
;---------------------------------
;ili npr.
;---------------------------------
;----------------------------------------
;cs rt 90 struja [[1 1] [1 0 1 0 1] [1]]
;----------------------------------------
end
to lampa :lista
	ifelse memberp 0 provjeri [] :lista [pu fd 10 pd circle 10] ~
		[pu fd 10 pd circle 10 fill]
end
to paralel :lista
	ifelse emptyp :lista [pu fd 40 pd rt 90 stop] ~
		[lt 90 fd 20 rt 90]
	sklopka first :lista
	paralel bf :lista
	fd 20
end
to provjeri :rez :lista
	if emptyp :lista [op :rez]
	local "novo
	ifelse memberp 1 (first :lista) [make "novo se :rez 1] ~
		[make "novo se :rez 0]
	op provjeri :novo bf :lista	
end
to serija :lista
	if emptyp :lista [stop]
	paralel first :lista lt 90 fd 10
	serija bf :lista
end
to sklopka :stanje
	fd 10 circle 2
	if :stanje=1 [fd 20]
	if :stanje=0 [lt 45 fd 20 bk 20 rt 45 pu fd 20 pd]
	circle 2 fd 10 pu bk 40 pd
end
to struja :lista
	fd 10 serija :lista lampa :lista
end