Capture The Flag
<< BlackHoleCritter | GridworldTrailIndex | AntFarm >>
Watch a movie of a CaptureTheFlag game
Overview
There are two Flags
, one red one blue. Flag
is a subclass of Actor
, and overrides the act()
method. It looks for all the occupied locations of the grid, and if there are less than 2 flags, it means it is the winner, and proceeds to remove all Actors
that are not the same color as itself.
Each team will start with the same number of AttackCritters
each starting with a strength
of 5. When they are initialized, they store the Color
of its target
. They move randomly like a Critter
, but if they have a neighbor of the same color, their strength goes up. If they have a neighbor of the other color, their strength does down. If a neighbor is a Flag
of their enemy's color, they remove it from the grid. If their strength is less than 1, they remove themselves from the grid (or for a less violent game, you can have them switch teams!).
CaptureTheFlag.java
import java.awt.Color; import info.gridworld.actor.*; import info.gridworld.grid.*; public class CaptureTheFlag { public static void main(String[] args) { ActorWorld battleField = new ActorWorld(); battleField.setGrid(new BoundedGrid(10, 19)); battleField.add(new Location(4,18), new Flag(Color.RED)); battleField.add(new Location(4,0), new Flag(Color.BLUE)); battleField.add(new Location(5,0), new Rock()); battleField.add(new Location(5,18), new Rock()); battleField.add(new Location(4,1), new Rock()); battleField.add(new Location(4,17), new Rock()); battleField.add(new Location(5,1), new Rock()); battleField.add(new Location(5,17), new Rock()); for (int i=0;i<5;i++){ battleField.add(new Location(2+i, 8),new AttackCritter(Color.BLUE, Color.RED)); battleField.add(new Location(2+i, 10),new AttackCritter(Color.RED, Color.BLUE)); } battleField.show(); } }
Hints
- Make accessor methods (getter and setter methods) to
strength
so you can test and manipulate theAttackCritters
- Be mindful of the post conditions for
Critters
! If you are changing the state of anActor
, it can only be inprocessActors
or inmakeMove
.