collision help 
	 
	
		| Author | 
		Message | 
	 
		 
		shoobyman
 
  
 
    
		 | 
		
		
			
				  Posted: Wed Oct 04, 2006 8:02 am    Post subject: collision help  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
					  | code: | 	 		  setscreen ("offscreenonly")
 
var x, y, button : int
 
var plx, ply, plhealth, explx, exply, expls : int
 
var bulx, buly, speed : array 1 .. 10 of int
 
var explosion : boolean := false
 
plhealth := 600
 
bulx (1) := 0
 
buly (1) := 100
 
bulx (2) := 0
 
buly (2) := 200
 
bulx (3) := 0
 
buly (3) := 300
 
bulx (4) := 0
 
buly (4) := 400
 
bulx (5) := 0
 
buly (5) := 500
 
bulx (6) := 100
 
buly (6) := 0
 
bulx (7) := 250
 
buly (7) := 0
 
bulx (8) := 300
 
buly (8) := 0
 
bulx (9) := 400
 
buly (9) := 0
 
bulx (10) := 500
 
buly (10) := 0
 
speed (1) := 3
 
speed (2) := 4
 
speed (3) := 5
 
speed (4) := 6
 
speed (5) := 7
 
speed (6) := 4
 
speed (7) := 5
 
speed (8) := 6
 
speed (9) := 7
 
speed (10) := 4
 
expls := 1
 
 
loop
 
    if bulx (1) > maxx then
 
        bulx (1) := -50
 
        randint (buly (1), 20, maxy - 20)
 
        randint (speed (1), 3, 7)
 
    end if
 
    if bulx (2) > maxx then
 
        bulx (2) := -50
 
        randint (buly (2), 20, maxy - 20)
 
        randint (speed (2), 3, 7)
 
    end if
 
    if bulx (3) > maxx then
 
        bulx (3) := -50
 
        randint (buly (3), 20, maxy - 20)
 
        randint (speed (3), 3, 7)
 
    end if
 
    if bulx (4) > maxx then
 
        bulx (4) := -50
 
        randint (buly (4), 20, maxy - 20)
 
        randint (speed (4), 3, 7)
 
    end if
 
    if bulx (5) > maxx then
 
        bulx (5) := -50
 
        randint (buly (5), 20, maxy - 20)
 
        randint (speed (5), 3, 7)
 
    end if
 
    if buly (6) > maxy then
 
        buly (6) := -50
 
        randint (bulx (6), 20, maxx - 20)
 
        randint (speed (6), 3, 7)
 
    end if
 
    if buly (7) > maxy then
 
        buly (7) := -50
 
        randint (bulx (7), 20, maxx - 20)
 
        randint (speed (7), 3, 7)
 
    end if
 
    if buly (8) > maxy then
 
        buly (8) := -50
 
        randint (bulx (8), 20, maxx - 20)
 
        randint (speed (8), 3, 7)
 
    end if
 
    if buly (9) > maxy then
 
        buly (9) := -50
 
        randint (bulx (9), 20, maxx - 20)
 
        randint (speed (9), 3, 7)
 
    end if
 
    if buly (10) > maxy then
 
        buly (10) := -50
 
        randint (bulx (10), 20, maxx - 20)
 
        randint (speed (10), 3, 7)
 
    end if
 
 
 
    mousewhere (x, y, button)
 
    View.Update
 
    delay (20)
 
    cls
 
    drawfillbox (10, 10, plhealth, 17, 12)
 
    drawfilloval (x, y, 10, 10, black)
 
    drawline (bulx (1), buly (1), bulx (1) - 20, buly (1), 7)
 
    drawline (bulx (2), buly (2), bulx (2) - 20, buly (2), 7)
 
    drawline (bulx (3), buly (3), bulx (3) - 20, buly (3), 7)
 
    drawline (bulx (4), buly (4), bulx (4) - 20, buly (4), 7)
 
    drawline (bulx (5), buly (5), bulx (5) - 20, buly (5), 7)
 
    drawline (bulx (6), buly (6), bulx (6), buly (6) - 20, 7)
 
    drawline (bulx (7), buly (7), bulx (7), buly (7) - 20, 7)
 
    drawline (bulx (8), buly (8), bulx (8), buly (8) - 20, 7)
 
    drawline (bulx (9), buly (9), bulx (9), buly (9) - 20, 7)
 
    drawline (bulx (10), buly (10), bulx (10), buly (10) - 20, 7)
 
 
    bulx (1) += speed (1)
 
    bulx (2) += speed (2)
 
    bulx (3) += speed (3)
 
    bulx (4) += speed (4)
 
    bulx (5) += speed (5)
 
    buly (6) += speed (6)
 
    buly (7) += speed (7)
 
    buly (8) += speed (8)
 
    buly (9) += speed (9)
 
    buly (10) += speed (10)
 
    if x > bulx (1) - 30 and x < bulx (1) + 10 and y > buly (1) - 10 and y < buly (1) + 10 then
 
        explosion := true
 
        plhealth -= 10
 
    end if
 
    if x > bulx (2) - 30 and x < bulx (2) + 10 and y > buly (2) - 10 and y < buly (2) + 10 then
 
        explosion := true
 
        plhealth -= 10
 
    end if
 
    if x > bulx (3) - 30 and x < bulx (3) + 10 and y > buly (3) - 10 and y < buly (3) + 10 then
 
        explosion := true
 
        plhealth -= 10
 
    end if
 
    if x > bulx (4) - 30 and x < bulx (4) + 10 and y > buly (4) - 10 and y < buly (4) + 10 then
 
        explosion := true
 
        plhealth -= 10
 
    end if
 
    if x > bulx (5) - 30 and x < bulx (5) + 10 and y > buly (5) - 10 and y < buly (5) + 10 then
 
        explosion := true
 
        plhealth -= 10
 
    end if
 
 
    if explosion = true then
 
        explx := x - 7
 
        exply := y
 
        drawfilloval (explx, exply, expls, expls, yellow)
 
        expls += 1
 
    end if
 
    if expls >= 13 then
 
        explosion := false
 
        expls := 1
 
    end if
 
    if plhealth <= 0 then
 
        quit
 
    end if
 
end loop
 
  | 	  
 
 
 
 
Someone help me make a collision between lines.
 
I want it so that if the lines crash into each other, it creates a little explosion, someone help.
 
(btw, i just need to know how to do it efficiently) | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
		 
		Sponsor Sponsor 
		 
  
		 | 
		
 | 
	 
	 
		  | 
	 
				 
		do_pete
 
  
 
    
		 | 
		
		
			
				  Posted: Wed Oct 04, 2006 8:33 am    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				There is a function in the Math module that will allow you to do this. Sorry I can't tell you what this function is called because I don't have a new version of Turing on hand. By the way, you might also want to look into for loops. This will save you a lot of lines so that instead of:
 
	  | code: | 	 		      if bulx (1) > maxx then 
 
        bulx (1) := -50 
 
        randint (buly (1), 20, maxy - 20) 
 
        randint (speed (1), 3, 7) 
 
    end if 
 
    if bulx (2) > maxx then 
 
        bulx (2) := -50 
 
        randint (buly (2), 20, maxy - 20) 
 
        randint (speed (2), 3, 7) 
 
    end if 
 
    if bulx (3) > maxx then 
 
        bulx (3) := -50 
 
        randint (buly (3), 20, maxy - 20) 
 
        randint (speed (3), 3, 7) 
 
    end if 
 
    if bulx (4) > maxx then 
 
        bulx (4) := -50 
 
        randint (buly (4), 20, maxy - 20) 
 
        randint (speed (4), 3, 7) 
 
    end if 
 
    if bulx (5) > maxx then 
 
        bulx (5) := -50 
 
        randint (buly (5), 20, maxy - 20) 
 
        randint (speed (5), 3, 7) 
 
    end if 
 
    if buly (6) > maxy then 
 
        buly (6) := -50 
 
        randint (bulx (6), 20, maxx - 20) 
 
        randint (speed (6), 3, 7) 
 
    end if 
 
    if buly (7) > maxy then 
 
        buly (7) := -50 
 
        randint (bulx (7), 20, maxx - 20) 
 
        randint (speed (7), 3, 7) 
 
    end if 
 
    if buly (8) > maxy then 
 
        buly (8) := -50 
 
        randint (bulx (8), 20, maxx - 20) 
 
        randint (speed (8), 3, 7) 
 
    end if 
 
    if buly (9) > maxy then 
 
        buly (9) := -50 
 
        randint (bulx (9), 20, maxx - 20) 
 
        randint (speed (9), 3, 7) 
 
    end if 
 
    if buly (10) > maxy then 
 
        buly (10) := -50 
 
        randint (bulx (10), 20, maxx - 20) 
 
        randint (speed (10), 3, 7) 
 
    end if 
 
  | 	  
 
You can have:
 
	  | code: | 	 		  for bulletNumber: 1..10
 
    if buly (bulletNumber) > maxy then 
 
        buly (bulletNumber) := -50 
 
        randint (bulx (bulletNumber), 20, maxx - 20) 
 
        randint (speed (bulletNumber), 3, 7) 
 
    end if 
 
end for
 
  | 	 
  | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		shoobyman
 
  
 
    
		 | 
		
		
			
				  Posted: Wed Oct 04, 2006 9:46 am    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				| thanx, the for makes the code much better, but i still need to make collision between lines, some1 help? | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		Clayton
 
  
 
    
		 | 
		
		
			
				  Posted: Wed Oct 04, 2006 12:37 pm    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				| check into collision detection in the Turing Walkthrough | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		do_pete
 
  
 
    
		 | 
		
		
			
				  Posted: Thu Oct 05, 2006 9:52 am    Post subject: (No subject)  | 
	
				
				 | 
			 
			 
				
  | 
			 
			
				| You can try and use for loops for htis or you can use Math.DistancePointLine. | 
			 
			
				 | 
			 
		  | 
	 
	 
		 | 
		
		 | 
	 
	  
		  | 
	 
				 
		 | 
	 
 
	
	
	 
	
	 |