This is inspired by this game that I used to play on my Dads old Mac. It was called shatterball, and was kind of like 3D pong, but different.
You use the mouse to move the paddle and if you move the paddle at the precise moment that the ball hits it, the balls movement will be adjusted. You can choose any speed but dont choose one thats too fast because one, the collision wont work and two, you wont be able to hit it

.
It was a tight squeeze but here it is (I counted 'if:blah:endif' as two commands)...
rem **********************
rem * 3D Pong Type Thing *
rem **********************
rem * By Hamish McHaggis *
rem **********************
input "Choose ball speed (I recommend 5-30): ",speed:sync on:hide mouse:autocam off:make object plain 1,150,100
ghost object on 1:make object sphere 2,40:for x=1 to 5:read a:read b
read c:read d:read e:read f:read g
make object plain 2+x,a,b:rotate object 2+x,c,d,0:position object 2+x,e,f,g:color object 2+x,rgb(0,300-x*50,0):next x
set ambient light 40:hide light 0:set normalization on:make light 1:bmz=speed
bmx=3:bmy=2:bz=45:lives=10:position camera 0,0,-500
for z=1 to 3:for x=1 to 5:for y=1 to 4:make object plain 100+((z-1)*20+(x-1)*4+y),120,100:position object 100+((z-1)*20+(x-1)*4+y),-240+(x-1)*120,-150+(y-1)*100,1000-100*z
color object 100+((z-1)*20+(x-1)*4+y),rgb(rnd(255),rnd(255),rnd(255)):next y:next x:next z:do
racketx=racketx-mousemovex:rackety=rackety+mousemovey:if racketx<-225 then racketx=-225:else:if racketx>225 then racketx=225
by=by+bmy:bx=bx+bmx:if rackety<-150 then rackety=-150:else:if rackety>150 then rackety=150
bz=bz+bmz:if bx>280 or bx<-280:bmx=0-bmx:endif:if by>180 or by<-180:bmy=0-bmy:endif
if bz>1000:bmz=0-bmz:endif:color object 1,rgb(255,255,255):if bz<30 and bz>-20 and bx>racketx-75 and bx<racketx+75 and by>rackety-50 and by<rackety+50
bz=30:bmz=0-bmz:if bmx^2<10^2:bmx=bmx-mousemovex/8:endif:if bmy^2<10^2 then bmy=bmy+mousemovey/8
color object 1,rgb(100,100,100):endif:platecount=0:for x=101 to 101+3*4*5:if object exist(x)=1
platecount=platecount+1:if bz>=object position z(x)-20 and bz<=object position z(x)+20 and bx>=object position x(x)-70 and bx<=object position x(x)+70 and by>=object position y(x)-80 and by<=object position y(x)+80:delete object x:bmz=0-bmz:exit
endif:endif:next x:if platecount=0:center text 320,200,"You Win!!!":endif
if bz<-500 and platecount>0 and lives>0:bz=30:bmz=speed:lives=lives-1:endif
position object 1,racketx,rackety,0:position object 2,bx,by,bz:position light 1,bx,by,bz:mousemovex=320-mousex():mousemovey=240-mousey()
position mouse 320,240:ink rgb(200,200,200),0:line 0,object screen y(1),640,object screen y(1):line object screen x(1),0,object screen x(1),480:text 20,10,"Plates Left = "+str$(platecount)
text 220,10,"Lives = "+str$(lives):sync:loop:data 1000,500,0,0,0,0,1000,1200,500,0,90,-300,0,400,1200,500,0,90,300,0,400,600,1200,90,0,0,-200,400,600,1200,90,0:data 0,200,400
...and the long, un-compressed, remarked, easy to understand version

...
rem **********************
rem * 3D Pong Type Thing *
rem **********************
rem * By Hamish McHaggis *
rem **********************
rem Input ball speed
input "Choose ball speed (I recommend 5-30): ",speed
rem Set up environment
sync on
hide mouse
autocam off
rem Make paddle and ball
make object plain 1,150,100
ghost object on 1
make object sphere 2,40
rem Make walls by reading data
for x=1 to 5
read a:read b:read c:read d:read e:read f:read g
make object plain 2+x,a,b
rotate object 2+x,c,d,0
position object 2+x,e,f,g
color object 2+x,rgb(0,300-x*50,0)
next x
rem Set up lighting
set ambient light 40
hide light 0
set normalization on
make light 1
rem Set up variables
ballmovez=speed
ballmovex=3
ballmovey=2
bz=45
lives=10
rem Position camera
position camera 0,0,-500
rem Make plates
for z=1 to 3
for x=1 to 5
for y=1 to 4
make object plain 100+((z-1)*20+(x-1)*4+y),120,100
position object 100+((z-1)*20+(x-1)*4+y),-240+(x-1)*120,-150+(y-1)*100,1000-100*z
color object 100+((z-1)*20+(x-1)*4+y),rgb(rnd(255),rnd(255),rnd(255))
next y
next x
next z
rem Main loop
do
rem Move racket according to mouse
racketx=racketx-mousemovex
rackety=rackety+mousemovey
rem Stop racket going out of box
if racketx<-225 then racketx=-225
if racketx>225 then racketx=225
if rackety<-150 then rackety=-150
if rackety>150 then rackety=150
rem Move ball
bx=bx+ballmovex
by=by+ballmovey
bz=bz+ballmovez
rem Control ball bounces
if bx>280 or bx<-280 then ballmovex=0-ballmovex
if by>180 or by<-180 then ballmovey=0-ballmovey
if bz>1000 then ballmovez=0-ballmovez
rem Colour paddle default colour
color object 1,rgb(255,255,255)
rem Detect for ball hitting racket
if bz<30 and bz>-20 and bx>racketx-75 and bx<racketx+75 and by>rackety-50 and by<rackety+50
rem Control ball bouncing
bz=30
ballmovez=0-ballmovez
rem If ball movement isn't too much then adjust movement according to paddles (square the number to test for both negative and positive movement)
if ballmovex^2<10^2 then ballmovex=ballmovex-mousemovex/8
if ballmovey^2<10^2 then ballmovey=ballmovey+mousemovey/8
rem Make paddle flash
color object 1,rgb(100,100,100)
endif
rem Set platecount to 0
platecount=0
rem Loop through plates
for x=101 to 101+3*4*5
rem If the plate exists...
if object exist(x)=1
rem Inc platecount
platecount=platecount+1
rem If ball hits plate the delete it and bounce ball and exit plate-ball detection loop
if bz>=object position z(x)-20 and bz<=object position z(x)+20 and bx>=object position x(x)-70 and bx<=object position x(x)+70 and by>=object position y(x)-80 and by<=object position y(x)+80
delete object x
ballmovez=0-ballmovez
exit
endif
endif
next x
rem If there are no plates then you win
if platecount=0 then center text 320,200,"You Win!!!"
rem If ball goes behind paddle and lives aren't 0 and you havent won or lost then reposition ball and dec lives
if bz<-500 and platecount>0 and lives>0 then bz=30:ballmovez=speed:lives=lives-1
rem Position ball, paddle and light
position object 1,racketx,rackety,0
position object 2,bx,by,bz
position light 1,bx,by,bz
rem Position mouse and find mouse movement
mousemovex=320-mousex()
mousemovey=240-mousey()
position mouse 320,240
rem Draw sci-fi line things!!!
ink rgb(200,200,200),0
line 0,object screen y(1),640,object screen y(1)
line object screen x(1),0,object screen x(1),480
rem Draw text
text 20,10,"Plates Left = "+str$(platecount)
text 220,10,"Lives = "+str$(lives)
sync
loop
rem Data for box set up
data 1000,500,0,0,0,0,1000,1200,500,0,90,-300,0,400,1200,500,0,90,300,0,400,600,1200,90,0,0,-200,400,600,1200,90,0:data 0,200,400
Why the hell'd you ask me for crying out loud!?!