Добавил:
Yanus
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:25 (Заправка)
.c#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);
}
Соседние файлы в предмете Операционные системы