
-----------------------------------
shoobyman
Wed Oct 04, 2006 8:02 am

collision help
-----------------------------------
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  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:
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
Wed Oct 04, 2006 9:46 am


-----------------------------------
thanx, the for makes the code much better, but i still need to make collision between lines, some1 help?

-----------------------------------
Clayton
Wed Oct 04, 2006 12:37 pm


-----------------------------------
check into collision detection in the Turing Walkthrough

-----------------------------------
do_pete
Thu Oct 05, 2006 9:52 am


-----------------------------------
You can try and use for loops for htis or you can use Math.DistancePointLine.
