import java.applet.*; import java.awt.*; import java.awt.event.*; import java.util.*; public class PolygonControler extends Applet implements ActionListener,MouseListener, KeyListener,Runnable, MouseMotionListener { // выбранная фигура int selectedPol = -1; ArrayList pols = new ArrayList(); MyPolygon pol; // поток перерисовки. Thread motor; // признаки boolean isAddPol = false, isNewPol=false; boolean isRepaint = false; Checkbox chh1 = new Checkbox(); Label l1 = new Label("Добавление фигуры:"); Label l2 = new Label("Задание вращения:"); Label l3 = new Label("Задание движения:"); Label l4 = new Label("Смена цветов ..."); Label l5 = new Label("Список цветов:"); Label l6 = new Label("Добавить цвет"); Label l7 = new Label("Удалить цвет"); TextField t1 = new TextField(3); // задание вращения TextField t2 = new TextField(3); // задание движения Button b1 = new Button("Add Polygon"); Button b2 = new Button("Set Rotate"); Button b3 = new Button("Set Move -"); Button b7 = new Button("Set Move |"); Button b4 = new Button("Add"); Button b5 = new Button("Del"); Button b6 = new Button("Delete"); Choice ch1 = new Choice(); Choice ch2 = new Choice(); Choice ch3 = new Choice(); Checkbox c1 = new Checkbox("Менять цвета"); public PolygonControler () { } public void init () { add(l1); add(ch1); add(b1); add(b6);add(l2);add(t1); add(b2); add(l3); add(t2); add(b3); add(b7); add(l4); add(chh1);add(b4); // add(ch2); add(l6); add(ch3); add(b4); add(l7); add(b5);add(c1); b1.addActionListener(this); b2.addActionListener(this); b3.addActionListener(this); b4.addActionListener(this); b5.addActionListener(this); b6.addActionListener(this); b7.addActionListener(this); ch1.add("Равнобедренный треугольник");ch1.add("Равносторонний треугольник");ch1.add("Случайный треугольник"); addKeyListener(this); requestFocus(); addMouseListener(this); addMouseMotionListener(this); } public void start () { motor = new Thread(this); motor.start(); } public void actionPerformed(ActionEvent ae) { String str = ae.getActionCommand(); if (str.equals("Add Polygon")) { Random rnd = new Random(); pol = new MyPolygon(); int base = 1+rnd.nextInt(10); if (ch1.getSelectedItem() == "Равнобедренный треугольник") { pol.addPoint(0, 10* rnd.nextInt(10), Color.black); pol.addPoint(10*base, -5*base, Color.black); pol.addPoint(-10*base, -5* base, Color.black); pol.setX(20* (1+rnd.nextInt(15))); pol.setY(20* (1+rnd.nextInt(15))); pol.color = Color.blue; } if (ch1.getSelectedItem() == "Случайный треугольник") { pol.addPoint(0, 10* rnd.nextInt(10), Color.black); pol.addPoint(10* rnd.nextInt(10), -5* rnd.nextInt(10), Color.black); pol.addPoint(-10* rnd.nextInt(10), -5* rnd.nextInt(10), Color.black); pol.setX(20* rnd.nextInt(30)); pol.setY(20* rnd.nextInt(30)); pol.color = Color.green; } if (ch1.getSelectedItem() == "Равносторонний треугольник") { pol.addPoint(0, 16*base, Color.black); pol.addPoint(15*base, -10*base, Color.black); pol.addPoint(-15*base,-10*base, Color.black); pol.setX(20* rnd.nextInt(30)); pol.setY(20* rnd.nextInt(30)); pol.color = Color.red; } pols.add(pol); isRepaint=true; } if (str.equals("Set Rotate")) { String str1 = t1.getText(); if (!(str1.length() == 0) & (selectedPol!=-1)) { pols.get(selectedPol).setSRotate(Integer.parseInt(str1)); } } if (str.equals("Set Move -")) { String str1 = t2.getText(); if (!(str1.length() == 0) & (selectedPol!=-1)) { pols.get(selectedPol).setSpeedX(Integer.parseInt(str1)); } } if (str.equals("Set Move |")) { String str1 = t2.getText(); if (!(str1.length() == 0) & (selectedPol!=-1)) { pols.get(selectedPol).setSpeedY(Integer.parseInt(str1)); } } if (str.equals("Add")) { int v; if (chh1.getState()) { do { v = pols.get(selectedPol).isColors.get(); } while (!pols.get(selectedPol).isColors.compareAndSet(v, 1)); } else { do { v = pols.get(selectedPol).isColors.get(); } while (!pols.get(selectedPol).isColors.compareAndSet(v, 0)); } } if (str.equals("Del")) { } if (str.equals("Delete")) { if (selectedPol!=-1) { //pols.get(selectedPol).isLife=false; pols.remove(selectedPol); } System.out.println("!"+selectedPol); } } public void paint(Graphics g) { for (int i=0; i< pols.size(); i++) { if (i