# Simplest way to code bullet trajectory? • ### Question

• My 10 year old just recently picked up Small Basic again. He likes shooter games, so he asked about writing a simple bullet trajectory. My physics/math is rusty and he hasn't covered trig math yet (sin/cos), so I was curious if there is a super simple way to do this, so a kid can understand, with minimum variables & math. The program below is a quick attempt at it, but it's obviously not right. Any suggestions? Thanks! :)

```'Initialize graphics window
GraphicsWindow.Hide()
gw = 800
gh = 600
GraphicsWindow.CanResize = "False"
GraphicsWindow.Top = (Desktop.Height-gh)/2
GraphicsWindow.Left = (Desktop.Width-gw)/2
GraphicsWindow.Title = "Trajectory"
GraphicsWindow.Width = gw
GraphicsWindow.Height = gh
GraphicsWindow.BackgroundColor = "LightBlue"

'Initialize bullet
xvel = 1
yvel = -1
grav = 1
x = 0
y = gh/2

'Draw bullet in flight
GraphicsWindow.Show()
While (x < gw And y < gh)
x = x+xvel
y = y+yvel+grav
Shapes.Move(bullet,x,y)
Program.Delay(10)
EndWhile
Program.End()```

Sunday, December 19, 2010 7:14 PM

• Looks very close, the gravity acts to increase the velocity downwards (positive using the SmallBasic screen coordinates).  Gravity is just an acceleration downwards, where acceleration is just the rate of change of velocity - if the acceleration is constant as gravity is then the increase in y velocity is constant for each timestep.  If there are no other forces on the bullet, then the X velocity remains constant - a reasonable approximation if there is little air resistance.

Try:

yvel = yvel+grav

x = x+xvel

y = y+yvel

You may need to scale things a bit for it to look good, ie change the initial values for xvel, yvel and grav, such as grav = 0.005

I don't have SmallBasic to test at present, but your code should work with this mod.

• Marked as answer by Tuesday, December 21, 2010 6:12 AM
Monday, December 20, 2010 12:07 AM

### All replies

• Looks very close, the gravity acts to increase the velocity downwards (positive using the SmallBasic screen coordinates).  Gravity is just an acceleration downwards, where acceleration is just the rate of change of velocity - if the acceleration is constant as gravity is then the increase in y velocity is constant for each timestep.  If there are no other forces on the bullet, then the X velocity remains constant - a reasonable approximation if there is little air resistance.

Try:

yvel = yvel+grav

x = x+xvel

y = y+yvel

You may need to scale things a bit for it to look good, ie change the initial values for xvel, yvel and grav, such as grav = 0.005

I don't have SmallBasic to test at present, but your code should work with this mod.

• Marked as answer by Tuesday, December 21, 2010 6:12 AM
Monday, December 20, 2010 12:07 AM
• Duh, but of course! :)

Went with grav = 0.01 for the above, works fine. Now he can add more to it, make Angry Birds :)

Thanks!

Tuesday, December 21, 2010 5:52 AM