Introduction 1
Chapter 1 Getting to know Greenfoot 3
1.1 Getting started 3
1.2 Objects and classes 4
1.3 Interacting with objects 6
1.4 Return types 7
1.5 Parameters 8
1.6 Greenfoot execution 9
1.7 A second example 10
1.8 Understanding the class diagram 10
1.9 Playing with Asteroids 12
1.10 Source code 13
1.11 Summary 15
Chapter 2 The first program: Little Crab 16
2.1 The Little Crab scenario 16
2.2 Making the crab move 18
2.3 Turning 19
2.4 Dealing with screen edges 21
2.5 Summary of programming techniques 25
Chapter 3 Improving the Crab-more sophisticated programming 27
3.1 Adding random behavior 27
3.2 Adding worms 30
3.3 Eating worms 32
3.4 Creating new methods 33
3.5 Adding a Lobster 36
3.6 Keyboard control 36
3.7 Ending the game 38
3.8 Adding sound 40
3.9 Summary of programming techniques 42
Chapter 4 Finishing the crab game 43
4.1 Adding objects automatically 43
4.2 Creating new objects 45
4.3 Animating images 46
4.4 Greenfoot images 47
4.5 Instance variables (fields) 48
4.6 Assignment 49
4.7 Using actor constructors 50
4.8 Alternating the images 52
4.9 The if/else statement 53
4.10 Counting worms 53
4.11 More ideas 55
4.12 Summary of programming techniques 56
Interlude 1 Sharing your scenarios 57
I1.1 Exporting your scenario 57
I1.2 Export to application 57
I1.3 Export to a web page 58
I1.4 Publishing on the Greenfoot Gallery 59
Chapter 5 Making music: An on-screen piano 61
5.1 Animating the key 62
5.2 Producing the sound 65
5.3 Abstraction: Creating multiple keys 66
5.4 Building the piano 68
5.5 Using loops: The while loop 69
5.6 Using arrays 72
5.7 Summary of programming techniques 76
Chapter 6 Interacting objects: Newton's Lab 78
6.1 The starting point: Newton's Lab 79
6.2 Helper classes: SmoothMover and Vector 80
6.3 The existing Body class 83
6.4 First extension: Creating movement 85
6.5 Using Java library classes 86
6.6 Adding gravitational force 87
6.7 The List type 90
6.8 The for-each loop 91
6.9 Applying gravity 93
6.10 Trying it out 95
6.11 Gravity and music 97
6.12 Summary of programming techniques 99
Chapter 7 Collision detection: Asteroids 101
7.1 Investigation: What is there? 102
7.2 Painting stars 103
7.3 Turning 106
7.4 Flying forward 107
7.5 Colliding with asteroids 109
7.6 Casting 112
7.7 Adding fire power: The proton wave 115
7.8 Growing the wave 115
7.9 Interacting with objects in range 119
7.10 Further development 121
7.11 Summary of programming techniques 122
Interlude 2 The Greeps competition 123
I2.1 How to get started 124
I2.2 Programming your Greeps 125
I2.3 Running the competition 126
I2.4 Technicalities 126
Chapter 8 Creating images and sound 127
8.1 Preparation 127
8.2 Working with sound 129
8.3 Sound recording and editing 130
8.4 Sound file formats and file sizes 131
8.5 Working with images 133
8.6 Image files and file formats 133
8.7 Drawing images 135
8.8 Combining images files and dynamic drawing 137
8.9 Summary 139
Chapter 9 Simulations 141
9.1 Foxes and rabbits 142
9.2 Ants 145
9.3 Collecting food 146
9.4 Setting up the world 149
9.5 Adding pheromones 149
9.6 Path forming 152
9.7 Summary 152
Chapter 10 Additional scenario ideas 154
10.1 Marbles 154
10.2 Lifts 155
10.3 Boids 156
10.4 Circles 157
10.5 Explosion 158
10.6 Breakout 159
10.7 Platform jumper 160
10.8 Wave 161
10.9 Summary 162
Appendix
A Installing Greenfoot 163
B Greenfoot API 165
C Collision detection 169
D Some Java details 175
Index 185