Ooh, never use goto's if you can help it, they are horrible, try something like this instead using sub routines and gosub statements :-
This is pulled from my Asteroids clone if you didn't guess
rem top of routine
gosub init_main : rem initialize variables
repeat
gosub title_page
if spacekey()=1 : rem space p[ressed so start main game loop
cls
gosub start_game_init : rem initialize first level variables.
repeat
if asteroid_cnt=0
gosub next_wave : rem reset variables and controls for next level (i.e. more asteroids)
endif
gosub Player_Move : rem check keys and move player
gosub bullet_move : rem move visible player bullets
gosub bullet_hit : rem check if bullets have hit any Asteroids or UFO
gosub asteroid_move : move the asteroids
gosub player_hit : rem has the player been hit by Asteroids or UFO fire
gosub explode : rem Animate any eplosion effects
gosub UFO_Move : rem generate UFO and move it around
gosub UFO_Fire : rem ufo fires bullet every so often (Random)
gosub UFOBul_Move : rem move visible ufo bullets.
rem display score and number of remaining ships, plus top highscore
set text size deffontsize
text 1,1,"Score : "+str$(pscore)
text 100,1,"Ships : "+str$(plifes)
text 500,1,"Highscore : "+str$(highscore)
sync
until plifes=0 : rem keep looping until all lives lost
gosub game_over : rem display game over screen
cls
endif
sync
until escapekey()=1 : rem escape pressed so end program
gosub tidy_up : rem remove all objects, images and arrays etc.
end : rem end program
This is a lot easier to follow and your program doesn't jump all over the place, which could result in program flow problems if you get it wrong.
This is pulled from my Asteroids clone if you didn't guess
Trev C