Computer Science Canada i need help with making a cartoon design with sno falling in the background all i have is snow piling up please help |
Author: | jesse kazomi [ Tue Jun 17, 2014 12:17 pm ] |
Post subject: | i need help with making a cartoon design with sno falling in the background all i have is snow piling up please help |
module Snow export snowflake, create, fall, draw, pileup type snowflake : record x, y : real yvel : real alive : int end record var pileup : real := 0 function create : snowflake var temp : snowflake temp.x := Rand.Int (0, maxx) temp.y := maxy + (Rand.Real * 10) temp.yvel := (Rand.Real * 3) + 1 temp.alive := 1 result temp end create function fall (flake : snowflake) : snowflake var temp := flake temp.y -= temp.yvel if temp.y < pileup then temp.alive := 0 pileup += 0.005 end if result temp end fall procedure draw (flake : snowflake) drawfilloval (round (flake.x), round (flake.y), 1, 1, white) end draw end Snow module StaticFlake import Snow export draw, create, staticflake type staticflake : record x, y : int end record fcn create (flake : Snow.snowflake) : staticflake var temp : staticflake temp.x := round (flake.x) temp.y := round (flake.y) result temp end create proc draw (flake : staticflake) drawfilloval (flake.x, flake.y, 2, 2, white) end draw end StaticFlake var win := Window.Open ("offscreenonly") colourback (black) colour (white) var cur := 0 var snow : array 1 .. 1000 of Snow.snowflake %creates 100 snowflakes var static : flexible array 1 .. 0 of StaticFlake.staticflake for i : 1 .. upper (snow) snow (i) := Snow.create %creates all dem snowflakes snow (i).y -= Rand.Real * 100 end for loop %main loop for i : 1 .. upper (snow) if snow (i).alive ~= 0 then snow (i) := Snow.fall (snow (i)) %the snow flake falls a bit else if upper (static) < 1000 then new static, upper (static) + 1 static (upper (static)) := StaticFlake.create (snow (i)) else cur := cur rem 1000 cur += 1 Text.Locate (1, 1) put cur static (cur) := StaticFlake.create (snow (i)) end if snow (i) := Snow.create end if end for cls for i : 1 .. upper (snow) Snow.draw (snow (i)) %draws the snowflake end for for i : 1 .. upper (static) StaticFlake.draw (static (i)) end for drawfillbox (0, 0, maxx, round (Snow.pileup)-5, white) View.Update Time.DelaySinceLast (20) end loop |