csci 053 - george washington universityrhyspj/fall08cs53/week2.pdf · left-right (lr): world’s...
TRANSCRIPT
CSCI 053
Introduction to Software Development
Rhys Price Jones
Week 2Methods
based on Joel Adams
2
Week 2 Objectives
Build world-level methods to help organize a story
into scenes and shots
Build class-level methods to elicit desirable
behaviors from objects
Reuse a class-level method in multiple worlds
Use dummies to reposition the camera for different
shots within a scene
Understand how an object’s position, orientation,
and point of view are determined
3
Methods
Method: behavior-producing message
Objects have predefined methods for basic tasks
Methods may also be created by Alice
developers
4
Object Methods - Example
Add a pterodactyl to the world
local-gallery > animals > pterodactyl
click to place
then move to desired position
use methods to set size, position, etc.
Look at the available methods
This pterodactyl cannot flap its wings
Missing a crucial object method!
Object method: defines behavior for a single
object
Illustration: we would like to send flapWings() to
a pterodactyl
Telling pterodactyl to Flap Wings
Select pterodactyl from object tree and
click methods tab
Click create new method and enter
flapWings
Send roll() messages to each of the
dragon’s wings
Invoke flapWings() from my_first_method()
7
Book does dragon -- not pterodactyl
8
Adding comments
Two reasons for building methods
To provide an object with additional
behaviors: Object methods
To organize your story into more
manageable pieces: World methods
10
World Methods for Scenes and Shots
Scene: segment of a story
Shot: part of a scene from a given camera position
User stories can be divided into scenes and shots
A convenient technique for completing a project
Divide and conquer approach to building user
stories
Break a big problem into smaller problems
Solve each of the smaller problems
11
Methods for Scenes
Scenario: develop a user story with three scenes
Convention for naming methods
Name should be a verb or verb phrase
Name should describe what the method does
Creating the first new method
Select the world object
Click the create new method in the details area
Enter playScene1 in the New Method dialog box
Check new method by sending say() to ground
First test fails because my_first_method() is empty
12
Methods for Scenes (continued)
13
Methods for Scenes (continued)
14
Methods for Scenes (continued)
How to fix the first bug
Click on the tab for my_first_method
Drag a doInOrder control to the top of the pane
Click on world in the object tree
Drag playScene1() into the doInOrder statement
Extend technique used to build playScene1()
Add two methods: playScene2(), playScene3()
New method sends a say() message to the ground
New Methods are called in my_first_method()
15
Methods for Scenes (continued)
16
Methods for Scenes (continued)
17
Methods for Shots
Scenes can be divided into shots
Shots can be further divided into pieces
Reasons for using scenes, shots, and pieces
To create a program that reflects the user story
To create a program that has a modular design
Example of a scheme using scenes and shots
Level 1: my_first_method()
Level 2: three methods for three scenes
Level 3: four methods for four shots in Scene 2
18
Methods for Shots (continued)
Implementing the scheme
Test each shot in Scene 2 using a say() method
Call the four shot methods from playScene2()
Call three scene methods from my_first_method()
Structure diagram reflects organization of user story
All objects added to world become part of world
Scene and shot messages are stored in the world
World method: affects behavior of multiple objects
19
Methods for Shots (continued)
20
Methods for Shots (continued)
Open Alice
open world week2/WorldMethods
add a scene 4
where the ground thinks this is all
pretty dull!
Two reasons for building methods
To provide an object with additional
behaviors: Object methods
To organize your story into more
manageable pieces: World methods
Back to Object Methods
23
Object Methods Example 2
Telling a Toy Soldier to March
Four actions correspond to four steps for march()
•1 marchLeft;
•2 marchRight;
•3 marchRight;
•4 marchLeft.
Better names
might be
halfLeftStep
halfRightStep
Define
marchLeft() and marchRight() methods
These methods produce reverse behaviors
Incorporate new methods into march()
Call march()four times from
my_first_method()
25
The marchLeft() method
26
The march() method
27
Alice Tip: Reusing Your Work
Copy and paste techniques speed up development
How to use make copy to duplicate statements
Right-click bar in editing area containing method
Select make copy
Example using make copy
Refer to my_first_method() in Toy Soldier
program
Copy three march() statements from first
march()
28
Alice Tip: Reusing Your Work (continued)
29
Using the Clipboard
Alice clipboard
Used to copy and paste all statement types
Located in the events area
Using Alice clipboard in Toy Soldier program
Drag doInOrder in my_first_method() to clipboard
Create scene1() method
Drag statement in clipboard to editing area
Drop statement in the scene1() method
Only one statement may be placed in the clipboard
30
Using the Clipboard (continued)
31
Using the Clipboard (continued)
Reusing an Object
in a Different World
Alice lets you reuse objects in different
worlds
Reusing operation involves save and
import tasks
Save the pterodactyl object
Rename the pterodactyl object flappingPterodactyl
Right-click flappingPterodactyl, select save
object…
Navigate to appropriate storage location
Click the Save button
saves as FlappingPterodactyl.a2c
note capitalization
How to import an object
into a new world
Open new world and choose Import from
File menu
Navigate to appropriate location and
select the correct .a2c file
35
Book’s dragon example
36
Book’s dragon example
Quizlet
1. True or False: A method name should usually be a verb or verb phrase.
Answer:
2. A method that affects the behavior of multiple objects (like a scene) should be
defined as a(n) ____________________ method.
Answer:
3. A(n) ____________________ method is used to define a complex behavior for a
single object.
Answer:
4. True or False: Comments are ignored by Alice.
Answer:
Quizlet Answers
1. True or False: A method name should usually be a verb or verb phrase.
Answer: True
2. A method that affects the behavior of multiple objects (like a scene) should be
defined as a(n) ____________________ method.
Answer: world
3. A(n) ____________________ method is used to define a complex behavior for a
single object.
Answer: object
4. True or False: Comments are ignored by Alice.
Answer: True
39
Alice Tip: Using Dummies
Review
Scenes comprise shots
Shots are filmed with the camera in a given
position
Alice places a camera object in every
world
Two techniques for shifting
Use set of motion-related messages, such
as move()
Use an invisible marker called a dummy
Dummy: invisible marker with a point
of view
Dummies are used to change a
camera’s position
Description of a scene
that will use dummies
Wizard intervenes to prevent trolls from
taking a castle
Camera changes position for each of three
shots
Story conforms to structure in Figure 2-11
(less Shot 4)
Setting up the first shot of Scene
Add castle, wizard, and trolls to
build the scene
Click more controls button and then
drop a dummy
Go to object tree and rename dummy
scene2Shot1
43
Dummies (continued)
44
Dummies (continued)
Second shot of Scene 2
Using camera controls, zoom in on the
wizard
Press the drop dummy at camera
button
Rename the second dummy,
scene2Shot2
Third shot of Scene 3
First dummy will be reused for this shot
47
Dummies (continued)
48
Using setPointOfView()
to Control the Camera
• obj.setPointOfView(obj2)
Changes the position of obj to obj2
Example: camera.setPointOfView(aDummy)
Code for
the first shot of Scene 2
Drag a doInOrder statement to the editing area
Click on camera object in the object tree
Drag setPointOfView()to the editing area
Select scene2Shot1 dummy as target and 0
duration
Add say() statements for each of the trolls
Add a comment to explain the purpose of the method
50
Scene2Shot1
51
Scene2Shot1
Code for
the second shot of Scene 2
Set the opacity of the wizard to 0 in properties
pane
Drag wizard’s opacity property to editing area
Set the opacity to 1 in the set() method
Set the camera’s point of view to scene2Shot2
Add a say() statement for the wizard
53
Scene2Shot2
Code for
the third shot of Scene 2
Reset camera’s point of view to scene2Shot1
Point the three trolls at the wizard
Set message’s onlyAffectYaw
attribute to true
55
Scene2Shot3
56
Thinking in 3D
Learn about 3D movement to work in
Alice
Object’s position
Determines object’s location in the 3D
world
Object’s orientation
Determines the way an object is facing
57
An Object’s Position
Three axes are used to define the world space
LEFT-RIGHT (LR): world’s width dimension
UP-DOWN (UD): world’s height dimension
FORWARD-BACKWARD (FB): world’s depth
Three values specify object’s position in the world
– lr: point along the LR axis
– ud: point along the UD axis
– fb: point along the FB axis
Change an object’s position using move()
Directional values given with respect to object’s axes
58
An Object’s Position (continued)
59
An Object’s Position (continued)
60
An Object's Orientation
Combines yaw, pitch, and roll (provides direction)
Yaw: amount of object’s rotation about the UD-axis
Example: turn(RIGHT, 0.25)
Pitch: amount of object’s rotation about the LR-axis
Example: turn(FORWARD, 0.25)
Roll: amount of object’s rotation about the FB-axis
Example: roll(LEFT, 0.25)
61
An Object's Orientation (continued)
(pictures are better in the book!)
62
An Object's Orientation (continued)
63
An Object's Orientation (continued)
64
Point of View
Combines object’s position and orientation
Six values in point of view: [(lr, ud, fb),(yaw, pitch,
roll)]
Six values correspond to six degrees of freedom
Methods used to change six values
–move(), turn(), and roll()
Method used to change point of view
–setPointOfView()
65
Summary
Divide and conquer approach: decomposing a
user story into scenes and shots
Define methods to support modular design and
provide advanced operations
World methods: messages sent to the world
Object methods: define a behavior for a single
object
Comments: remarks that explain program
statements
66
Summary (continued)
Alice clipboard: stores a copy of any statement
Dummy: invisible marker with position and
orientation (a point of view)
Object’s position: location specified using three
coordinate axes
Object’s orientation comprises yaw, pitch, and
roll
An Alice object has six degrees of freedom
Quizlet
1. From the editing area, you can drag any statement onto the
____________________ and Alice will store a copy of it there for you.
Answer:
2. A(n) ____________________ is an invisible marker in your world that has a
position and an orientation.
Answer:
3. An object’s orientation is its combined ____________________, pitch, and
roll.
Answer:
4. True or False: Alice objects have six degrees of freedom.
Answer:
Quizlet Answers
1. From the editing area, you can drag any statement onto the
____________________ and Alice will store a copy of it there for you.
Answer: clipboard
2. A(n) ____________________ is an invisible marker in your world that has a
position and an orientation.
Answer: dummy
3. An object’s orientation is its combined ____________________, pitch, and
roll.
Answer: yaw
4. True or False: Alice objects have six degrees of freedom.
Answer: True
Discussion
1. How does decomposing a user story into scenes and shots help you
organize the components of an Alice program?
2. What is the difference between a world method and an object
method?
3. What is the value of adding comments to a program?
4. How does the use of dummy markers simplify the process of
changing the camera object's point of view?
5. What is meant by the assertion that an Alice object has six degrees
of freedom?