I wasnt so sure of what the problem was? But i think it was that the screen was blue instead of black on the background when waiting for input?
If so, i rewrote your collision sub routine for you. Heres the code (also in source window if you cant see the code button)
BORDERCOLLISION:
IF y# >= 460.0
Hide Sprite 1
Hide Sprite 2
While Decision = 0
Box 0, 0, screen width(), screen height(), 0, 0, 0, 0
Center Text Screen Width() / 2, 30, "Game Over!"
Center Text screen width() / 2, Screen Height() / 2, "Would you like to play again?"
Center Text screen width() / 2, (Screen Height() / 2) + 15, "Y/N"
If Keystate(21) Then Decision = 1
If Keystate(49) Then Decision = 2
Sync
EndWhile
If Decision = 1
Show Sprite 1
Show Sprite 2
Decision = 0
Goto _Start
Else
End
Endif
Endif
Return
Let me explain it to you
First thing is i hide your two sprites as they really dont need to be there ^^ Then I setup a while loop. This loop will go on forever until a variable called decision has a value that is anything apart from 0. We will set its value to something when the user makes a choice.
Then I use the box command to draw a box over the screen - I find this to be more effective than cls().. i dont know why. But its a super fast command so it can be used to clear the screen just fine
The last four parameters of the Box() command let you set a colour for each corner. Colour 0 is black. Usually you would want to set the box colours using the rgb() command to easilly set the colour without faffle, but as its easy to remember 0 as black we can just use that there (incidently, if you set different colours for different corners you will get a gradiant effect, i will leave you to play with that though).
Then I simply write some text to the screen. The text command is genrally much better than print for this task because you can set exactally where you want it to go. I used the Screen Width() and Screen Height() parameters to set the location of the text, they return the width and height of the screen respectivly/ Divide them by two and you get the middle of the screen - this way you ensure you draw to the same place no matter what the screen size is
Then instead of input (which hogs the program to itself) I use the Keystate() command to detect if the user pressed Y or N. Keystate() takes a scancode as its parameter. Every key on the keyboard has a scancode, but they are impossiable to remember
If you want to know a keys scancode you can write a very short program which is basically this in a loop: Text 0, 0, Str$(Scancode()) - that writes the scancode of the key currently being pressed in the top left, very usful i find ^^ Keystate() returns 1 if the key belonging to the scancode you set is pressed.
(more than you need to know, but just incase you are confused about me writing "If Keystate(21)" rather than "If Keystate(21) = 1" its because an If statement is a boolean expression.. that is, if the condition is TRUE it excutes the code in its scope. As far as im aware, every value above 0 is counted as TRUE, so when the key is pressed and Keystate(29) equals 1 the code will execute without the need to explicity check that it = 1)
Scancode 21 = Y and Scancode 49 = N. If Y is pressed, we set the decision variable to 1. If N is pressed we set it to 2. (It seems common sense to set it to 0 if N is pressed, but our while loop will execute for as long as decision is equal to 0, so we set it to 2 instead). When decision = 1 or 2 the while loop stops and the If statement after is evaluated, if its 1 we reshow our sprites and restart the game, otherwise we simply end the program.
I hope that was usful to you
..i may of gone on a little bit too much and maybe talked about simple things you already know - but i wanted to be througher to avoid any confusion.
Feel free to ask anything else, even more so if interupted your problem completly wrong
And good luck with your game ^_^
p4 2.4ghz, 256ddr ram, Geforce4 MX 440
Innovate, redefine, recreate whats in your mind. It isnt fate, you decide, only you can cross that line.