// 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. // // Expected output: // Blast site x? 100 // Blast site y? 100 // Blast radius? 75 import java.awt.*; import java.io.*; import java.util.*; public class Bomb { public static void main(String[] args) throws FileNotFoundException { DrawingPanel panel = new DrawingPanel(200, 200); Graphics g = panel.getGraphics(); // read city data from file Scanner input = new Scanner(new File("cities.txt")); int numCities = input.nextInt(); // 6 Point[] cities = new Point[numCities]; for (int i = 0; i < numCities; i++) { cities[i] = new Point(); cities[i].x = input.nextInt(); // x cities[i].y = input.nextInt(); // y } // draw the cities for (int i = 0; i < numCities; i++) { g.fillOval(cities[i].x, cities[i].y, 3, 3); g.drawString("(" + cities[i].x + ", " + cities[i].y + ")", cities[i].x, cities[i].y); } // 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(); // drop the bomb >_< g.setColor(Color.RED); g.drawOval(bomb.x - radius, bomb.y - radius, 2 * radius, 2 * radius); // re-draw nuked cities in red for (int i = 0; i < numCities; i++) { // distance between bomb center and this city: // sqrt(dx^2 + dy^2) int dx = cities[i].x - bomb.x; int dy = cities[i].y - bomb.y; double distance = Math.sqrt(dx*dx + dy*dy); if (distance <= radius) { g.fillOval(cities[i].x, cities[i].y, 3, 3); g.drawString("(" + cities[i].x + ", " + cities[i].y + ")", cities[i].x, cities[i].y); } } } }