Advertisement
Guest User

Untitled

a guest
Nov 14th, 2019
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.02 KB | None | 0 0
  1. #include <unistd.h>
  2. #include <pthread.h>
  3. #include <stdlib.h>
  4. #include <stdio.h>
  5. #include <ncurses.h>
  6. #include <time.h>
  7.  
  8. pthread_mutex_t nc = PTHREAD_MUTEX_INITIALIZER;
  9. pthread_t th[8];
  10.  
  11.  
  12. struct gracz_t{
  13. int ile;
  14. int x,y;
  15. };
  16.  
  17. int licznik=-1;
  18. int skarb=0;
  19. int znaleziony=1;
  20. int wsp_x=0,wsp_y=0;
  21.  
  22. void* draw_treasure(void*arg) {
  23.  
  24. while(licznik<10)
  25. {
  26. if(znaleziony)
  27. {
  28. move(wsp_x,wsp_y);
  29. printw(" ");
  30. refresh();
  31. srand(time(NULL));
  32. int gdzie_x=rand()%COLS;
  33. int gdzie_y=rand()%(LINES-5);
  34. wsp_x=gdzie_x;
  35. wsp_y=gdzie_y;
  36. move(gdzie_y,gdzie_x);
  37. printw("o");
  38. refresh();
  39. znaleziony=0;
  40. licznik++;
  41. }
  42.  
  43. struct gracz_t* gracz=(struct gracz_t*)arg;
  44. if(gracz->x==wsp_x&&gracz->y==wsp_y)
  45. {
  46. gracz->ile++;
  47. znaleziony=1;
  48. }
  49.  
  50.  
  51. }
  52.  
  53. return NULL;
  54. }
  55.  
  56. void* move_player(void*arg)
  57. {
  58. struct gracz_t* gracz=(struct gracz_t*)arg;
  59.  
  60. while(licznik<10)
  61. {
  62. move(gracz->y,gracz->x);
  63. printw("x");
  64. refresh();
  65. usleep(100000);
  66. printw(" ");
  67. if(gracz->x<wsp_x)
  68. gracz->x++;
  69. else if(gracz->y<wsp_y)
  70. gracz->y++;
  71. else if(gracz->x>wsp_x)
  72. gracz->x--;
  73. else if(gracz->y>wsp_y)
  74. gracz->y--;
  75. }
  76.  
  77. }
  78.  
  79. int main() {
  80. initscr();
  81. cbreak();
  82. noecho();
  83. curs_set(0);
  84.  
  85. srand(time(NULL));
  86. struct gracz_t gracze[4];
  87. for(int i=0;i<4;i++)
  88. {
  89. gracze[i].x=rand()%COLS;
  90. gracze[i].y=rand()%(LINES-5);
  91. }
  92.  
  93.  
  94.  
  95. for(int i=0;i<4;i++)
  96. {
  97. pthread_create(&th[i+4],NULL,draw_treasure,(void*)&gracze[i]);
  98. pthread_create(&th[i],NULL,move_player,(void*)&gracze[i]);
  99. //usleep(1000000);
  100. }
  101.  
  102.  
  103. getch();
  104. return 0;
  105. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement