初来乍到,有问题求大神帮我
初来乍到,遇到一个非常棘手的问题。关于java,我基本等于完全不会的……我们是学了一学期的理论,从来没实践过,就最后给一个课题要求完成……我们老师的题目是,在模拟十字交通口,然后四面有汽车经过,十字交通口中间是信号灯。信号灯会固定时间改变颜色,只有红绿两种。马路上从四个方向随机生成汽车,这个汽车会开向对面,到了信号灯的地方,如果是绿灯,这辆车就能够通过,如果红灯,就会停下,等变成绿灯之后再通过。
我根据老师上课的笔记写了下面这个……在百度知道上提问过……人家都说写的不敢恭维……
我知道自己写的很混乱……还请各位大神帮忙修改…………谢谢了……
import java.util.*;
public class Simcar extends Thread {
static Car car;
static long cTime = 0, eTime = 60;
static int[] sign = new int[2];
static int count = 0;
public static void main(String argv[]){
cTime = 0;
long now = System.currentTimeMillis();
while(cTime < eTime){
MoveCar();
cTime = System.currentTimeMillis();
cTime = cTime - now;
}
System.out.println("Finish!!");
}
// 车的移动
static void MoveCar(){
double r;
int i, j, k, l;
int x = 1; // 车与车的间距设定
// 车的前进
for ( i = 0; i < 3; i++) {
for ( j = car.car.lenght-1; j >= 0; j--) {
l = 0;
if (car.car.road[i][j] == 1) {
car.car.road[i][j] = 0;
for (k = 0; k < car.speed; k++) { // 车间距判定
if(car.car.road[i][j+k+x] == 1){
count += 1;
System.out.println("延迟回数:" +count);
System.out.println("发生时间:" +cTime);
break;
}
}
if ( i+k >= car.car.lenght) {
Sign();
if ((sign[0]==0 && i == 0) || (sign[1]==0 && i == 1)) {
r = Math.random();
if (r >= 0 && r < 8) {
l += 2;
} else {
if ( i == 0) {
k = 3;
} else if(i == 1) {
k = -1;
}
}
car.car.road[i+l][j+k-car.car.lenght] = 1;
}
} else {
car.car.road[i][j+k] = 1;
}
} else continue;
}
}
}
// 信号的处理
static void Sign(){
int time;
time = (int)cTime % 10;
if ( 0 >= time && time < 6) {
sign[0] = 0;
sign[1] = 1;
} else {
sign[0] = 1;
sign[1] = 0;
}
}
}
// 街道的情况
class Road extends Simcar {
int lenght = 500;
int [][] road = new int [3][1000];
private int i, j;
for(i = 0; i < 3; i++) {
for(j = 0; j < lenght; j++) {
road[i][j] = 0;
}
}
}
// 车的生成
class Car extends Simcar {
int speed = 50;
Road car = new Road();
double r;
r = Math.random();
if (r >= 0 && r < 3) {
car.road[0][0] = 1;
} else if (r >= 3 && r < 7) {
car.road[1][0] = 1;
} else {
continue;
}
}
麻烦大侠帮忙修改一下,谢谢了。
一定要可以执行阿……老师说交了就有分…………但是一定要能执行