
-----------------------------------
@DRI@N
Tue May 25, 2004 9:31 pm

SLOPE PROBLEM!
-----------------------------------
I made a function to calculate slope and shoot on the net..press shift to shoot, but  :)  something isn't working. The friggin puck disappears right away when u press shift....


setscreen("graphics:800;800")
View.Set("offscreenonly")   
 
colorback(black)
cls

    var crowd_colour:int
    
    var x1_crowd: int
    var y1_crowd: int

    
    var counter:int:=0
    var arena_x : array 1..8 of int := init (200, 200, 250, 550, 
                                   600, 600, 550, 250)
    var arena_y : array 1..8 of int := init (150, 650, 700, 700,
                                   650, 150, 100, 100)
    var Score_font:int:=Font.New ("Garamond:30")
    
    var score:int:=0
    var player_score:string:=""
    var puckx,pucky:real:=400
    var puckychange,puckxchange:real:=1
    var RD_X:int:=500
    var RD_Y:int:=200
    var chars : array char of boolean
      
    var cur_x,cur_y:real

procedure Arena
loop

counter:=counter+1


randint(crowd_colour,1,255)

randint(x1_crowd,1,800)
randint(y1_crowd,1,800)

drawfilloval(x1_crowd,y1_crowd,2,2,crowd_colour)

exit when counter=30000

end loop
end Arena




function Slope_Calculate(x1:int,y1:int,x2:real,y2:real):real
var slope:real
slope:=(y1-y2/abs(x1-x2))
result slope
end Slope_Calculate



loop
cls
Arena
loop
Input.KeyDown (chars)

if chars (KEY_UP_ARROW) then
            RD_Y := RD_Y + 2
        elsif chars (KEY_DOWN_ARROW) then
            RD_Y := RD_Y - 2
        elsif chars (KEY_RIGHT_ARROW) then
            RD_X := RD_X + 2
        elsif chars (KEY_LEFT_ARROW) then
            RD_X := RD_X - 2
end if

if chars (KEY_SHIFT) then
puckxchange:=Slope_Calculate(400,620,puckx,pucky)
puckychange:=Slope_Calculate(400,620,puckx,pucky)
end if
if RD_X=586 then
RD_X:=RD_X-8
elsif  RD_X=224 then
RD_X:=RD_X+8
end if

if RD_Y=686 then
RD_Y:=RD_Y-8
elsif  RD_Y=112 then
RD_Y:=RD_Y+8
end if

%Arena
Draw.FillPolygon (arena_x, arena_y, 8, 100)  

puckx:=puckx+puckxchange
pucky:=pucky+puckychange

cur_x:=puckx
cur_y:=pucky
%Puck
Draw.FillOval(round(puckx),round(pucky),2,2,black)

if puckx=598 or puckx=202 then
puckxchange:=puckxchange*-1
end if

if pucky=698 or pucky=102 then
puckychange:=puckychange*-1
end if
%Puck Corners
if (pucky-450)>=puckx then
puckxchange:=puckxchange*-1
puckychange:=puckychange*-1
end if

if puckx>550 and pucky>650 and (1250-pucky)650 and (1250-RD_Y+32) RD_Y-15 and pucky 390 and cur_x 600 and cur_y 