Computer Science Canada

rain help

Author:  Jestar [ Mon Nov 26, 2007 6:52 pm ]
Post subject:  rain help

ok so i am trying to make a weather effects in my game and i am starting with rain...i was wondering how i should go about it...Should i make the rain drops a sprite? am i able to array srpites? i tried just making the drops ovals but its a pain in the butt erasing them for they dont leave a trail...so yeah i am looking for advice on how to go about this...currently i have 1 drop as a sprite and i dont no how to array a srpite so i am stumped.

Author:  Nick [ Mon Nov 26, 2007 11:31 pm ]
Post subject:  RE:rain help

im liking the array however u dont NEED sprites

say you have 10 rain images you want to loop, well in your program when you draw your background you could have a code such as this:
code:
for i:1..10
Pic.Draw(rain(i),0,0,picMerge

so the rain will be drawn over top of everything and the picMerge will erase the white in the image

i hope u understand what i mean

Author:  zylum [ Tue Nov 27, 2007 12:54 am ]
Post subject:  RE:rain help

The simplest way would be to have each drop be a pixel. You can define a position record which has the parameters x, y and then make an array of this record and initialize the positions to random points on the screen. Then just apply gravity/wind to each element in the array and redraw each pixel. If a pixel goes off the screen, the reposition it to the top of the screen so that if falls down again.

Author:  Jestar [ Tue Nov 27, 2007 9:06 am ]
Post subject:  Re: rain help

if i drew each rain drop as a pixel then i would have to repaste the background evreytime it moved to erase it and that would cause lots of flashing...and momop i am currently trying your idea, i'll re post if ihave more trouble or i get it to work...thanks for the help guys.





EDIT

ok momop i tried your idea but the problem is that it dosnt erase itself after it moves...and thats mainly the reason why i want to use a sprite for the rain drop....

Author:  zylum [ Tue Nov 27, 2007 3:43 pm ]
Post subject:  RE:rain help

look into View.Update to stop the flashing. redrawing the background should not be a problem as it should be proceduralized anyways.

Author:  belarussian [ Wed Nov 18, 2009 6:20 pm ]
Post subject:  Re: rain help

ok THis is really easy here is the code you can change the amount of rain and how fast it moves

View.Set ("offscreenonly")
%set up the rain
const NoOfraindrops := 400
var raindropX : array 1 .. NoOfraindrops of int
var raindropY : array 1 .. NoOfraindrops of int

for raindrop : 1 .. NoOfraindrops
raindropX (raindrop) := Rand.Int (0, maxx)
raindropY (raindrop) := Rand.Int (0, maxy)
end for

loop
for flake : 1 .. NoOfraindrops
%Drop The rain
raindropY (raindrop) -= Rand.Int (1, 5)
%raindropX (raindrop) += Rand.Int (-1, 1)
if raindropY (raindrop) < 0 then
raindropY (raindrop) := maxy
raindropX (raindrop) := Rand.Int (0, maxx)
end if
Draw.FillOval (raindropX (raindrop),raindropY (raindrop), 1, 1, blue)
end for
%Update the screen (because of offscreen only)
View.Update
delay (25)
end loop

Author:  belarussian [ Wed Nov 18, 2009 9:21 pm ]
Post subject:  RE:rain help

umm well you have to make a background for it to work perfectly.

%Make the background
Draw.FillBox (0, 0, 800, 300, 29)
Draw.FillBox (0, 300, 800, 600, red)

%PUT THIS INSIDE THE LOOP

Author:  belarussian [ Thu Nov 19, 2009 10:16 pm ]
Post subject:  RE:rain help

AND YOU MIGHT GET A ERROR A FOR FLAKE CHANGE THAT TO RAINDROP

so ya i hope you have a good rain program

Author:  Tony [ Thu Nov 19, 2009 10:20 pm ]
Post subject:  RE:rain help

Wait... so you found a thread from 2007 and proceeded to tripple-post in it? Locked, warning, etc.


: