java 简单红绿灯变化(本菜鸟 著)

今天看了书本线程和绘图的一部分,翻了翻书本,发现一道课后习题是要模拟红绿灯变化,好像有点意思,嘿嘿嘿,我就来写了写,不喜勿喷,大家可以多多指正~

运行起来是这样的
(第一次上传代码有点紧张 [擦擦手手的汗] )
hld

import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;

import javax.swing.JFrame;

public class light extends JFrame{
	/**
	 * 模拟红绿灯,红灯2秒,绿灯3秒,黄灯4秒
	 */
	private static final long serialVersionUID = 1L;
	private Thread t;
	public light() {
		setVisible(true);//设置窗体可见
		setTitle("红绿灯模拟");//设置标题
		setSize(100,600);//窗体大小
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//窗体关闭模式
		Canv c = new Canv();
		add(c);//窗体作为画布
		t = new Thread(c);//创建匿名线程对象
		t.start();//启动线程
	}
	
    class Canv extends Canvas implements Runnable{//创建画布(内部类)

		/**
		 * 
		 */
		private static final long serialVersionUID = 1L;
	
		public void paint(Graphics g,Color c,int y) {
			super.paint(g);
			Graphics2D g2 = (Graphics2D) g;
			
			g2.setColor(Color.black);
			g2.fillRect(40, 40, 40, 120);//绘制灯的外廓
			g2.setColor(Color.black);
			g2.fillRect(55, 160, 10, 270);//灯的杆子
			
			g2.setColor(c);
			g2.fillOval(40, y, 40, 40);//绘制灯
			
		}

		@Override
		public void run() {
			// TODO Auto-generated method stub
			while(true) {//无限循环
				try {
					Thread.sleep(4000); // 线程休眠4秒,黄灯
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				Graphics g = getGraphics();
				this.paint(g, Color.red, 40);// 红灯	
				try {
					Thread.sleep(2000); // 线程休眠2秒,红灯
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				this.paint(g, Color.green, 80);// 绿灯
				try {
					Thread.sleep(3000); // 线程休眠3秒,绿灯
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				this.paint(g, Color.yellow, 120);// 黄灯	
			}
		}
    }
	public static void main(String[] args) {
		new light();
	}

}

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我了解你的问题。这里我将使用HTML、CSS和JavaScript语言来实现红绿灯的promise和await实现。 首先,我们需要定义一个HTML页面,包含一个div元素和三个button元素。这个div元素用来模拟红绿灯,三个button元素用来控制红绿灯变化。 ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>红绿灯</title> <style> #light { width: 100px; height: 100px; border-radius: 50%; margin: 100px auto; } .red { background-color: red; } .green { background-color: green; } .yellow { background-color: yellow; } </style> </head> <body> <div id="light"></div> <button id="red">红灯</button> <button id="green">绿灯</button> <button id="yellow">黄灯</button> <script src="app.js"></script> </body> </html> ``` 然后,我们需要编写JavaScript代码来实现红绿灯变化。具体来说,我们可以使用promise和await来实现这个变化过程。 ```javascript function changeLight(color, time) { return new Promise(function(resolve, reject) { setTimeout(function() { if (color === 'red') { document.getElementById('light').className = 'red'; } else if (color === 'green') { document.getElementById('light').className = 'green'; } else if (color === 'yellow') { document.getElementById('light').className = 'yellow'; } resolve(); }, time); }); } async function run() { await changeLight('red', 3000); await changeLight('green', 2000); await changeLight('yellow', 1000); await changeLight('red', 3000); } run(); document.getElementById('red').addEventListener('click', function() { changeLight('red', 3000); }); document.getElementById('green').addEventListener('click', function() { changeLight('green', 2000); }); document.getElementById('yellow').addEventListener('click', function() { changeLight('yellow', 1000); }); ``` 在这个例子中,我们定义了一个changeLight()函数,用来改变红绿灯的颜色,并返回一个promise对象。然后,我们定义了一个run()函数,用来按照一定的顺序调用changeLight()函数。在这个run()函数中,我们使用await关键字来等待每个promise对象完成。最后,我们调用了run()函数来启动红绿灯变化过程。 同时,我们也为三个button元素添加了click事件监听器,当用户点击这些按钮时,会调用changeLight()函数来改变红绿灯的颜色。 希望这个例子能够帮助到你,如果你还有其他问题,可以继续问我哦。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值