Presentation is loading. Please wait.

Presentation is loading. Please wait.

Lesson 2: Reading a program. Remember: from yesterday We learned about… Precise language is needed to program Actors and Classes Methods – step by step.

Similar presentations


Presentation on theme: "Lesson 2: Reading a program. Remember: from yesterday We learned about… Precise language is needed to program Actors and Classes Methods – step by step."— Presentation transcript:

1 Lesson 2: Reading a program

2 Remember: from yesterday We learned about… Precise language is needed to program Actors and Classes Methods – step by step instructions If statements Adding sounds Variables

3 Let’s learn to read the program Open WombatWorld Open the code for WombatWorld

4 Understanding WombatWorld Import ??? – means I am going to use these classes Import command Class to import * Means important all classes found here!

5 Understanding WombatWorld Import ??? – means I am going to use these classes Notice the semi-colon! Almost all commands end in a semi-colon A few do not. This can be one of the most difficult things for new programmers.

6 Understanding WombatWorld Comments – do not affect the program or running of a program – They are for the programmer, not the computer Comments are either start with // and got until the end of the line Comments are everything between /* comment goes here **** cow goes moo */

7 Understanding WombatWorld Comments – do not affect the program or running of a program – They are for the programmer, not the computer Comments are either start with Comments are everything between

8 Understanding WombatWorld Defining a class public class WombatWorld extends World This says I am defining a public class called “WombatWord”. It is a sub-type of World, just like a human is a sub-type of animal. public – means anyone/class can see and use this private – means no one can see or use this World – is a class defined elsewhere in greenfoot. We imported it with import greenfoot.*;

9 Understanding WombatWorld Pretty colors in greenfoot mean something Words in red and colored are special words in Java. – Eg. import, public, class, extends, void – They cannot be used as names

10 Understanding WombatWorld Pretty colors in greenfoot mean something { and } (braces) are used to group code together in blocks. The colors match with braces

11 Understanding WombatWorld Everything in green is inside the class

12 Understanding WombatWorld Everything in yellow is inside the method or command Random leaves command

13 Review import – a class you want to use public class WombatWorld extends World – Defining a new public class that is a type of world { and } (braces) - blocks of code (colored) // and got until the end of the line /* more comments */ – Comments for the programmer not the computer

14 Objects Objects are particular instances of a class – Your pet dog, my pet cat, me, you Objects represent “real” concrete things. Because an object is “real” thing, you can actually change it and command it to things. New Objects must be created using new

15 Objects The “actors” or things in a Greenfoot game are objects, but each must be of a previously defined class. Let’s take a look.

16 Understanding WombatWorld.populate() Open WombatWorld Find the populate method public void populate( ) Who can see this method What this type Method returns Name of method arguments

17 Understanding WombatWorld.populate() Different example: (not from Wombat World) Find the definition of a word public Definition lookupDefinition( String Word ) Who can see this method What this type Method returns Name of method Arguments: What word to look up

18 Creating new objects To create a new object first create a variable to store the object in Then we request a new object or actor be created Set things about the object Then do something with the object

19 In populate() We create the Wombat We create the leaves We add them to the game

20 Let’s move forward How about we create a really big world? The world will be bigger than what we can see on screen – We will only see a small part of the map We will use code from ScrollWorld: – http://www.greenfoot.org/scenarios/5806

21 Let’s move forward With this we can make… – Overhead bomber games – Debugging – finding and fixing mistakes – Starting from one else’s project – Practicing what we know – Reading documentation

22 Let’s start by creating a world Open ScrollWorld Project We will create a big map We will then populate the world with different objects and tasks

23 ScrollWorld Open ScrollWorld Notice DemoWorld is a subtype of ScrollWorld Open the code for DemoWorld Let’s look and see

24 DemoWorld

25 Name of our WorldParent (or super type)

26 DemoWorld Screen Size in cells Width, Height Map Size in cells Width, Height

27 DemoWorld How many pixels in a cell

28 Big moving world Let’s make the world really tall, but just as wide as the screen. Change full width and full height values to 600 and 10000

29 Big moving world Let’s move the Actors around We don’t need to move the bug because he follows the camera try setting the Apple to 700, 9700 move the other Actors Let’s set the camera position and direction Let’s put the camera at the bottom (600, 9800) type “this” then hit CTRL+SPACE for a list of methods use setCameraLocation use setCameraDirection and set the direction to -90 (UP) NOTE: 0 is right, 180 is left, 90 is down

30 Big moving world Now let’s make the world move. Create a new method call act() It should look like this public void act() { } Inside it call moveCamera( 5 );

31 Big moving world Your program should look like this. Compile and run it.

32 Let’s make hitting rocks bad When a bug hits a rock, let’s end the game. Open Bug We will first add steering then crashing Remove the body of the act method public void act() { } Let’s add some simple movement

33 Steering Make and if statement and test Greenfoot.isKeyDown(“left”) We don’t want “move” the bug, we want to slide it left or right For right setLocation( getX()+ 3, getY() ); For left setLocation( getX()- 3, getY() ); Try it out you should be able to move left and right

34 If, Conditions, and Comparisons Remember how if statements need true or false (boolean) values We can compare values – The result of a comparison is true or false Are two values equal== Are two values different!= We also have greater than > and less than <

35 If, Conditions, and Comparisons How do we say is X greater than 5 X > 5OR5 < X How about is X equal to 7 X == 7 How is variable professor equal to nothing? professor == nullORnull == professor Professor is equal to something (not null) professor != nullOR null != professor

36 We can even combine values Is X greater than 5 but less than 10 X > 5 && X < 10 Both parts must be true Is it true for X = 3 Is it true for X = 7 Is it true for X = 5

37 We can even combine values Is X greater than 5 OR less than 10 X > 5 || X < 10 at least one part must be trye Is it true for X = 3 Is it true for X = 7 Is it true for X = 5 Is it true for X = 13

38 We can even combine values 12345678910 X > 5 X < 10 X > 5 && X < 10

39 We can even combine values 12345678910 X > 5 X < 10 X > 5 || X < 10

40 Comparing Objects/Reference Objects and references are hard to compare and understand Comparison between Object checks if they are the same reference, and NOT that they are the same

41 Comparing Objects/Reference Person martin = new Person( “Martin” ); Person other = new Person( “Martin” ); What will martin == other return trueorfalse FALSE – because they are different referenced (made by different new operations)

42 Making hitting rocks bad After moving left or right, we will add a test to see if we hit a rock Make an if statement the test will use the method getOneIntersectingObject( Rock.class ) It returns a rock if the bug is intersecting one Otherwise it returns Nothing (null) Compare the returns object with null

43 Making hitting rocks bad It should look like this OR

44 Making hitting rocks bad End the game by calling Greenfoot.stop(); Add a sound if you would like Let’s add some text!

45 Saying Game Over Go back to the project Right click on Actor and select New subclass… Call it Text

46 Saying Game Over Let me explain this, then type it out

47 Saying Game Over Go back to Bug, just before calling Greenfoot.stop(); Create a new Text object Text text = new Text( “Game Over”, 200, 50, 36 ); Add the object to the center of the screen addObject( text, 300, 200 ); Try it in the game; drive into a rock.

48 Let’s make hitting rocks bad When a bug hits a rock, let’s end the game. Open Bug We will first add steering then crashing Remove the body of the act method public void act() { } Let’s add some simple movement

49 Making other thing move Open the Apple or the Mushroom Add an act method public void act() { } Let’s try simple back and forth We will use move again How will we detect when we reach an edge? getX() Where are the edges? 0 and the width – getWorld().getFullWidth() Then what? Flip the direction – setRotation( … );

50 Making other thing move Your code should look something like this

51 Firing bullets When the player presses space bar, we will fire bullets The bullet will move forward If the bullet hits something it can destroy, then both should be destroyed. First create a bullet class a sub type of scroll actor!

52 Firing bullets When the player presses space bar, we will fire bullets The bullet will move forward If the bullet hits something it can destroy, then both should be destroyed. First create a bullet class a sub type of scroll actor! Right click on ScrollActor select “new subclass…”

53 Firing a bullet Now open actor When the player presses space Create a new bullet Add it to the world At the same location in the world as the Bug

54 Firing a bullet Now run it Wait why are the bullet behind me? They aren’t going anywhere

55 Firing a bullet Open Bullet Create the act method public void act() { } Call move(10);

56 Firing a bullet Try it again! Wait now the bullets go left Oh, we never set a direction!

57 Firing a bullet Open Bug again Set the direction to up setRotation( -90 ); Try it!

58 Firing a bullet Bullets are too close together. Let’s slow them down We could limit the number of bullets Or we could limit the rate of fire We will only allow bullet to be fired if a certain amount of time has passed

59 Firing a bullet Bullets are too close together. Let’s slow how fast we shoot We will only allow bullet to be fired if a certain amount of time has passed In Bug, we need to create two variables in the class One for how often we are allowed to fire Another for how long has passed since the last bullet was shot

60 Firing a bullet Both will be integer values (whole numbers) Create the values like so Go to act() Change the if statement If space is down and myLastShot equal 0 Inside the if set myLastShot = myRateOfFire; At the end of act() subtract 1 from myLastShot We are counting down until we can fire again

61 Firing a bullet Your code should look something like this Notice I am using a if statement to stop subtracting when myLastShot gets to zero

62 Making bullets destroy things We need a way to test if an Actor can be destroyed Remember how we detected if the bug hit a rock? We need to remove the objects Remember how World and ScrollWorld have an AddObject method? Maybe they have a removeObject method Let’s double clicking one of them Last, what type should we test for? Rocks? Actors? Let’s create a special type for detecting what bullets can destroy

63 Making bullets destroy things Create a new class Edit > “New subclass…” Call it destroyable Make sure the class has not methods Replace the word class with interface An interface is like a class (or type) It only describe what the type can do – it can’t actually do anything or even exist. You need to create a subtype of the interface

64 Making bullets destroy things Let’s make rocks destroyable – they need to be subtypes We just need to say the a rock implements Destroyable Now a rock is Destroyable and a type of ScrollActor It is two things

65 Making bullets destroy things Open bullet Add the detect hitting things code from Bug Change Bug to Destroyable Inside the if statement Remove the Actor and bullet

66 Final touches Try it out Destroy some rocks How far should bullets go? Should they go for ever? Let’s limit how far bullets go Give them a time limit then remove them Like counting with shots Or once they are off screen remove them Since they only go up right now, If y < 0

67 Final touches Try it out Destroy some rocks How far should bullets go? Should they go for ever? Let’s limit how far bullets go Give them a time limit then remove them Like counting with shots Or once they are off screen remove them Since they only go up right now, If y < 0

68 Final touches OR

69 Extend the game with your ideas Add more rocks or objects Add more destroyable Add enemies that shoot bullets at you Need enemies, new bullets – fancy stuff If you get a mushroom you can shoot faster For a limited amount of time? For more help see the documentation or ask me!

70 Documentation http://www.greenfoot.org/files/Greenfoot- API.pdf http://www.greenfoot.org/files/Greenfoot- API.pdf http://www.greenfoot.org/files/javadoc/


Download ppt "Lesson 2: Reading a program. Remember: from yesterday We learned about… Precise language is needed to program Actors and Classes Methods – step by step."

Similar presentations


Ads by Google