La verdad no supe cual era mi error, pero pienso que eran los punteros que los definí mal.
el vídeo de youtube http://www.youtube.com/watch?v=vQtSFH0XCCM&feature=youtube_gdata
Aquí le dejo el nuevo código:
#include <stdio.h>
#include <sys/types.h>
#include <time.h>
#include<stdlib.h>
#include <windows.h>
int numero_random();
int f1(int *);
int main()
{
int x=0,i,j,t=1,a=0;
int car[4]={0,0,0,0}, imp=1,ext[4]={1,1,1,1};
time_t t1,t2, tc1, tc2;
time(&t1);
time(&tc1);
while (1){
time(&t2);
time(&tc2);
if (difftime(t2,t1)>=10)
{
time(&t1);
t++;
imp=1;
ext[4]=0;
if (t==5){
t=1;
}
}
//sleep(4000);
if (difftime(tc2,tc1)>=4)
{
time(&tc1);
a=numero_random(a);
}
if(car[t-1]>1&&t==1)
ext[0]=0;
if(car[t-1]>1&&t==2)
ext[1]=0;
if(car[t-1]>1&&t==3)
ext[2]=0;
if(car[t-1]>1&&t==4)
ext[3]=0;
if(ext[0]==0&&difftime(t2,t1)>=2)
{time(&t1);
printf("\n\n------------ \n\n");
ext[0]=1;}
if(ext[1]==0&&difftime(t2,t1)>=2)
{time(&t1);
printf("\n\n-------------- \n\n");
ext[1]=1;}
if(ext[2]==0&&difftime(t2,t1)>=2)
{time(&t1);
printf("\n\n------------------\n\n");
ext[2]=1;}
if(ext[3]==0&&difftime(t2,t1)>=2)
{time(&t1);
printf("\n\n---------------------\n\n");
ext[3]=1;}
if(a==1){
printf("aparece un carro de izquierda a derecha\n\n");
if(t!=1){
++car[0];
printf("el carro frena hasta un cierto punto: DERECHA\n\n");
if (car[0]>=2){
printf("frena detras del anterior: DERECHA\n");
//aumenta el limite del carro
f1(&car[0]);
}
}
a=0;
}
if(a==2){
printf("aparece un carro de arriba a abajo\n\n");
if(t!=2){
++car[1];
printf("el carro frena hasta un cierto punto: ABAJO\n\n");
if (car[1]>=2){
printf("frena detras del anterior: ABAJO\n");
//aumenta el limite del carro
f1(&car[1]);
}
}
a=0;
}
if(a==3){
printf("aparece un carro de derecha a izquierda\n\n");
if(t!=3){
++car[2];
printf("el carro frena hasta un cierto punto: IZQUIERDA\n\n");
if (car[2]>=2){
printf("frena detras del anterior: IZQUIERDA\n");
//aumenta el limite del carro
f1(&car[2]);
}
}
a=0;
}
if(a==4){
printf("aparece un carro de abajo a arriba\n\n");
if(t!=4){
++car[3];
printf("el carro frena hasta un cierto punto: ARRIBA\n\n");
if (car[3]>=2){
printf("frena detras del anterior: ARRIBA\n");
//aumenta el limite del carro
f1(&car[3]);
}
}
a=0;
}
if(imp==1)
{
if(t==1){
printf("el semaforo de la derecha esta en verde\n");
if(t==1&&car[0]>=1){
printf("el carro avanza\n\n\n\n");
car[0]=0;
}
//aumenta una variable para que el carro siga
}
else
printf("el semaforo de la derecha se pone en rojo\n");
printf("%d\n\n\n\n",car[0]);
if(t==2){
printf("el semaforo de abajo esta en verde\n");
if(t==2&&car[1]>=1){
printf("el carro avanza\n\n\n\n");
car[1]=0;
}
}
else
printf("el semaforo de abajo se pone en rojo\n");
printf("%d\n\n\n\n",car[1]);
if(t==3){
printf("el semaforo de la izquierda esta en verde\n");
if(t==3&&car[2]>=1){
printf("el carro avanza\n\n\n\n");
car[2]=0;
}
}
else
printf("el semaforo de la izquierda se pone en rojo\n");
printf("%d\n\n\n\n",car[2]);
if(t==4){
printf("el semaforo de arriba esta en verde\n");
if(t==4&&car[3]>=1){
printf("el carro avanza\n\n\n\n");
car[3]=0;
}
}
else
printf("el semaforo de arriba se pone en rojo\n");
printf("%d\n\n\n\n",car[3]);
imp=0;
}
}
getchar();
return 0;
}
int f1(int *r){
*r++;
}
int numero_random(){
srand(time(NULL)); //semilla
return (rand()%5); //rellena con numeros entre 0 y 199
}