-
Notifications
You must be signed in to change notification settings - Fork 1
/
Lawnmower.java
82 lines (62 loc) · 2.23 KB
/
Lawnmower.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import greenfoot.*; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)
import java.util.*;
/**
* Class definition for a Lawnmower object (for mowing down zombies that
* have made it all the way to the house)
*
* @author bcanada
* @version 2014.01.17
*/
public class Lawnmower extends SmoothMover
{
public boolean lawnmowerIsMoving;
public Lawnmower()
{
super( new Vector( 0, 0.0 ) );
lawnmowerIsMoving = false;
} // end no-arg constructor for Lawnmower
/**
* Act - do whatever the Lawnmower wants to do. This method is called whenever
* the 'Act' or 'Run' button gets pressed in the environment.
*/
public void act()
{
// Add your action code here.
checkForZombie();
move();
if ( lawnmowerIsMoving )
{
super.addForce( new Vector( 0, 0.1 ) );
if ( this.getX() > getWorld().getWidth() + 100 )
{
getWorld().removeObject( this );
} // end inner if
} // end outer if
} // end method act
/**
* If a zombie comes into contact with a lawnmower, make
* the zombie die, and "restart" the lawnmower acceleration
*
* TODO: Come up with a better name for this method??
*/
public void checkForZombie()
{
List<Zombie> zombies = getObjectsAtOffset( 2, -40, Zombie.class );
if ( zombies.size() > 0 )
{
Zombie nearestZombie = zombies.get( 0 );
if ( !nearestZombie.getIsDying() )
{
super.stop();
Greenfoot.playSound( "limbs_pop_fixed.wav" );
//getWorld().removeObject( nearestZombie );
nearestZombie.die();
if ( !lawnmowerIsMoving )
{
Greenfoot.playSound( "lawnmower.wav" );
lawnmowerIsMoving = true;
} // end twice-nested inner if
} // end nested inner if
} // end outer if
} // end method checkForZombie
} // end class Lawnmower