Computer Science Canada Falling Snow actually works |
Author: | belarussian [ Wed Nov 18, 2009 9:59 am ] |
Post subject: | Falling Snow actually works |
Falling Snow This will have a pic in it if you need just the snow ask me View.Set ("graphics:800;600,nobuttonbar,nocursor,noecho") View.Set ("offscreenonly") %set up the snow const NoOfFlakes := 400 var flakeX : array 1 .. NoOfFlakes of int var flakeY : array 1 .. NoOfFlakes of int for flake : 1 .. NoOfFlakes flakeX (flake) := Rand.Int (0, maxx) flakeY (flake) := Rand.Int (0, maxy) end for loop %Make the background Draw.FillBox (0, 0, 800, 300, 29) Draw.FillBox (0, 300, 800, 600, blue) %snowman %body Draw.FillOval (100, 110, 60, 60, white) Draw.FillOval (100, 195, 45, 45, white) Draw.FillOval (100, 260, 27, 27, white) %eyes Draw.FillOval (110, 270, 5, 5, black) Draw.FillOval (90, 270, 5, 5, black) %nose Draw.Line (105, 263, 95, 263, 42) Draw.Line (100, 250, 95, 263, 42) Draw.Line (100, 250, 105, 263, 42) Draw.Line (100, 250, 104, 263, 42) Draw.Line (100, 250, 103, 263, 42) Draw.Line (100, 250, 102, 263, 42) Draw.Line (100, 250, 101, 263, 42) Draw.Line (100, 250, 100, 263, 42) Draw.Line (100, 250, 99, 263, 42) Draw.Line (100, 250, 98, 263, 42) Draw.Line (100, 250, 97, 263, 42) Draw.Line (100, 250, 96, 263, 42) %mouth Draw.Line (105, 245, 95, 245, black) Draw.Arc (100, 245, 5, 5, 180, 0, black) %Hand Draw.FillOval (60, 195, 25, 20, white) Draw.FillOval (140, 195, 25, 20, white) %Flag Draw.ThickLine (155, 185, 155, 240, 2, black) Draw.FillBox (156, 240, 195, 215, brightred) %Draw.Arc () %Hat Draw.ThickLine (127, 287, 73, 287, 3, black) Draw.ThickLine (127, 291, 73, 291, 4, white) Draw.ThickLine (127, 294, 73, 294, 3, black) Draw.ThickLine (129, 287, 129, 294, 2, black) Draw.ThickLine (73, 287, 73, 294, 2, black) Draw.FillBox (80, 294, 120, 330, black) %Buttons Draw.FillOval (100, 165, 5, 5, black) Draw.FillOval (100, 185, 5, 5, black) Draw.FillOval (100, 205, 5, 5, black) Draw.FillOval (100, 225, 5, 5, black) %sky %Moon Draw.FillOval (65, 550, 40, 40, yellow) Draw.FillOval (89, 556, 45, 45, blue) %stars Draw.FillStar (300, 500, 310, 510, yellow) Draw.FillStar (265, 465, 255, 455, yellow) Draw.FillStar (400, 550, 410, 540, yellow) Draw.FillStar (200, 510, 210, 520, yellow) Draw.FillStar (115, 550, 125, 560, yellow) Draw.FillStar (375, 485, 365, 475, yellow) Draw.FillStar (65, 480, 75, 490, yellow) Draw.FillStar (130, 420, 140, 410, yellow) Draw.FillStar (750, 550, 760, 560, yellow) %Big Bear Draw.FillStar (690, 455, 700, 465, yellow) Draw.FillStar (720, 430, 730, 440, yellow) Draw.FillStar (700, 400, 710, 410, yellow) Draw.FillStar (670, 405, 680, 415, yellow) Draw.FillStar (630, 380, 640, 390, yellow) Draw.FillStar (605, 350, 615, 360, yellow) Draw.FillStar (600, 320, 610, 330, yellow) %Draw.FillStar (500, 500, 490, 490, yellow) %Polar Draw.FillStar (530, 550, 545, 565, yellow) %Small Bear Draw.FillStar (510, 530, 500, 520, yellow) Draw.FillStar (495, 500, 485, 490, yellow) Draw.FillStar (490, 470, 480, 460, yellow) Draw.FillStar (490, 430, 480, 420, yellow) Draw.FillStar (460, 475, 450, 465, yellow) Draw.FillStar (460, 430, 450, 420, yellow) %Christamas tree %Trunk Draw.FillBox (380, 100, 420, 170, 113) %Leaves? Draw.Line (300, 170, 500, 170, green) Draw.Line (300, 170, 380, 250, green) Draw.Line (500, 170, 420, 250, green) Draw.Line (320, 250, 380, 250, green) Draw.Line (420, 250, 480, 250, green) Draw.Line (320, 250, 380, 310, green) Draw.Line (480, 250, 420, 310, green) Draw.Line (380, 310, 340, 310, green) Draw.Line (420, 310, 460, 310, green) Draw.Line (340, 310, 380, 350, green) Draw.Line (460, 310, 420, 350, green) Draw.Line (420, 350, 440, 350, green) Draw.Line (380, 350, 360, 350, green) Draw.Line (400, 390, 360, 350, green) Draw.Line (400, 390, 440, 350, green) Draw.Fill (400, 200, brightgreen, green) %star Draw.FillStar (380, 385, 420, 425, 40) %presents %#1 Draw.FillBox (340, 100, 370, 130, brightred) Draw.Line (340, 105, 365, 130, green) Draw.Line (345, 100, 370, 125, green) Draw.Line (340, 100, 340, 105, green) Draw.Line (340, 100, 345, 100, green) Draw.Line (370, 130, 365, 130, green) Draw.Line (370, 130, 370, 125, green) Draw.Fill (360, 120, green, green) %#2 Draw.FillBox (330, 100, 290, 130, brightgreen) Draw.Line (290, 105, 325, 130, brightpurple) Draw.Line (295, 100, 330, 125, brightpurple) Draw.Line (290, 100, 290, 105, brightpurple) Draw.Line (290, 100, 295, 100, brightpurple) Draw.Line (325, 130, 330, 130, brightpurple) Draw.Line (330, 130, 330, 125, brightpurple) Draw.Fill (310, 115, brightpurple, brightpurple) %Home Draw.Arc (650, 275, 220, 220, 240, 300, black) Draw.ThickLine (760, 85, 620, 360, 2, black) Draw.ThickLine (540, 85, 650, 360, 2, black) Draw.ThickLine (590, 65, 642, 200, 2, black) Draw.ThickLine (712, 65, 642, 200, 2, black) Draw.Fill (642, 100, 43, black) Draw.Fill (642, 210, 114, black) Draw.Arc (650, 275, 220, 220, 255, 285, 43) Draw.Arc (650, 274, 220, 220, 255, 285, 43) %person %Draw.FillOval for flake : 1 .. NoOfFlakes %Drop The Flake flakeY (flake) -= Rand.Int (1, 5) %flakeX (flake) += Rand.Int (-1, 1) if flakeY (flake) < 0 then flakeY (flake) := maxy flakeY (flake) := Rand.Int (0, maxx) end if Draw.FillOval (flakeX (flake), flakeY (flake), 1, 1, white) end for %Update the screen (because of offscreen only) View.Update delay (25) end loop TURING |
Author: | Turing_Gamer [ Wed Nov 18, 2009 12:05 pm ] |
Post subject: | Re: Falling Snow actually works |
Lol very well done, although the code is long... Overall, 8/10 |
Author: | ssjwilliam [ Sun Dec 06, 2009 11:36 am ] |
Post subject: | Re: Falling Snow actually works |
Nice work! You may like to make it shorter for a higher rating. |
Author: | Superskull85 [ Sun Dec 06, 2009 12:13 pm ] | ||||
Post subject: | Re: Falling Snow actually works | ||||
Just a comment on "long code." Just because your code is long does not mean it is inefficient or bad. Likewise just because your code is short does not mean it is efficient or good. In general, "long code" is easier to understand as the code is explicitly outlined and not compressed into less lines. For example:
Versus:
Unless a programmer has thorough knowledge of expressions, and boolean algebra, the first piece of code would be easier to understand than the second piece of code. Sorry that that was off-topic. |
Author: | mirhagk [ Mon Dec 07, 2009 11:27 am ] |
Post subject: | RE:Falling Snow actually works |
yeah but shorter code makes it way easier to manage, although uber compressed code isn't a good idea either. (look in 20 lines or less lol) For instance putting algebra onto the draw line isn't a good idea, but using an array and for loops are better than 100 lines of almost the same thing. His code could definetly be improved by making it shorter. |
Author: | belarussian [ Mon Dec 07, 2009 9:14 pm ] |
Post subject: | RE:Falling Snow actually works |
ok lo0o0ky here if i would not put a backgound the program would literally suck because it would show lines so yeah get out of my house |
Author: | mirhagk [ Mon Dec 07, 2009 11:36 pm ] |
Post subject: | RE:Falling Snow actually works |
you could draw it from it from a pic ya know |
Author: | mag400 [ Tue Dec 08, 2009 2:39 pm ] |
Post subject: | RE:Falling Snow actually works |
Could I have a copy of the falling snow code? just the snow by itself please. thank you. |
Author: | mirhagk [ Tue Dec 08, 2009 2:40 pm ] |
Post subject: | RE:Falling Snow actually works |
i designed a pretty advanced snow program that allows the snow to pile up, and I also have a piece of code that just does the snow, do you want either one of those? |
Author: | belarussian [ Tue Dec 08, 2009 9:05 pm ] |
Post subject: | RE:Falling Snow actually works |
ya please can you show me how to make the snow pile up |
Author: | mirhagk [ Tue Dec 08, 2009 10:55 pm ] |
Post subject: | RE:Falling Snow actually works |
i don't have the exact code with me right now, i'll get it to you tommorrow but basically what I did was had an array of about 1000 "snowflake" objects and then an array of 1000 "staticflakes" (the snowflakes recorded things like speed and such and x and y in :real format while staticflakse only recorded an int of x and y since they didn't move). I also had a variable record the "bottom" which was where the snow was stacked up to once the snow flake hit the bottom it would do three things 1. create a "staticflake" at the location it hit (staticflakes are recycled once all 1000 are used up) 2. increase the bottom variable by like 0.01 or something like that 3. return to the top of the screen with new random variables now the bottom variables is also used to create a white box about 10-20 pixels below the bottom. This will cover up the spaces left behind by "staticflakes" that were recycled. while not being 100% accurate it's very close to being accurate and allows for a the snow to fall, land and create a bumby-ish bottom and keep falling over and over. (oh and "staticflakes" were bigger than "snowflakes" so that the ground looked smoother) |
Author: | mirhagk [ Wed Dec 09, 2009 10:22 am ] | ||
Post subject: | RE:Falling Snow actually works | ||
sorry for the double post but here's the snow code i was talking about
try it out, its beautiful |
Author: | Insectoid [ Wed Dec 09, 2009 1:21 pm ] |
Post subject: | RE:Falling Snow actually works |
I think the snowflakes should me more spread out vertically at the beginning. It's to pattern-y. |
Author: | mirhagk [ Wed Dec 09, 2009 4:14 pm ] | ||||
Post subject: | RE:Falling Snow actually works | ||||
yeah sorry just change this line
to
|
Author: | amateur [ Wed Dec 09, 2009 4:27 pm ] |
Post subject: | RE:Falling Snow actually works |
did you make this all by yourself, if so your really smart |
Author: | mirhagk [ Wed Dec 09, 2009 4:35 pm ] |
Post subject: | RE:Falling Snow actually works |
yeah of course lol. thats about 15 minutes of code. |
Author: | 308989961 [ Tue Jan 01, 2013 3:19 pm ] |
Post subject: | Re: Falling Snow actually works |
Sorry, this is really off topic, but how would I get the snow for a small area? Not the entire screen |
Author: | Insectoid [ Tue Jan 01, 2013 4:01 pm ] |
Post subject: | RE:Falling Snow actually works |
If you understand how the code works, it should be easy to adapt it to your own needs. If you can't make this simple change, then it looks to me like you're just copying code without knowing anything about it, and I won't support that. |
Author: | 308989961 [ Wed Jan 02, 2013 12:31 pm ] |
Post subject: | Re: Falling Snow actually works |
Okay so I've figured it out how to write it in one area but I'm sure how to make it in two separate areas. for flake : 1 .. NoOfFlakes flakeX (flake) := Rand.Int (200, 620) flakeY (flake) := Rand.Int (95,550) flake : 1 .. NoOfFlakes flakeX (flake) := Rand.Int (710, 1123) flakeY (flake) := Rand.Int (95,550) end for This is essentially the code but it doesn't work. How can I change it so I have it in 2 separate areas? Thanks! |
Author: | Insectoid [ Wed Jan 02, 2013 2:04 pm ] |
Post subject: | RE:Falling Snow actually works |
You'll need 2 arrays of flakes, one for each area. |
Author: | Ali669 [ Fri May 31, 2013 4:19 pm ] |
Post subject: | Re: Falling Snow actually works |
Cool game |