CS320n - PowerPoint PPT Presentation

About This Presentation
Title:

CS320n

Description:

Making the object to skate around a parameter now removes the tie to the penguin ... To have the skater skate around another object, pass whichObject as an argument ... – PowerPoint PPT presentation

Number of Views:15
Avg rating:3.0/5.0
Slides: 23
Provided by: sco1
Category:
Tags: cs320n | skate

less

Transcript and Presenter's Notes

Title: CS320n


1
CS320n Visual Programming
  • Class-level Methods and Inheritance Part 2
  • Mike Scott
  • (Slides 4-3-2)

Thanks to Wanda Dann, Steve Cooper, and Susan
Rodger for slides.
2
What We Will Do Today
  • Work on more class level methods
  • Learn about built in functions
  • Learn to use expressions
  • Review the asSeenBy option

3
Guidelines for Class-Level Methods
  • Should a method be a class-level method or a
    world-level method?
  • For class level methods
  • avoid hard coded references to other objects
  • avoid calls to world level methods
  • Play a sound only if has been imported and saved
    as part of the new class. (sounds can be imported
    to world or individual objects)
  • If these guidelines are not followed and an
    instance of a class is added to another world, an
    error message is generated

4
Bad Example 1
A class level method should not call world-level
methods.
5
Bad Example 2
6
But I want to skate around things
  • Is it reasonable to want a class-level method for
    the advanced skater where she skates around
    things?
  • In this particular case, a penguin?

7
Solution
  • A solution is to write a class-level method with
    an object parameter that allows you to pass in
    the specific object.

cleverSkater.skateAround Parameter
whichObject Do in order Do together
cleverSkater turn to face whichObject
cleverSkater lift right leg cleverSkater
move to whichObject cleverSkater turn around
whichObject
8
Parameterized Version of skateAround
  • Making the object to skate around a parameter now
    removes the tie to the penguin in this world

calling skateAround
9
Translating design into code
  • Most of the skateAround storyboard design is
    straightforward and easy to code.
  • The last two steps, however, require some
    thought
  • advancedSkater move to target --
  • What distance should the cleverSkater
    move? advancedSkater turn around target --
  • how do we tell cleverSkater to turn (in a
    circle)
  • around another object?

10
The distance to move
  • We can work out how far to move the skater based
    on initial position of objects and a little
    experimentation
  • Pick a distance, play the movie, more or less,
    refine until it looks good
  • Is this a very general solution though?
  • only works for one initial set up
  • look to make it work for many set ups

11
Built-in Functions. (a.k.a. questions)
  • The built-in function, distance to can be used to
    determine the distance the skater must move.

12
Calling the Function
  • drag and drop the function advancedSkater
    distance to from the function menu to the
    distance portion of the move method and pick
    expressions -gt target
  • call to move looks like this now

13
Problem?
  • What will happen when the skateAround method is
    called?

14
Too Much
  • Skater intersects penguin
  • told to move forward the distance to the target
  • moves skater all the way so centers of objects
    coincide
  • distance measured center to center

15
Expressions
  • We dont want the skater to move all the way to
    the target
  • to avoid collision use math operator and create
    an expression that moves to within 2 meters
  • Math operators is Alice , -, , /
  • Example

16
Creating an Expression
1
3
2
4
17
More on Expressions
  • Creating expressions with the pop up menus can be
    a pain
  • In this case, text based programming languages
    may be easier to use

18
Result of Expression
Stops before running over penguin
And skates around
What if alreadyless than 2 metersfrom an object?
19
asSeenBy
  • To have the skater skate around another object,
    pass whichObject as an argument to the asSeenBy
    parameter in a turn instruction.
  • yes, passing a parameter to another method as a
    parameter
  • For more details on asSeenBy,
    review Tips Techniques 2.

20
More on AsSeenBy
  • Use invisible objects or dummy objects (isShowing
    property set to false) to have objects fly around
    in circles
  • Example Have gunfighters circle each other

21
Circling Gunfighters
22
Testing
  • Each time you create a new class, test it
  • Add an instance of the new class to a new world.
  • Write a short testing program to test each new
    method.
  • Testing increases your confidence in the
    ability to reuse your code in other worlds.
Write a Comment
User Comments (0)
About PowerShow.com