// Marty Stepp, CSE 142, Autumn 2008 // This program displays a set of cities and simulates dropping a bomb // that "blows up" some of the cities by turning them red. // It is a "client program" that uses the Point class we are creating. // This version of the program makes use of methods inside Point objects. // // Expected output (once the program is finished): // Blast site x/y? 100 100 // Blast radius? 75 import java.awt.*; import java.io.*; import java.util.*; public class Bomb { public static void main(String[] args) throws FileNotFoundException { // read first line of file (# of cities) and make array to store each one Scanner input = new Scanner(new File("cities.txt")); int numCities = input.nextInt(); Point[] cities = new Point[numCities]; DrawingPanel panel = new DrawingPanel(200, 200); Graphics g = panel.getGraphics(); for (int i = 0; i < numCities; i++) { // read each city's x/y data from the file cities[i] = new Point(); cities[i].x = input.nextInt(); cities[i].y = input.nextInt(); cities[i].draw(g); } // prompt for info about bomb blast Scanner console = new Scanner(System.in); System.out.print("Blast site x/y? "); Point blast = new Point(); blast.x = console.nextInt(); blast.y = console.nextInt(); System.out.print("Blast radius? "); int blastRadius = console.nextInt(); // draw bomb blast g.setColor(Color.RED); g.drawOval(blast.x - blastRadius, blast.y - blastRadius, 2 * blastRadius, 2 * blastRadius); // draw cities red that are hit by the bomb for (int i = 0; i < numCities; i++) { if (blast.distance(cities[i]) <= blastRadius) { panel.sleep(500); // pause 500ms cities[i].draw(g); // re-draw in red } } } }