actually I meant to say subtract 1 from the Y coordinate when you hit the first non zero point.
but there is a "gotchya", that will only work if you increment your raindrops by 1 downward each loop, which I'm guessing you're not doing if the game is in an old style.
you can just find the width of Chubby and then do an IF on your raindrops to see if they are in a vertical column above him, and then check to see if they occupy the space that he takes up in an offscreen array.
say if Chubby is 20 pixels wide, and his leftmost coordinate is currently 150 on the screen, then you only check raindrops that are within 150 to 170.
to get precise collisions you can do something what I was saying before, but a little different,
put Chubby in a black box again. this time scan horizontally and downward. Have a Type for his borders:
Type Borders
X1 as Integer
X2 as Integer
End Type
Dim Bounds(ScreenHeight - ChubbyHeight to ScreenHeight) as Borders
'loop downward until you hit the first nonzero point
For Y = 0 to ScreenHeight
For X = 0 to ScreenWidth
If POINT(X,Y) <> 0 And NOT FirstFound Then
FirstFound = True
BorderX1 = X
Endif
If POINT(X,Y) = 0 And FirstFound Then
BorderX2 = X-1
Exit For
Endif
Next
FirstFound = False
Bounds(Y).X1 = BorderX1
Bounds(Y).X2 = BorderX2
Next
For each row, you are looping across until you find a nonzero point, set a flag to indicate you have found the first point and save this is the first border point. Then when you come to another nonzero point, you are on the other side of Chubby(as long as chubby doesn't have any black on him, if so use a different backcolor) since you're on the other side you back up 1 to find his rightmost border for that column.
Now what you have is a list of border points for each row which you can use like this:
You've found a raindrop that lies within Chubby's column, and you know the Y coordinate of that drop(or the center or leftmost point, probably good enough)
Now all you have to do is go,
IF RainDropX => Bounds(RainDropY).X1 and RainDropX <= Bounds(RainDropY).X2 Then ' process a hit
I don't think there's any gotchyas there but it will depend of course on how you're doing things. Hope that helps(again..)