// WMVector Class // WMVector.java // Imports import java.awt.*; public class WMVector extends SpriteVector { private Component component; /**Constructor*/ public WMVector(Background back, Component comp) { super(back); component = comp; } // End WMVector constructor /** This is where the code is that handles collisions.*/ protected boolean collision(int i, int iHit) { Sprite s = (Sprite)elementAt(i); Sprite sHit = (Sprite)elementAt(iHit); /**A bullet hit something*/ if (sHit.getClass().getName().equals("Bullet")) { /** A spider is shot.*/ if (s.getClass().getName().equals("Spider")) { WarMan.score += 10; WarMan.badcount -= 1; WarMan.bulletcount -= 1; Point pos = new Point(s.getPosition().x, s.getPosition().y); removeElementAt(i--); removeElementAt(iHit--); if (add(new Spidercide(component, pos)) <= i) i++; return false; } // End if statement--A spider is shot /** A Gila Monster is shot*/ else if (s.getClass().getName().equals("GilaMonster")) { WarMan.score += 20; WarMan.badcount -= 1; WarMan.bulletcount -= 1; Point pos = new Point(s.getPosition().x, s.getPosition().y); removeElementAt(i--); removeElementAt(iHit--); if (add(new Spidercide(component, pos)) <= i) i++; return false; } // End if statement--A gila monster is shot /** A Bullet hit the wall*/ else if (s.getClass().getName().equals("Wall")) { removeElementAt(iHit--); WarMan.bulletcount -= 1; return false; } // End if statement--A wall is shot /** A Bullet hit the cliff*/ else if (s.getClass().getName().equals("Cliff")) { removeElementAt(iHit--); WarMan.bulletcount -= 1; return false; } // End if statement--A cliff is shot /** A Bullet hit the tree*/ else if (s.getClass().getName().equals("Tree")) { removeElementAt(iHit--); WarMan.bulletcount -= 1; return false; } // End if statement--A tree is shot /** A Bullet hit the boulder*/ else if (s.getClass().getName().equals("Boulder")) { removeElementAt(iHit--); WarMan.bulletcount -= 1; return false; } // End if statement--A boulder is shot /** A Freedom door is shot*/ else if (s.getClass().getName().equals("Block")) { WarMan.doorcount--; if (WarMan.doorcount <= 0) { removeElementAt(i--); WarMan.badcount = 0; } removeElementAt(iHit--); WarMan.bulletcount -= 1; return false; } // End if statement--A Freedom door is shot /** A Mushroom is shot*/ else if (s.getClass().getName().equals("Mushroom1")) { Point pos = new Point(s.getPosition().x, s.getPosition().y); removeElementAt(i--); removeElementAt(iHit--); WarMan.bulletcount -= 1; if (add(new Mushroom2(component, pos)) <= i) i++; return false; } // End if statement--A mushroom is shot /** A Mushroom is shot a second time.*/ else if (s.getClass().getName().equals("Mushroom2")) { removeElementAt(i--); removeElementAt(iHit--); WarMan.bulletcount -= 1; return false; } // End if statement--A mushroom is shot /** A Scorpion is shot*/ else if (s.getClass().getName().equals("Scorpion")) { WarMan.score += 10; WarMan.badcount -= 1; WarMan.bulletcount -= 1; WarMan.scorpioncount -= 1; removeElementAt(i--); removeElementAt(iHit--); return false; } // End if statement--A scorpion is shot } // End if statement--A bullet hit something //---------------------------------- /** Collided with wall, so stay put.*/ else if ((sHit.getClass().getName().equals("Wall"))&& (!(s.getClass().getName().equals("Bullet")))) return true; /** Collided with cliff, so stay put.*/ else if ((sHit.getClass().getName().equals("Cliff"))&& (!(s.getClass().getName().equals("Bullet")))) return true; /** Collided with tree, so stay put.*/ else if ((sHit.getClass().getName().equals("Tree"))&& (!(s.getClass().getName().equals("Bullet")))) return true; /** Collided with boulder, so stay put.*/ else if ((sHit.getClass().getName().equals("Boulder"))&& (!(s.getClass().getName().equals("Bullet")))) return true; /** Collided with freedom door, so stay put.*/ else if ((sHit.getClass().getName().equals("Block"))&& (!(s.getClass().getName().equals("Bullet")))) return true; /** Gecko Collided with door.*/ else if ((sHit.getClass().getName().equals("Door"))&& (s.getClass().getName().equals("Gecko"))) { if (WarMan.keyflag == 1) { removeElementAt(iHit--); return false; } else return true; } else if ((sHit.getClass().getName().equals("Door"))&& (!(s.getClass().getName().equals("Bullet")))) return true; /** Gecko got the gun.*/ else if ((sHit.getClass().getName().equals("Gun"))&& (s.getClass().getName().equals("Gecko"))) { WarMan.gunflag = 1; removeElementAt(iHit--); return false; } /** Gecko got the key.*/ else if ((sHit.getClass().getName().equals("Key"))&& (s.getClass().getName().equals("Gecko"))) { WarMan.keyflag = 1; removeElementAt(iHit--); return false; } /** Collided with gila monster, so stay put.*/ else if ((sHit.getClass().getName().equals("GilaMonster"))&& (!(s.getClass().getName().equals("Bullet")))) return true; /** Collided with Mushroom, so stay put.*/ else if ((sHit.getClass().getName().equals("Mushroom1"))&& (!(s.getClass().getName().equals("Bullet")))) return true; else if ((sHit.getClass().getName().equals("Mushroom2"))&& (!(s.getClass().getName().equals("Bullet")))) return true; /** Collided with dead gecko, so do nothing.*/ else if (sHit.getClass().getName().equals("Geckocide")) return false; /** Collided with baby spider, so do nothing.*/ else if (sHit.getClass().getName().equals("Spiderling")) return false; /** Collided with dead spider, so do nothing.*/ else if (sHit.getClass().getName().equals("Spidercide")) return false; /** Collided with bullet, so do nothing.*/ else if (sHit.getClass().getName().equals("Bullet")) return false; /** The Gecko collided with something bad.*/ else if (s.getClass().getName().equals("Gecko")) { /** Is there more lives left?*/ Point pos = new Point(s.getPosition().x, s.getPosition().y); if (--WarMan.lives <= 0) removeElementAt(i--); else s.setPosition(new Point(142, 437)); /** Add dead gecko.*/ if (add(new Geckocide(component, pos)) <= i) i++; } return false; } // End collision function } // End WMVector class