A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

package t1;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.Ellipse2D;

import javax.swing.JFrame;
//

//spin算法的主程序
public class spin {

        public static void main(String[] args) {
                int x =100,y=100;
               
                test1 t1 = new test1();
                t1.pmain();
               
                testpaint testpaint1 = new testpaint();
                //testpaint1.main2(x,y);
               
                testpaint2 testpaint2 = new testpaint2();
                testpaint2.main3(x+300,y);
               
               
        }

}

//传感器节点
class point{
        public int point_x;
        public int point_y;
        public char alive = 'a' ;

        //构造探针并且对其随机覆盖位置
        public point() {       
                point_x=(int)(Math.random()*100);
                point_y=(int)(Math.random()*100);
        }
}

//运算探针法 ,决定传感器的激活和暂停状态
class test1{
        //移植区
                static point  pointlin[]=new point[300];
                public static void  maker() {
                        for(int i=0; i<300; i++)
                        {
                                pointlin[i] = new point();
                        }
                }
               
                //测试重复覆盖了没有
                public static void testpoint_in(point point1, point point2) {
                        int _x = Math.abs(point1.point_x - point2.point_x);
                        int _y = Math.abs(point1.point_y - point2.point_y);
                        double doxy= Math.sqrt(_x * _x+_y * _y);
                        if(doxy<6){
                                point1.alive = 'b';
                               
                        }
                       
                }
               
                //判断是否传感器休眠外部循环
                public static int testpoint(point pointline[]) {
                        //外循环要测试的点
                        for (int i = 0; i < pointline.length; i++) {
                                //内循环寻找探针PRB_RPY
                                if(pointline[i].alive =='a')
                                {
                                        for(int j=i+1;j<pointline.length;j++)
                                        {
                                                if(pointline[j].alive =='a')
                                                {
                                               
                                                        testpoint_in(pointline[i], pointline[j]);
                                                }
                                                if (pointline[i].alive =='b')
                                                {
                                               
                                                        break;
                                                }                                               
                                        }
                                }
                        }
                        return 0;
                }
               
                public static void pmain() {
                        maker() ;                                       
                        testpoint(pointlin);                       
                }
               
}

//绘制最后留下来的节点
class testpaint extends JFrame{
        public testpaint(){
                this.setTitle("保留的开机节点");
        }
         public  void main2(int x,int y) {
       
                testpaint t=new testpaint();
                t.setLocation(x, y);
                t.setSize(300, 300);
                t.getContentPane().setBackground(Color.white);
               
                t.setVisible(true);
             
            }
            public void paint(Graphics g){
                super.paint(g);
                Graphics2D g2 = (Graphics2D)g;
                for (int i = 0; i < 300; i++) {
                                if(test1.pointlin[i].alive == 'a')
                                {
                                          Ellipse2D e = new Ellipse2D.Double(test1.pointlin[i].point_x*3,test1.pointlin[i].point_y*3,20,20);
                                        //加上下面这句就能变的圆滑了
                                        g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
                                        g2.setPaint(Color.black);
                                        g2.draw(e);
                                }
                        }
                      
            }
        }

//绘制整个区域的覆盖情况
class testpaint2 extends JFrame{
        public testpaint2(){
                this.setTitle("----覆盖情况显示----");
        }
         public  void main3(int x,int y) {
               
                testpaint t=new testpaint();
                t.setLocation(x, y);
                t.setSize(300, 300);
                t.getContentPane().setBackground(Color.BLUE);
               
                t.setVisible(true);
               
             
            }
            public void paint(Graphics g){
                super.paint(g);
                Graphics2D g2 = (Graphics2D)g;
                for (int i = 0; i < 300; i++) {
                                if(test1.pointlin[i].alive == 'a')
                                {
                                        Ellipse2D w = new Ellipse2D.Double(test1.pointlin[i].point_x*3,test1.pointlin[i].point_y*3,50,50);
                                //加上下面这句就能变的圆滑了
                                g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
                                g2.setPaint(Color.red);
                                g2.draw(w);
                                }

                                  
                               
                        }
                      
            }
        }

//显示传输结果借鉴testpointhanshu

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马