Upload
garey-mcdowell
View
215
Download
1
Embed Size (px)
Citation preview
Art 315 Lecture 6Dr. J. Parker
Variables
• Variables are one of a few key concepts in programming that must be understood.
• Many engineering/cs students do not have a good understanding of them until later in their studies.
An example of a variable is score, as we discussed last time.
The Abstract ExplanationA variable is a name (IE a symbol) that represents some value, usually a numeric value.
The name is often indicative of the nature of the value – so the variable score represents a value that is also called a “score” in English. This is a coincidence; the game score could just as easily be kept in a variable called “fred”.
The Engineering Explanation
The variable is another name for the address in memory where the value is kept.
The programming language takes the namethat it sees and replaces it with a memory address.
So score = 12 becomes memory[10020] = 12Where 10020 is the address of score.
The Common Sense Explanation
A variable is a place to put something; it’s the name of that place.
What can we do with variables?
We can save things for later.
We can add to them, accumulate values. EG - How many enemies have we shot? - How much fuel do we have left?- Where is my ‘ball’ object?
We can test it against sentinal/target values.- Am I out of fuel (is fuel = 0)?- Am I near to a water hole (distance < 20)?
Variables in GameMaker
We can save things for later.
We can add to them, accumulate values. EG - How many enemies have we shot? - How much fuel do we have left?- Where is my ‘ball’ object?
We can test it against sentinel/target values.- Am I out of fuel (is fuel = 0)?- Am I near to a water hole (distance < 20)?
Variable Fuel
Let’s make a variable named Fuel.
The ball starts out with some fuel, let’s say 1000 units of it.
Every turn it uses 1 unit.
The ball bounces off of walls.
We should display the value of fuel.
Variable Fuel
Creating the variable: When an obj_ball is created, set the value of a variable names Fuel to 1000.
Event: create ---- Action: Set variable Fuel to 1000
Variable Fuel
This activity does three important things for the variable:
Declares it: Establishes the name as having a meaning – it is a variable, and holds a value.
Allocates it: Associates the variable with space; gives it some real estate.
Initializes it: Gives it a value to begin with (else what is it?)
Variable Fuel
Now subtract one for each turn that takes place.
Turns are called steps in Gamemaker, and there is an event for a step.
Turns
A step is one time increment. I t is 1/30 of a second, all steps are the same length, and all motions are broken up into how far an object moves in one step.
This is because real time is continuous, but computers have to simulate the passage of time in small increments, thus allowing computation to be done in each increment.
Back to Variables …
Whether the variable is changing or not is a matter of faith – unless it can be used in some real way.
The most obvious way to show that a variable is doing what it should is to display it.
Also called print, show, draw.
In Game Maker it is called drawing because it uses game graphics.
Draw VariableProblem: when a variable is drawn, it must be done in
a draw event.
Normally the sprite for an object is drawn each step, in the correct position. The Draw event means ‘when drawing takes place’, and using it allows you to do things each time the object is drawn.
Problem: If you use the Draw event, then automatic drawing does not happen – your sprite will not appear automatically.
Draw Variable
You have a choice between doing your own drawing and allowing Game Maker to do it.
Method 1: use a Draw event, and draw the variable AND the sprite.
Draw Variable
Draw
Draw Variable
Draw
Draw Variable
Draw Variable
Note that the value is drawn at a positionrelative to that of the ball (what we asked for),and so moves as the ball does.
We can easily draw the number at a fixed position.(Do it)
Variables
The variable ‘fuel’ is a user defined variable. Theytend to be associated with objects.
Each object also has pre-defined (by the system) variables that we can use.
Example: each object has a position, expressed as an x (horizontal) and a y (vertical) position.
Variables
The horizontal position of the ball is obj_ball.xThe vertical position of the ball is obj_ball.y
And a similar scheme can be used for all objects.
Other variables include: xprevious, xstart, vspeed,fps, direction, friction, gravity, hspeed, room_width, room_height, …
VariablesVariables can be altered.
For example, whenever the ball hits the wall, subtract 10 from the Y value (which should make the ball move UP).
That is, obj_ball.y = obj_ball.y - 10
VariablesBall moves UP on each bounce.
VariablesAt 30 steps per second, a speed of 1 moves 30 pixels/second.
Angles: specified in degrees. 0 degrees is right; 180 is left90 degrees is up, 270 is down
0
90
180
270
Random NumbersA random number is one that has an unpredictable value. In GameMaker they are created by using a function (more on those later) called random.
The value of random(100) is a number between 0 and 99 (there are 100 values), possibly different each time, and where the exact value won’t be known in advance.
To create the roll of a die, we would use random(6)+1. random(6) is 0..5, so random(6)+1 is 1..6
Random NumbersRandom numbers are crucial in a game and in simulations generally.
They are how a computer program simulates intelligence, in many cases.
A real person does not do the same thing all of the time – they are unpredictable. Since we don’t know the basis that humans use for making decisions, we use random choices, which have the appearance of intelligence. Or of natural activities that we don’t understand.
Random NumbersExample: Multiple balls bouncing about in a
box.
This would seem to be a complex situation, and hard to keep track of everything. But all we need to do is make some basic simple rules, use some random behaviour, and create more than one ball.
1.Ball hits wall: bounce in a random direction.2.Ball hits ball: ditto.3.Ball is created with a random direction.
Random Numbers
Random NumbersExample: Atom.
Electrons don’t actually orbit the nucleus, they occur in all positions about it with certain probabilities..
1.Nucleus is in the centre of the room.2.Electrons appear in random positions each
step.
Random Numbers
Random Numbers
This does not really look very realistic, but it could …
We need to avoid the nucleus, first of all.
So we need to test to see if the random position we’ve selected is near the nucleus, and pick another if so.
This is the second main new aspect of programming: flow of control.
Control
What we need to do is to be able to say:
If the value of variable fuel is 0 then stop all motion.
Or
If the random (x,y) position is less than 100 units (distance) from the nucleus then pick a new (x,y)
Control
This is the subject of the next class, and is a key subject in programming.