// Marty Stepp, CSE 142, Autumn 2009 // This "client" program displays a set of cities and simulates dropping a // bomb that "blows up" some of the cities by turning them red. // // This is the second version that utilizes our new methods in Point objects. import java.awt.*; import java.io.*; import java.util.*; public class Bomb { public static void main(String[] args) throws FileNotFoundException { // read city data from file Scanner input = new Scanner(new File("cities.txt")); Point[] cities = readCities(input); // draw the cities DrawingPanel panel = new DrawingPanel(200, 200); Graphics g = panel.getGraphics(); for (int i = 0; i < cities.length; i++) { cities[i].draw(g); } // drop the "bomb" Scanner console = new Scanner(System.in); Point bomb = new Point(); System.out.print("Blast site x? "); bomb.x = console.nextInt(); System.out.print("Blast site y? "); bomb.y = console.nextInt(); System.out.print("Blast radius? "); int radius = console.nextInt(); dropBomb(bomb, radius, cities, g); } // Reads the input file into an array of city points and returns it. public static Point[] readCities(Scanner input) { int numCities = input.nextInt(); // 6 Point[] cities = new Point[numCities]; for (int i = 0; i < numCities; i++) { cities[i] = new Point(); cities[i].setLocation(input.nextInt(), input.nextInt()); // y } return cities; } // Drops a bomb at the given position and radius on the given cities. public static void dropBomb(Point bomb, int radius, Point[] cities, Graphics g) { g.setColor(Color.RED); g.drawOval(bomb.x - radius, bomb.y - radius, 2 * radius, 2 * radius); bomb.draw(g); // re-draw nuked cities in red for (int i = 0; i < cities.length; i++) { if (cities[i].distance(bomb) <= radius) { cities[i].draw(g); } } } }