XNA Game-Themed CS1 Examples ( XGC1 )

Release 2.0 (XNA V3.1)

Topic: Topic.3.ModulesAndFunctions
Example: Ex_6.ParabolicFreeFall

Functions And Algorithms: Parabolic Free Fall



1. Obtain the example code

Download and unzip the zip file and you will see an ExampleProgram folder. Open the ExampleProgram folder, the EXE folder contains the compiled program and you can double click on the .sln file to work with the source code.

When the game starts, you'll see a screen that looks similar to this:

As you can see, there is a single soccer ball on the screen.  While you can alter the soccer ball's movement using the right thumbstick, you can clearly see that the soccer ball is following the path of a parabola across the screen, in a simple simulation of gravity's pull on a soccer ball that's been thrown upwards .  The message at the top of the screen has been updated, as well.

2. Moving The Ball Along a Parabolic Arc.

Since the source code to this program is nearly identical to the program uses in the previous tutorial, we will only examine the code that's new, or different. 

In order to know how to move the ball, we will need to track the velocity of the ball.  Velocity is defined as the speed and direction in which the ball is moving.  We will also define the initial velocity using named constants, as well as the amount to decrease the Y speed by at each update. 
In a nutshell, we will set the starting speed for the ball, and at each update, we will decrease the ball's speed in the Y direction (to simulate gravity's downward pull), then move the ball. Across numerous updates, the ball will follow a parabolic arc across the screen.


  1. Start from a blank starter project (1000.201, if you need it), and re-do the code from memory as much as possible.  On your first try, do what you can, and keep the above code open so that when you get stuck, you can quickly look up what you forgot (and that after you finish a line, so that you can compare your line to the 'correct' line).  On the next try, do the same thing, but try to use the finished code less.  Repeat this until you can type everything, without refering the tutorial's code.
  2. Initializing the Velocity In A Separate Function
    For this exercise, you should use the same project that was explained in the above tutorial.
    In the example code provided with this tutorial, the velocity of the ball was initialized in the InitializeWorld method, while the ball itself was initialized in the InitializeSoccer method.  For this exercise, you should take the code that initializes the ball's velocity, and put it into a new, separate function.  Make sure that you call that from InitializeSoccer.

Project home page : The Game-Themed Introductory Programming Project.
Kelvin Sung
Computing and Software Systems
University of Washington, Bothell
Michael Panitz
Business And Information Technology
Cascadia Community College

Microsoft Logo This work is supported in part by a grant from Microsoft Research under the Computer Gaming Curriculum in Computer Science RFP, Award Number 15871 and 16531.