Computer Science Canada Programming C, C++, Java, PHP, Ruby, Turing, VB   Username:   Password: Wiki   Blog   Search   Turing   Chat Room  Members
shooting mechanism in hockey game?
Author Message
mapleleafs

Posted: Fri Feb 20, 2004 10:43 pm   Post subject: shooting mechanism in hockey game?

hey, i'm making this hockey game in turing, but i don't know how to make the players shoot the puck properly. here's the general framework that i have for shooting so far:

 code: Input.Keydown (chars) if chars ('buttonForShoot') and playerHasPuck = true then      loop            exit when puckCoordinateX >= maxx            puckCoorinateX += 5      end loop      playerHasPuck = false end if

If i were to use this code in my game, the puck would just go straight at the wall/boards. I need to know how to make the puck go directly at the net, regardless of the location of the player/puck carrier. help is appreciated, and i will put you in my credits if i actually finish making this game.

and by the way, my hockey game will be moving from left and right, not up and down like the old SNES games
Sponsor
Sponsor

Tony

Posted: Fri Feb 20, 2004 10:51 pm   Post subject: (No subject)

well first of all, NO. You dont make it into the loop. The force is applied to the puck just once. So you set puck's velocity and let it fly.

As for the direction. Use your trig/pythag knowledge to solve the "puck triangle"

hypotinuse = puck's total velocity
angle = tangent Y/X

solve for X, Y components and those are the compound velocities that will lead the puck straight into the net.
Tony's programming blog. DWITE - a programming contest.
mapleleafs

Posted: Sat Feb 21, 2004 3:10 pm   Post subject: (No subject)

i kind of understand, but the thing is i don't know trig....
so maybe you can give me the quick and dirty lesson on trigonometry, if not, can give me a nice site to learn from, cuz i am confus
Tony

Posted: Sat Feb 21, 2004 10:24 pm   Post subject: (No subject)

get your hands on a grade 10 math textbook and read the chapter.
Tony's programming blog. DWITE - a programming contest.
naoki

Posted: Mon Feb 23, 2004 4:39 pm   Post subject: (No subject)

Hmm, try something like About.com and see what they can offer

Basically the idea behind trig is finding a position on a circle. As you know, you can use the radius of the circle and draw a right angled triangle based on it. The height of the triangle is the sin portion and the base length is the cos.

By determining the angle of the applied force of the stick, you can calculate by how much should the puck move in increments
@DRI@N

Posted: Mon May 24, 2004 7:49 pm   Post subject: (No subject)

You could try and make a function to calculate slope...but the problem is it will give you a real number
guruguru

Posted: Mon May 24, 2004 7:59 pm   Post subject: (No subject)

I'll try here.

Lets say the horizontal distance between the puck and net is 15. And the vertical distance is 10.
 code: /   o          /      t |      /            | adjacent = 10  /                | ( ----------------|      opposite = 15

To find the angle between the puck and the net, use a trig funtion called tan(). To much to explain how it works, but you can 'give' it the adjacent and opposite side and it will return the angle from the puck to the net.

tan^-1 (15/10) = 56 degrees

Ah sorry I got to go. I'll be back in 45 mins to complete this lesson . Maybe someone else can tell you how to implement it.
guruguru

Posted: Mon May 24, 2004 8:43 pm   Post subject: (No subject)

Ok to continue. Lets say you want the total movement value to be 5. Think of 56 degrees as the ration between the x and y velocity values. (56/60). So to find the x velocity:

56 = x
90 TOTAL_MOVEMENT

x = 56 * TOTAL_MOVEMENT / 90
x = 3.1

So for this, the x velocity will be 3.1 pixels / cycle.

Using the same principle, the y value would be:

y = (90-56) * TOTAL_MOVEMENT / 90
y = 1.9

The y velcoity is 1.9 pixels / cycle.

To tie everything together... lets say the horizontal distance is 15. The vertical is 10.

 code: const TOTAL_MOVEMENT := 5 const RADIUS := 5 var puckX, puckY : int var xVelocity, yVelocity : real var angle : real var horDistance : int var verDistance : int var netX, netY := 50 puckX := 200 puckY := 150 horDistance := puckX - netX verDistance := puckY - netY if verDistance = 0 then       % Test for divide by zero     angle := 0 else     angle := arctand (horDistance/verDistance) end if xVelocity := angle * TOTAL_MOVEMENT / 90 yVelocity := (90 - angle) * TOTAL_MOVEMENT / 90 loop           puckX -= round (xVelocity)      puckY -= round (yVelocity)      cls      Draw.Oval (netX, netY, RADIUS, RADIUS, blue)      Draw.FillOval (puckX, puckY, RADIUS, RADIUS, black)      delay(100) end loop

Thats the basics. And you can easily port this code so if the puck is below the net... or going in opposite directions...

Haha me so stupid ! Arctand duh...

EDIT: Fixed code so it actually works !

EDIT: Wow... I gotta fix this code better.
Sponsor
Sponsor

 Display posts from previous: All Posts1 Day7 Days2 Weeks1 Month3 Months6 Months1 Year Oldest FirstNewest First

Page 1 of 1  [ 8 Posts ]
 Jump to:  Select a forum  CompSci.ca ------------ - Network News - General Discussion     General Forums   -----------------   - Hello World   - Featured Poll   - Contests     Contest Forums   -----------------   - DWITE   - [FP] Contest 2006/2008   - [FP] 2005/2006 Archive   - [FP] 2004/2005 Archive   - Off Topic     Lounges   ---------   - User Lounge   - VIP Lounge     Programming -------------- - General Programming     General Programming Forums   --------------------------------   - Functional Programming   - Logical Programming   - C     C   --   - C Help   - C Tutorials   - C Submissions   - C++     C++   ----   - C++ Help   - C++ Tutorials   - C++ Submissions   - Java     Java   -----   - Java Help   - Java Tutorials   - Java Submissions   - Ruby     Ruby   -----   - Ruby Help   - Ruby Tutorials   - Ruby Submissions   - Turing     Turing   --------   - Turing Help   - Turing Tutorials   - Turing Submissions   - PHP     PHP   ----   - PHP Help   - PHP Tutorials   - PHP Submissions   - Python     Python   --------   - Python Help   - Python Tutorials   - Python Submissions   - Visual Basic and Other Basics     VB   ---   - Visual Basic Help   - Visual Basic Tutorials   - Visual Basic Submissions     Education ----------- - Student Life   Graphics and Design ----------------------- - Web Design     Web Design Forums   ---------------------   - (X)HTML Help   - (X)HTML Tutorials   - Flash MX Help   - Flash MX Tutorials   - Graphics     Graphics Forums   ------------------   - Photoshop Tutorials   - The Showroom   - 2D Graphics   - 3D Graphics     Teams ------ - dTeam Public

 Style: Appalachia blueSilver eMJay subAppalachia subBlue subCanvas subEmjay subGrey subSilver subVereor Search: