StarLogoTNG 101
Treasure Hunt Game Unit
Lesson 9: Variables
Today’s Agenda
Mini-lesson on variables and new blocks
Implement new game features
• Whenever a moving enemy agent collides with a hazard,
program the enemy to “hatch” a half size version of itself and
have the child enemy head in a different direction from the
parent. The hazard dies.
• Whenever the moving enemy collides with a treasure, if the
moving enemy is smaller than 1, it increases its size back to 1.
The treasure dies.
• Whenever the moving enemy collides with itself, program the
enemy to “hatch” a new treasure.
• Challenge: How can you use “random” so that the enemy only
has a 50% chance of hatching a new treasure?
• What is a variable? (hint:
what are some examples from
math or science classes?)
• A variable in programming is
like a container that holds a
value that can change.
• The value can be a number,
a boolean (true or false), or
a string (characters like a
word or phrase).
• You’ve already used some variables such as
score, xcor, and color. What are some other
examples of already defined variables in
StarLogo TNG?
• Look in the Traits drawer. What type of
variables are pen down?, pen up? and alive?
How can you tell?
Agent monitor window
• If you click once on any agent
in Spaceland, you bring up its
monitor. Here you’ll see the
current values of its already
defined variables.
• You can even change the
values and immediately see
the effect on that particular
• You define (or create a container for) a
variable using the blocks in the Variables
• There are two kinds of variables: agent
and shared.
• If you define a shared variable, there is only
one variable container for the whole game.
• If you define an agent variable, every agent
of a certain breed gets its own variable
Shared vs. Agent
• Shared variable
• Agent Variable
Variables: Practice 1
Classify each of the following variables as agent
or shared:
1. Size
2. Xcor
3. Score
4. Breed
Variables: Practice 2
How would you define variables for each of
these purposes:
1. The number of treasures left in the game
2. The energy content of each bullet.
3. The number of “lives” that the player has
4. The number of bonus “speed boosts” that
can be triggered by the player
Setting the value of a variable
• Set variable
block found in
My Blocks
• Shared variable only: Slider
– can be adjusted by the
user in the Runtime window.
Setting the value of a variable
• Typically, you want to set the starting value of each
variable in the Setup block as a part of resetting the
game. For agent variables, you can set the starting value
as part of the Create-Do block or the Hatch-Do block.
• When the game is running, you’ll change the variable as
needed by using the set variable block with an expression
or constant.
Getting the value of a variable
• You want to “get” the value of
a variable as part of changing
its value (see previous set
variable example) or to
compare it to another number
as a way of making a decision.
• To get the variable, go to the
My Blocks palette and look
inside the drawer of the
canvas section where you
declared the variable.
Getting the value of a variable
• So, in our example
with the mana
variable, the player
collects “mana” and
then can use mana to
do special things like
let the player move
faster for a certain
period of time.
• Use the monitor block in the Setup and Run
drawer to show the value of shared variables.
Guided Programming
• Open the current version of your “treasure game
your initials.sltng”
• Save next version
• Define an agent number variable called “energy” in
the thrown projectile section of the canvas.
• When hatching the projectiles, set energy to 100.
• In the Run (forever) block, in the projectile’s
section, decrease the energy variable by 1. When
the energy gets down to zero, the projectile dies.
Guided Programming
• Note the addition of the
energy variable in the
agent monitor window of a
projectile agent.
Brainstorm uses for Variables
What other uses for variables can you think of
for your game? Here are some ideas:
• The number of treasures left in the game
• The energy content of each bullet.
• The number of “lives” that the player has
• The number of bonus “speed boosts” that can
be triggered by the player
• Timer to track the “life” of certain agents or
Programming Activity
• Implement a new game element that uses at least
one variable.
• Decide on the game element, consider which type of
variable is most appropriate, and then follow the
steps below.
• Three basic steps to using a variable:
1. Define the variable
2. Initialize the variable (setup, create, hatch)
3. Use the variable (change it, compare it, etc.)
Wrap Up
• Describe your new game feature that uses one or
more variables.
• What worked? What didn’t work?
• What challenges did you have?
• What was fun?
• What questions do you have?
• What new game ideas do you have?

similar documents