Lab7_Asteroid

advertisement
Asteroids
Games and Simulations
O-O Programming in Java
The Walker School
The Walker School – Games and Simulations - 2010
Asteroids
Take some time to play
with Asteroids. What can
the program do and what
can’t it do?
The Walker School – Games and Simulations - 2010
Discovering Keyboard Controls
Which keyboard key is
used to fire a bullet?
The Walker School – Games and Simulations - 2010
Explosions
Place an explosion into a
running scenario. Does it
work? What does it do?
The Walker School – Games and Simulations - 2010
Painting Stars
The Walker School – Games and Simulations - 2010
Create a New Scenario
Directions
1. Create a new scenario.
2. Save it as “asteriods-lastname”.
The Walker School – Games and Simulations - 2010
Create the World
Directions
1. Create a new subClass called “Space”.
2. Leave the background empty.
The Walker School – Games and Simulations - 2010
Enlarge the Background
Directions:
1. Change the size of the
world (600, 400, 1).
2. Change the comment.
The Walker School – Games and Simulations - 2010
Painting Backgrounds
Part IV - http://www.youtube.com/watch?v=rvZ0ErpfHKM&feature=related
The Walker School – Games and Simulations - 2010
Import the Java Color Library
The Walker School – Games and Simulations - 2010
Use Java to Paint Black Background
The Walker School – Games and Simulations - 2010
Create a method createStars()
Comment it out until we create the method.
The Walker School – Games and Simulations - 2010
Create a Method Body
Takes a parameter of type integer,
as we stated we wanted 300 stars.
The Walker School – Games and Simulations - 2010
Create The Stars
Step through this loop and
explain what is happening.
The Walker School – Games and Simulations - 2010
For Loops
for (initialization; loop-condition; increment)
{
loop-body;
}
•The initialization part declares and initializes a loop variable. This
variable is often called i, and often initialized to 0.
•The loop condition checks whether our loop variable is still less than a
given limit. If it is, the loop will continue.
•The increment section simply increments the loop variable.
The Walker School – Games and Simulations - 2010
Vary Star Brightness
The Walker School – Games and Simulations - 2010
Rocket Firing
The Walker School – Games and Simulations - 2010
Turning
The Walker School – Games and Simulations - 2010
Flying Forward
The Walker School – Games and Simulations - 2010
Flying Forward
Calls the move() method from SmoothMover class.
What happens?
The Walker School – Games and Simulations - 2010
What Do We Need To Do?
So where are we going to do this?
• Add initial movement to the rocket.
• To add movement, we need to add force to the
rocket.
• And we need to change its vector.
• So we’ll need to call this vector from the Vector
abstract class.
• The vector needs 2 variables: direction (dy) and
length (dx).
The Walker School – Games and Simulations - 2010
Adding Drift
What happens when you change the variables in the vector?
The Walker School – Games and Simulations - 2010
What Do We Need To Do?
• Create variables to handle each rocket image.
• Add a method called ignite to checkKeys(), so
that we when hit the “up” button, the rocket
image is changed.
• Define a method called ignite. It will need a
boolean parameter and a void return type.
The Walker School – Games and Simulations - 2010
Create a Method Stub to Ignite Rocket
Remember to create an instance variable called boosterOn.
The Walker School – Games and Simulations - 2010
Igniting the Rocket Boosters
The Walker School – Games and Simulations - 2010
Colliding with Asteroids
The Walker School – Games and Simulations - 2010
What Do We Need to Do?
•
•
•
•
If we collide with an asteroid,
Remove the rocket from the world;
Place an explosion into the world;
Show final score (game over);
The Walker School – Games and Simulations - 2010
Methods for Collision Detection
file:///C:/Greenfoot/doc/API/index.html
Both methods accept a parameter of type Class, which means we can
check for intersections with a specific class of objects if we want to.
Which of these 2 methods do we want to use and why?
The Walker School – Games and Simulations - 2010
Colliding with Asteroids
Remember to call the method in the rocket act() method.
The Walker School – Games and Simulations - 2010
Creating Better Explosions
•
•
•
•
•
Part I - http://www.youtube.com/watch?v=rgZ-_vQ2aIc
Part II - http://www.youtube.com/watch?v=bdv4ZgTcYyY&feature=related
Part III - http://www.youtube.com/watch?v=OFuDEt0xifM&feature=related
Part IV - http://www.youtube.com/watch?v=XMJi4_bzuLw&feature=related
Part V - http://www.youtube.com/watch?v=TKYwL8p_11A&feature=related
The Walker School – Games and Simulations - 2010
What Do We Need To Do?
• Add abstract classes SmoothMover and Vector
from Greenfoot.
• Create a constructor for Debris
• Update the move() method
Casting
The Walker School – Games and Simulations - 2010
Create the Score Board
The Walker School – Games and Simulations - 2010
Import Java Libraries
The Walker School – Games and Simulations - 2010
Create the Assignment Variables
The Walker School – Games and Simulations - 2010
Create the Constructors
Why are their 2 constructors?
How is this an example of overloading?
The Walker School – Games and Simulations - 2010
Make Scoreboard Image
So, what else needs to be done?
The Walker School – Games and Simulations - 2010
Activity – Change Attributes
• Modify the ScoreBoard class:
– Change the text shown on it.
– Change the color of the text.
– Change the background and frame colors.
– Change the font size so that your text fits well.
– Change the width of the scoreboard to suit your
text.
The Walker School – Games and Simulations - 2010
Homework – Scoreboard
• Search the Greenfoot library for other games
that have scoreboards. Study how they were
built. What attributes do they have that this
board does not? What could you add to your
scoreboard?
The Walker School – Games and Simulations - 2010
Add a Variable for the Counter
The Walker School – Games and Simulations - 2010
Assign the Counter to the Constructor
The Walker School – Games and Simulations - 2010
Call the Counter When Game Over
How can you make sure that the counter is in the
middle of the board without hard coding the
numbers?
The Walker School – Games and Simulations - 2010
Ensure the Scoreboard is in the Middle
of the Background
Where do we call the gameOver() method?
The Walker School – Games and Simulations - 2010
Call the Game Over Method
Example of Casting
The Walker School – Games and Simulations - 2010
Casting
• Casting is the technique of telling the compiler
a more precise type for our object then it can
work out for itself. We do this by writing the
class name (Space) in parentheses before the
method call. Once we have done this we can
call methods defined in Space
• space.gameOver();
Casting does not change the type of the object returned.
The Walker School – Games and Simulations - 2010
Add a Proton Wave
What does it do?
What doesn’t it do?
The Walker School – Games and Simulations - 2010
Import the Library
We are going to need the Java List class because we are going
to create a list of images to create a proton wave that
increases in size.
The Walker School – Games and Simulations - 2010
Assign Variables
How do we make the wave grow?
The Walker School – Games and Simulations - 2010
Add A List (Array) to Store Image Set
How many images will this list store?
The Walker School – Games and Simulations - 2010
Create a Constructer for the Wave
The Walker School – Games and Simulations - 2010
Create a Method to Initialize Images
The Walker School – Games and Simulations - 2010
Create a Instance Field to Set Image Count
Create a Method to Initialize Images
Rewrite the While loop using a For loop.
What needs to change?
The Walker School – Games and Simulations - 2010
Create a Method Stub to Grow Wave
The Walker School – Games and Simulations - 2010
Call Method to Grow the Wave
The Walker School – Games and Simulations - 2010
Add Statements to Grow Wave
Square [] brackets, not curly
{} brackets here
The Walker School – Games and Simulations - 2010
Add Sound to the Proton Wave
The Walker School – Games and Simulations - 2010
Create a Method Stub to Ignite Proton
Wave
Where do we create this method?
The Walker School – Games and Simulations - 2010
Call Method When “Z” is Pressed
What is the problem with the proton wave?
1. It can be released too easily!
2. It doesn’t do anything to the asteroids!
The Walker School – Games and Simulations - 2010
Create Reload and Delay
for Wave
The Walker School – Games and Simulations - 2010
Add an Instance Variable for the Delay
Where do we create these variables?
The Walker School – Games and Simulations - 2010
Assign the Delay to the Constructor
The Walker School – Games and Simulations - 2010
Add Delay Count to act() Method
The Walker School – Games and Simulations - 2010
Program the Delay into the Wave
The Walker School – Games and Simulations - 2010
Interacting with Objects in a
Range
The Walker School – Games and Simulations - 2010
Program a Method Stub
to Check for Collision
Purpose is to check to see if the wave touches and asteroid.
So, in what Class do we create this method?
The Walker School – Games and Simulations - 2010
Call it in the Wave act() Method
The Walker School – Games and Simulations - 2010
Write Statements to
Check for Collision
Range is the radius of
the circle (wave).
Why didn’t we use the “getIntersectingObjects() method?
The Walker School – Games and Simulations - 2010
hit() Method
What are the parameters for this
method and what does it return?
The Walker School – Games and Simulations - 2010
Evaluating the Damage Constant
What happens when you change the damage constant of the
proton wave?
The Walker School – Games and Simulations - 2010
For Further Development
• Fix the score counter.
• Add new asteroids when all have been cleared.
• Add a level counter. Every time all asteroids are
destroyed you go up a level.
• Add an end of level sound.
• Add an indicator showing the load state of the
proton wave.
• Add a shield.
The Walker School – Games and Simulations - 2010
Download