your indenting is really weird...
and yeah just set all your variables back to what you want them as, then position the paddles and the ball back as well.
Why do you reset the score if player 1 wins, but not if player 2 does?
Also, I personally have nothing against gotos but a lot of the more experienced & better coders on here would most heartily recommend that you find a workaround.
I'll have a look at updating your code in a minute and edit this post.
EDIT:
OK here we go
rem HIDE THE MOUSE AND LIMIT THE SYNC RATE TO 40
hide mouse
sync on
sync rate 40
gosub createobjects
do
rem SET/RESET VARIABLES
balla#=90
ballx#=0
ballz#=0
player1score#=0
player2score#=0
repeat
rem SCORING
if ballx#>6 then player2score#=player2score#+1:ballx#=0:ballz#=0:balla#=270
if ballx#<-6 then player1score#=player1score#+1:ballx#=0:ballz#=0:balla#=90
set cursor 300,50:print player2score#
set cursor 320,50:print "-"
set cursor 340,50:print player1score#
If player1score#=10 then winner=1
If player2score#=10 then winner=2
rem BALL MOVEMENT
ballx#=newxvalue(ballx#,balla#,0.3):ballz#=newzvalue(ballz#,balla#,0.3)
rem PLAYER 1 PADDLE MOVEMENT
IF upkey()=1 and player1pos#<5.5 then player1pos#=player1pos#+0.5
IF downkey()=1 and player1pos#>-3.5 then player1pos#=player1pos#-0.5
if upkey()=1 and ballx#>4 and ballx#<4.5 then balla#=balla#+8
if downkey()=1 and ballx#>4 and ballx#<4.5 then balla#=balla#-8
rem PLAYER 2 PADDLE MOVEMENT
IF keystate(17)=1 and player2pos#<3.5 then player2pos#=player2pos#+0.5
IF keystate(31)=1 and player2pos#>-3.5 then player2pos#=player2pos#-0.5
if keystate(17)=1 and ballx#<-4 and ballx#>-4.5 then balla#=balla#+8
if keystate(31)=1 and ballx#<-4 and ballx#>-4.5 then balla#=balla#-8
rem BOUNCING
if ballx#>4 and ballx#<4.5 and ABS(player1pos#-ballz#)<1.5 then balla#=360-balla#
if ballx#<-4 and ballx#>-4.5 and ABS(player2pos#-ballz#)<1.5 then balla#=360-balla#
if ballz#>4 or ballz#<-4 then balla#=180-balla#
rem MAKE SURE balla# IS LESS THAN 360 AND MORE THAN 0
balla#=wrapvalue(balla#)
rem POSITION OBJECTS
position object 1,5,0,player1pos#:position object 2,-5,0,player2pos#
position object 3,ballx#,0,ballz#:yrotate object 3,balla#
position camera 0,10,-5:point camera 0,0,0
sync
until winner>0
rem WINNER TEXT
create bitmap 10,640,480
Center Text 320,210,"Player "+STR$(winner)+" is the winner, congrats!"
Center Text 320,270,"Play again? Y/N"
repeat
copy bitmap 10,0
sync
if upper$(inkey$())="Y" then winner=0:continue=1
if upper$(inkey$())="N" then end
until continue=1
delete bitmap 10
loop
createobjects:
rem MAKE THE PADDLES, BALL AND FLOOR
make object box 1,1,1,3:color object 1,rgb(255,0,0)
` load image "paddle.bmp",1
` texture object 1,1
make object box 2,1,1,3:color object 2,rgb(0,255,0)
` load image "paddle2.bmp",2
` texture object 2,2
make object sphere 3,1:color object 3,rgb(0,0,50)
make object box 4,10,0.1,10:position object 4,0,-0.55,0
` load image "Floor.bmp",3
` texture object 4,3
return
There are a couple of lines commented out in the loading objects gosub because I don't have the pictures, but obviously just remove the little ` things to reinsert your graphics. You don't need colour object though if you are just about to texture the object do you? surely it's just wasteful code...
Anyway here your code basically just enters the main part of the game, and repeats this until one player wins in a repeat...until loop inside the main loop. Then, it goes to another repeat...until loop where the computer waits for the player to press either the y or the n key to continue. then it hits the "loop" command and goes all the way back to where the initial variables are reset, and back into the first repeat loop. This may not be the best way of doing it but at least it gets rid of the gotos as well.
I also changed it so that instead of having a seperate section for each winner (which is especially odd seeing as they seemed to be intended to be identical except for one character but in fact you missed a couple of lines out of the second one) it uses the same thing twice, simply reading out which player wins when it comes to that part of the line and then continuing.
I think that's about it. I moved the sync on command up, because it didn't seem worth having it down below where you put the sync rate command, but apart from that it was just little bits and bobs. I also changed may have some of the indenting slightly - sorry about that I just found your way confusing.