Jetpac laser problem

BlitzPlus Forums/BlitzPlus Beginners Area/Jetpac laser problem

I'm writing a Jetpac game but am having a problem with the laser. I need to fire a laser from player position but not have the laser move left/right when player does.
I can't work out how to store temp co-ordinates for laser starting position. I have asked for help before but could not understand it so, if anybody can help I would really appreciate it.

Here's a quick example that shows you how to handle your problem. If you have any questions, ask away.

Graphics 800,600,32,2
SetBuffer BackBuffer()

Const DIR_LEFT  = 1
Const DIR_RIGHT = 2

Type Laser
    Field x,y,dir
End Type

Function CreateLaser.Laser(x,y,dir)
	laser.Laser=New Laser
	laser\x=x
	laser\y=y
	laser\dir=dir
	Return laser
End Function

Function UpdateLaser(l.Laser)
	Select l\dir
	Case DIR_LEFT
		;Move the laser left
		l\x=l\x-3
		Color 255,255,255
		Line l\x,l\y,l\x-5,l\y
		;If the laser goes too far left, get rid of it
		If l\x+10<0
			Delete l
		EndIf
	Case DIR_RIGHT
		;Move the laser right
		l\x=l\x+3
		Color 255,255,255
		Line l\x,l\y,l\x+5,l\y	
		;If the laser goes too far right, get rid of it	
		If l\x>GraphicsWidth()
			Delete l
		EndIf
	End Select
End Function

Type Player
	Field x,y,dir
End Type

Function CreatePlayer.Player(x,y,dir)
	player.Player=New Player
	player\x=x
	player\y=y
	player\dir=dir
	Return player
End Function

Function UpdatePlayer(p.Player)
	;Move the player if the left or right arrow is pressed
	If KeyDown(203)
		p\x=p\x-1
		p\dir=DIR_LEFT
	ElseIf KeyDown(205)
		p\x=p\x+1
		p\dir=DIR_RIGHT
	EndIf
	
	;If the player hits the space bar, create a laser at a certain position based on the player's
	;current direction.
	If KeyHit(57)
		Select p\dir
		Case DIR_LEFT
			CreateLaser(p\x-10,p\y+20,p\dir)
		Case DIR_RIGHT
			CreateLaser(p\x+30,p\y+20,p\dir)
		End Select		
	EndIf		
	
	;Draw the player depending upon its direction
	Select p\dir
	Case DIR_LEFT
		Color 255,0,0
		Rect p\x,p\y,20,60
		Rect p\x-10,p\y+20,10,3
	Case DIR_RIGHT
		Color 255,0,0
		Rect p\x,p\y,20,60
		Rect p\x+20,p\y+20,10,3
	End Select
End Function

player.Player=CreatePlayer(495,540,DIR_LEFT)
Repeat
	Cls()
	UpdatePlayer(player)
	;Update all the lasers
	For l.Laser=Each Laser
		UpdateLaser l
	Next
	Flip()
Until KeyDown(1)


Thanks Khomy