Creating a 3D Interactive Story Prof. Susan Rodger Duke University Feb. 24, 2007 Now Create an Alice World • Start Alice • Select “File”, “New World” • Click on Snow picture • Click on “Open” Find SnowPeople objects • Click on “add objects” • Scroll over to “people” folder and click on it • Scroll over to Snowman and snowWoman Add Snowman to World • Click on snowman and you will see: • Click on “Add instance” • Snowman appears in world Add SnowWoman to world and adjust • Click on SnowWoman and add her to the world • Click on arrow key • Click and hold on snowman to move him left and back • Click and hold on snowWoman and move her to the right • Scene should look like Save World • Save world • Type in a name such as: snowPeople and then “save” • Alice will remind you to save your work every 15 minutes Now Ready to program! • Click on done • Should now see myFirstMethod Write code to move the snowman • This is the object tree, a list of all your objects in the world • Now click on the word “snowman” to highlight it • You should see methods below it (things the snowman can do) such as move, turn, roll, … • Scroll down til you see “turn to face” Write code to move the snowman (2) • Click left mouse button on “snowman turn to face” AND HOLD IT DOWN, then Drag it over and release the mouse button • Click on “snowWoman” • “the entire snowWoman” Write code to move the snowman (3) • Code appears • Click on Play Have the snowman talk • Drag over “Snowman Say” • Select “other” and type a greeting such as “Hello there! • Code is now: • Play again Now SnowWoman will act • Click on snowWoman to see her methods • Drag over code and drop below other code • Play! Now write a NEW snowman method • Click on snowman • Should see snowman’s methods • Click on “create new method” and enter name “getAttention” • Empty method is created, ready for you to enter code Write GetAttention Method • Add the following code to this method • Note you now have two methods: • Click on myFirstMethod to get back to it Add getAttention method to program – to myFirstMethod • Click on play Repetition • Sometimes you want to repeat commands • Let’s repeat “getAttention” three times • Click on “loop” and drag and drop at the end of our code, below getAttention – Select “other” and type 3 – Click on left tab of “getAttention and move it inside the loop – Now Play! Create snowman method - popHat • Click on snowman in objectTree • select “create new method” and name it popHat Want the “topHat” part of snowman • Click on + by snowman • Click on + by head • click on tophat to highlight it Now we will move just the tophat • Drag over the “move” command twice to make the tophat move up and then down the same amount Make an Event • We want the hat to move up and down whenever we press the “H” key • Create a new event and select “when a key is typed” • Click on “any key” and select the “letters” then “H” • Click on “nothing” and select “snowman” “popHat” Making an Event happen • Play your world • Whenever you want the hat to pop up and down, just press the key “H” Add more code to myFirstMethod • At the end of your code in myFirstMethod – Add code to have the snowWoman turn toward the snowman, say “I said hello” and turn back • Remember to click on the word snowWoman in the objectTree to get snowWoman methods Here is one possible way Turn SnowWoman’s Head red • In addition to methods, each object also has properties you can drag and change • Select “SnowWoman’s Head in the object tree • Select the Properties tab Turn SnowWoman’s Head Red (2) • Click on color, hold and drag to right before snowWoman says “I said hello” • Select color “red” and release, results in: At end, turn head back to “no color” • Here are the two color statements added to the code (note: “no color shows as white”) • Play your world Write a snowman Flip method • Make sure you select “snowman” in the objectTree • Create the method named “flip” • Have the snowman do the following – Move up 1 meter – Roll left 2 revolutions – Move down 1 meter • Add code at the end of myFirstMethod – Snowman says “Watch what I can do” – SnowWoman turns to look at him – Call the snowman flip method • Play your world Write a snowWoman flip method • Make sure you select “snowWoman” in the objectTree, then create the method “flip” • Have the snowWoman do the following – Move up 1 meter – Drag up a DoTogether from the bottom Write a snowWoman flip method (2) • Inside the DoTogether you can put commands that will happen at the same time • Inside this DoTogether have the snowWoman do the following: – Turn forward 1 revolution – Resize by half • Below drop in another DoTogether with: – Turn forward 1 revolution – Resize by 2 (back to the right size) • Add one more command to move snowWoman down 1 meter Now let’s call the SnowWoman flip method • Add code at the bottom of myFirstWorld – SnowWoman should say “Watch what I can do” – Call the snowWoman flip method • Play your world Here is what flip should look like Add two new events • Add an event so the snowman flips when M is pressed • Add an event so the snowWoman flips when W is pressed • Play the world, press M and W anytime Add more objects to the world • First let’s add two more objects • Click on “Add objects”, find the “nature folder” and add any tree to the world • Click on it and push it far back • Find the “vehicles” folder and find the scooter, add it to the world (you may have to look in the Web gallery to find the scooter) Adjust the scooter • Click on the third control and try turning the scooter around to face this direction • Then click on the first control (the arrow) and push the scooter back between the tree and the snowWoman Write the SnowWoman method driveAway • First select the snowWoman in the objectTree and create a new method named “driveAway” • Now let’s add code to this method • First have the snowWoman turn to face the backRightFloor (or may be called RightFloor) part of the scooter Move SnowWoman to the scooter • It will be handy to test this method as we build it, look at the event “When the world starts” • Click on the white arrow and select “snowWoman.driveAway” • Now when the world starts, only this method will play – Click Play and see Write snowWoman driveAway (2) • We want the snowWoman to move to the scooter.backRightFloor, but we don’t know how far it is • Have the snowWoman move forward 1 meter and Play it • It’s not quite far enough Write snowWoman driveAway (3) • We can use a snowWoman function to drop in the distance to the scooter.backRightFloor • Click on SnowWoman functions • Drag “distance to” and drop on “1 meter” when it turns green, then select “scooter.backRightFloor” Write snowWoman driveAway (4) • Play the world • It is hard to tell, but she goes right into the scooter. • We’d like her to stop in front of the scooter. • Click on the last arrow and select “math”, then “minus” then “0.5” • Now she stops 0.5 meters in front of it Write snowWoman driveAway (5) • Next, have the snowWoman doTogether – move up 0.2 meters – Move forward 0.5 meters • We’d like the scooter to move and have the snowWoman move with it • We can set the vehicle property of the snowWoman to be the scooter Write snowWoman driveAway (6) • Click on snowWoman’s properties • Drag over “vehicle” and select “scooter” Write snowWoman driveAway (7) • Almost done, add a few more commands • In a DoTogether – The snowWoman says “Bye” – The scooter moves forward 10 meters – The snowman’s head turns ¼ turn to the left (make sure you select snowman in the objectTree) • One more command after the DoTogether – Snowman’s head turns back ¼ turn to the right snowWoman driveAway – final code Call snowWoman driveAway • Back in myFirstMethod, add a call at the end of your code to call the method snowWoman.driveAway • Fix the first event so that when the world starts, world.myFirstMethod is called • Play Write a snowman melt method • Add a snowman method named “melt” • The code should repeat 12 times – Move the snowman down a little (0.1 meters) – Wait 0.5 seconds (drag the “wait” tile up from the bottom) • At the end of myFirstMethod, call melt • Play the world Almost Done – add title • Click on “add objects” and go to the right end of the local gallery and find 3D text • Click on it and add a short title such as “Life as SnowPeople” • You’ll have to use the control keys to move it up, back, and turn it to face the right way (use first three controls) Title only in the beginning • Notice the title is an object in the objectTree - Click on it • We would like it to disappear after the snowman says “hello there” • Drag over the “isShowing” property and set it to false Add “The End” • Add another 3D text that says “The End” and position it over the title • Click on THE END in the objectTree • In properties, click on “true” of “isShowing” and select “false” – The End will disappear Make “The End” Reappear • Make “The End” visible before the snowman melts You are now done! • Play your world! • You can download Alice for free at www.alice.org • My web page www.cs.duke.edu/~rodger