Programming C, C++, Java, PHP, Ruby, Turing, VB
Computer Science Canada 
Programming C, C++, Java, PHP, Ruby, Turing, VB  

Username:   Password: 
 RegisterRegister   
 collision help
Index -> Programming, Turing -> Turing Help
View previous topic Printable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic
Author Message
shoobyman




PostPosted: 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
Sponsor
sponsor
do_pete




PostPosted: 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




PostPosted: 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




PostPosted: Wed Oct 04, 2006 12:37 pm   Post subject: (No subject)

check into collision detection in the Turing Walkthrough
do_pete




PostPosted: 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.
Display posts from previous:   
   Index -> Programming, Turing -> Turing Help
View previous topic Tell A FriendPrintable versionDownload TopicSubscribe to this topicPrivate MessagesRefresh page View next topic

Page 1 of 1  [ 5 Posts ]
Jump to:   


Style:  
Search: