操作系统课程设计——交通信号灯模拟(2)

2018-12-17 15:11

*/

if (xhd == \东西灯\)

a.qh(100, 100, \红\, \绿\, g); /**

* 如果为南北方向上的信号灯,调用自定义的方法,设置信号灯的颜色以及设置信号灯的坐标,并将信号灯在面板上绘出来 */

if (xhd == \南北灯\)

a.qh(100, 100, \绿\, \红\, g); /**

* 如果为黄灯,调用自定义的方法,设置信号灯的颜色以及设置信号灯的坐标,并将信号灯在面板上绘出来 */

if (xhd == \黄灯\)

a.qh(100, 100, \黄\, \黄\, g); } /**

*控制信号灯的颜色,同时将每个方向上的信号灯设为三个,且设置信号灯的坐标,在面板上绘出来 * @param

6

*/

public void qh(int x1, int y1, String cl1, String cl2, Graphics g) {

x = x1; y = y1; color1 = cl1; color2 = cl2;

for (int i = 0; i < 3; i++) { /**

* 设置方向 上信号灯的颜色 */

if (color1 == \黄\)

g.setColor(Color.yellow);

if (color1 == \红\) g.setColor(Color.red);

if (color1 == \绿\)

g.setColor(Color.green); /**

7

* 通过属性g调用GraphicsKh的fillOval()方法,将信号灯在面板上绘制出来 * 南北方法的信号灯 */

g.fillOval(x + i * 15, y, 15, 15);

g.fillOval(x + 55 + i * 15, y + 85, 15, 15);

/**

* 设置东西方向上信号灯的颜色 */

if (color2 == \黄\)

g.setColor(Color.yellow);

if (color2 == \红\) g.setColor(Color.red);

if (color2 == \绿\)

g.setColor(Color.green); /**

* 东西方向的信号灯,并调用Graphic的fillOval方法,设置东西方向上信号灯的坐标

8

*/

g.fillOval(x + 85, y + i * 15, 15, 15);

g.fillOval(x, y + 55 + i * 15, 15, 15); }

}

对于各个方向上信号灯线程的控制,我们定义了两个成员内部类来实现,这两个类继承了Thread类作为信号灯的线程,对信号灯来进行控制,这样方便进行调用,不用在不同的块中定义更多的类,而且定义的属性也有相应的权限,代码如下:

/** * *

*定义一个类Direct,继承Thread,作为南北方向上信号灯 *的线程,用来控制南北方法的信号灯 */

class Direct extends Thread {

private Jerry a1;//定义一个Jerry的属性,用来控制南北方向上信号灯

9

public Direct(Jerry a) { a1 = a; }

public void run() {

for (int j = 0; j < 100 + j; j++)

synchronized (a1) {//调用synchronized同步监视器将当前线程锁住,使得在当前进程运行时,不允许其他线程来访问

for (int i = 0; i < 100; i++) { x1 += 5;//x1坐标的变化,使得\南北行\在面板上运动

repaint();//x1每加一次,就重绘一次 if (x1 == 285)//当x1=285,就将x1重置为0,

x1 = 0;

try {

Thread.sleep(50);//重置为0后,将

10


操作系统课程设计——交通信号灯模拟(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:感恩老师情系附小主题活动方案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: