⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exercise11.03.java

📁 java做的一个applet小动画
💻 JAVA
字号:
import java.applet.*;
import java.awt.*;

//import java.lang.Math;
public class Exercise extends
        Applet implements Runnable {
    public int count = 0; //计数器用来控制红绿灯和汽车是否停止运动
    public long getStartTime;
    int a = 0, b = 0, c = 800, d = 0; //为下面控制车运动线程里的两个参数
    int create1 = 5, create2; //create1 表示car1的数量,create2表示
    Image car1, car2, car3, car4, back; //定义背景的公路和汽车
    Image red, green, yellow, light;
    Image red1, green1, yellow1, light1;
    car1Thread[] ct = new car1Thread[3]; //为5辆车分别分配一个线程
    car11Thread[] ct1 = new car11Thread[3]; //为5辆车分别分配一个线程
    car22Thread[] ct2 = new car22Thread[3];
    light l1 = new light();
    MediaTracker mt; //定义一个媒体跟踪器//*暂时没有使用
    public Exercise() {

    }

    public void init() {
        back = getImage(getDocumentBase(), "Image/11.gif");
        car1 = getImage(getDocumentBase(), "Image/car1.gif");
        car2 = getImage(getDocumentBase(), "Image/car2.gif");
        car3 = getImage(getDocumentBase(), "Image/car3.gif");
        car4 = getImage(getDocumentBase(), "Image/car4.gif");
        red = getImage(getDocumentBase(), "Image/red.gif");
        red1 = getImage(getDocumentBase(), "Image/red1.gif");
        green = getImage(getDocumentBase(), "Image/green.gif");
        green1 = getImage(getDocumentBase(), "Image/green1.gif");
        yellow = getImage(getDocumentBase(), "Image/yellow.gif");
        yellow1 = getImage(getDocumentBase(), "Image/yellow1.gif");
        light = getImage(getDocumentBase(), "Image/light.gif");
        light1 = getImage(getDocumentBase(), "Image/light1.gif");
    }

    public void start() {
        new Thread(l1).start();
        for (int i = 0; i <= 2; i++) {
            ct[i] = new car1Thread(a, i);
            a -= 50;
            if (i > 2) {
                a = 0;
            }
        }
        for (int i = 0; i <= 2; i++) {
            ct2[i] = new car22Thread(a);
            a -= 50;
            if (i > 2) {
                a = 0;
            }
        }

        for (int i = 0; i <= 2; i++) {
            ct1[i] = new car11Thread(c);
            c += 50;
            if (i > 2) {
                c = 800;
            }
        }
        for (int i = 0; i <= 2; i++) {
            ct[i].start();
        }
        for (int i = 0; i <= 2; i++) {
            ct2[i].start();
        }

        for (int i = 0; i <= 2; i++) {
            ct1[i].start();
        }
    }

    public void stop() {
    }

    public void paint(Graphics g) {
        g.drawImage(back, 0, 0, 800, 600, this); //将定义的图片显示到Applet,要不显示不出来笨蛋大笨蛋
        g.drawImage(light, 430, 283, 25, 48, this);
        g.drawImage(light, 285, 233, 25, 48, this);
        g.drawImage(light1, 380, 335, 48, 25, this);
        g.drawImage(light1, 310, 208, 48, 25, this);

        if (count == 0) {
            g.drawImage(red, 430, 283, 20, 20, this);
            g.drawImage(red, 285, 232, 20, 20, this);
            g.drawImage(green1, 410, 335, 20, 20, this);
            g.drawImage(green1, 339, 208, 20, 20, this);

        } else if (count == 1 || count == 3) {
            g.drawImage(yellow, 430, 299, 20, 20, this);
            g.drawImage(yellow, 285, 248, 20, 20, this);
            g.drawImage(yellow1, 395, 335, 20, 20, this);
            g.drawImage(yellow1, 323, 208, 20, 20, this);
        } else if (count == 2) {
            g.drawImage(green, 430, 315, 20, 20, this);
            g.drawImage(green, 285, 263, 20, 20, this);
            g.drawImage(red1, 380, 335, 20, 20, this);
            g.drawImage(red1, 307, 208, 20, 20, this);
        }
        getStartTime = l1.getStartTime();
        int i = 0, ii = 0;
        while (true) {
            g.drawImage(car3, ct1[i].getNumber(), 230, 71, 54, this);
            g.drawImage(car1, 370, ct2[i].getNumber(), 71, 54, this);
            i++;
            if (i > 2) {
                break;
            }
        }

        while (true) {
            g.drawImage(car2, ct[ii].getNumber(), 285, 71, 54, this);
            ii++;
            if (ii > 2) {
                break;
            }
        }
    }

    public void run() {}

    public void update(Graphics g) {
        paint(g);
    }

//控制横坐标汽车运动
    class car1Thread extends Thread {
        light ll = new light();
        int xaxis; //设置横标变化量
        int Id;
        long time;
        long endTime;
        //long startTime ;//= ll.getStartTime();
        public car1Thread(int a, int ID) {
            xaxis = a;
            Id = ID;
        }

        public car1Thread() {
            xaxis = 0;
        }

        public void run() {
            while (true) {
                repaint();
                try {
                    if (count == 0 && (xaxis > 220 && xaxis < 240)) {
                        endTime = this.getEndTime();
                        long startTime = getStartTime;
                        time = 5000 - (endTime - startTime);
                        Thread.sleep(time);
                    }
                    Thread.sleep(50);
                    xaxis += 5;
                    if (xaxis >= 800) {
                        xaxis = 0;
                    }
                } catch (InterruptedException E) {}
            }
        }

        //新加的函数,议会可能将要被删掉********************8
        public void startSleep() {
            try {
                Thread.sleep(time);
            } catch (InterruptedException e) {}
        }

        public int getNumber() {
            //System.out.println("car  :"+xaxis);
            return xaxis;
        }

        public long getEndTime() {
            return endTime = System.currentTimeMillis();

        }
    }


    class car11Thread extends Thread {
//        light ll = new light();
        int xaxis1; //设置横标变化量
//        long time;
//        long endTime;
//        long startTime = ll.getStartTime();
        public car11Thread(int a) {
            xaxis1 = a;
        }

        public car11Thread() {
            xaxis1 = 0;
        }

        public void run() {
            while (true) {
                repaint();
                try {
                    if (count == 1 && (xaxis1 > 400 && xaxis1 < 420)) {
                        //   endTime = this.getEndTime();
                        //  System.out.println("startTime:" + startTime);
                        // System.out.println("endTime  :" + endTime);
                        //  time = 3000 - (endTime - startTime);
                        // System.out.println(time);
                        Thread.sleep(5000);
                    }
                    Thread.sleep(50);
                    xaxis1 = xaxis1 - 5;
                    if (xaxis1 <= 0) {
                        xaxis1 = 800;
                    }
                } catch (InterruptedException E) {}
            }
        }

        public int getNumber() {
            // System.out.println("car  :" + xaxis1);
            return xaxis1;
        }

//        public long getEndTime() {
//           // return endTime = System.currentTimeMillis();
//
//        }
    }


    class car22Thread extends Thread {
//        light ll = new light();
        int yaxis1; //设置横标变化量
//        long time;
//        long endTime;
//        long startTime = ll.getStartTime();
        public car22Thread(int a) {
            yaxis1 = a;
        }

        public car22Thread() {
            yaxis1 = 0;
        }

        public void run() {
            while (true) {
                repaint();
                try {
                    if (count == 3 && (yaxis1 > 180 && yaxis1 < 210)) {
                        //   endTime = this.getEndTime();
                        //  System.out.println("startTime:" + startTime);
                        // System.out.println("endTime  :" + endTime);
                        //  time = 3000 - (endTime - startTime);
                        // System.out.println(time);
                        Thread.sleep(5000);
                    }
                    Thread.sleep(50);
                    yaxis1 += 5;
                    if (yaxis1 >= 600) {
                        yaxis1 = 0;
                    }
                } catch (InterruptedException E) {}
            }
        }

        public int getNumber() {
            //System.out.println("car  :"+xaxis);
            return yaxis1;
        }

//        public long getEndTime() {
//           // return endTime = System.currentTimeMillis();
//
//        }
    }


    class car2Thread implements Runnable {
        int yaxis = 0; //设置纵坐标变化量
        public car2Thread(int b) {
            yaxis = b;
        }

        public void run() {
            while (true) {
                repaint();
                try {
                    Thread.sleep(50);
                    yaxis += 10;
                    if (yaxis >= 800) {
                        yaxis = 0;
                    }
                } catch (InterruptedException E) {}
            }
        }

        public int getNumber() {
            return yaxis;
        }
    }


//light扩展runnable接口控制红绿灯
    class light implements Runnable {
        long getTime;
        long tt;
        public void run() {
            while (true) {
                try {
                    if (count > 3) {
                        count = 0;
                    }
                    if (count == 1 || count == 3) {
                        Thread.sleep(500); //黄灯的时间持续的要短一些
                    } else {
                        if (count == 0) {
                            getTime = System.currentTimeMillis();
                        }
                        Thread.sleep(5000); //红绿灯持续的时间长一些
                    }
                    count++;
                } catch (Exception e) {}
            }
        }

        public long getStartTime() {
            return getTime;
        }
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -