Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

25 (Заправка)

.c
Скачиваний:
27
Добавлен:
15.06.2014
Размер:
3.5 Кб
Скачать
#include <stdio.h>
#include <pthread.h>
#include <semaphore.h>
//ЂЃ‚ѓ„…
sem_t sg,sk;
static pthread_t t[12];
char c='C';
int o1,o2,o3;

void car(void *n)
{
 int i,l,j;
 sleep(2*((int)n-1));
 for (i=1;i<=23;i+=2)
	{
	 printf("\033[19;%dH\033[1;32m%c\n",i,c);
	 usleep(700000);
	 printf("\033[19;%dH \n",i);
	}
 for (i=17;i>11;i-=2)
	{
	 printf("\033[%d;23H\033[1;32m%c\n",i,c);
	 usleep(700000);
	 printf("\033[%d;23H \n",i);
	}
 usleep(700000);
 o1++;
 for (i=37;i>37-o1;i--) printf("\033[13;%dH\033[1;32m%c\n",i,c);
 for (i=37-o1;i>24;i--) printf("\033[13;%dH \n",i);
 sem_wait(&sg);
 o1--;
 for (i=37;i>37-o1;i--) printf("\033[13;%dH\033[1;32m%c\n",i,c);
 for (i=37-o1;i>24;i--) printf("\033[13;%dH \n",i);
 o3++;
 if (o3==1) printf("\033[13;38H\033[35m%c\n",c);
 	else printf("\033[13;38H\033[35m%c  %c\n",c,c);
 sleep(15);
 o3--;
 printf("\033[13;38H    ");
 if (o3==1) printf("\033[13;38H\033[35m%c\n",c);
 if (o3==2) printf("\033[13;38H\033[35m%c  %c\n",c,c);
 sem_post(&sg);
 o2++;
 for (i=38;i>38-o2;i--) printf("\033[11;%dH\033[32mP\n",i);
 for (i=38-o2;i>26;i--) printf("\033[11;%dH \n",i);
 sem_wait(&sk);
 o2--;
 for (i=38;i>38-o2;i--) printf("\033[11;%dH\033[32mP\n",i);
 for (i=38-o2;i>26;i--) printf("\033[11;%dH \n",i);
 printf("\033[11;39H\033[1;35mP\n");
 sleep(10);
 printf("\033[11;39H \n");
 sem_post(&sk);
 for (i=11;i<19;i+=2)
	{
	 printf("\033[%d;56H\033[1;32m%c\n",i,c);
	 usleep(700000);
	 printf("\033[%d;56H \n",i);
	}
 for (i=56;i<=79;i+=2)
	{
	 printf("\033[19;%dH\033[1;32m%c\n",i,c);
	 usleep(700000);
	 printf("\033[19;%dH \n",i);
	}
 pthread_exit(0);
}

int main()
{
 int i,l,j;
// randomize();
 if (sem_init(&sg,0,2)==-1)
 	{
	 printf("ERROR");
         exit(1);
        }
 if (sem_init(&sk,0,1)==-1)
 	{
	 printf("ERROR");
         exit(1);
        }
 o1=0;
 o2=0;
 o3=0;
 printf("\033[1;44;33m\033[2J\n");
 for (i=0;i<80;i++) printf("\033[21;%dHЂ",i);            //нижняя длинная
 for (i=0;i<20;i++) printf("\033[17;%dHЂ",i);            //слева короткая
 printf("…");
 for (i=16;i>2;i--) printf("\033[%d;20HЃ",i);      //левая вертикальная
 printf("\033[2;20H‚");
 for (i=0;i<38;i++) printf("Ђ");                      //верхняя
 printf("ѓ");
 for (i=3;i<17;i++) printf("\033[%d;59HЃ",i);      //правая вертикальная
 printf("\033[17;59H„");
 for (i=0;i<20;i++) printf("Ђ");     //справа короткая
 printf("\033[15;26H‚");                          //
 for (i=0;i<26;i++) printf("Ђ");       //верхушка газона
 printf("ѓ\033[16;26HЃ\033[1;42;32m");                          //левый бок газона
 for (i=0;i<26;i++) printf(" ");
 printf("\033[1;44;33mЃ");
 printf("\033[17;26H„");                          //
 for (i=0;i<26;i++) printf("Ђ");       //низ газона
 printf("…");                          //
 printf("\033[4;29H‚");                          //
 for (i=0;i<20;i++) printf("Ђ");       //верх заправки
 printf("ѓ");                          //
 for (i=5;i<10;i++) printf("\033[%d;29HЃ",i);    //левый бок кассы
 for (i=5;i<10;i++) printf("\033[%d;50HЃ",i);    //левый бок кассы
 printf("\033[10;29H„");
 for (i=0;i<20;i++) printf("Ђ");       //низ кассы
 printf("…");                          //
 printf("\033[7;37H\033[44;36mSHELL");
 printf("\033[10;39H\033[44;31mЂЂ");
 printf("\033[14;38H»  »");                                  //колонки
 printf("\033[1;44;32m");
 fflush(stdout);
 for (i=1;i<=11;i++)
	{
	 pthread_create(&t[i],NULL,(void*)car,(void*)i);
	 sleep(2);
	}
 for (i=1;i<=11;i++) pthread_join(t[i],NULL);
// printf("\033[0m\033[2J\n");
 return(0);
}
Соседние файлы в предмете Операционные системы