Projekty z kursu Systemy operacyjne 2 na PWr
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

so2-center.cpp 1.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. #include <cstdlib>
  2. #include <ctime>
  3. #include <iostream>
  4. #include <mutex>
  5. #include <string>
  6. #include <thread>
  7. #include <vector>
  8. #include <ncurses.h>
  9. #include <unistd.h>
  10. #include "Entry.h"
  11. bool running = true;
  12. std::vector<Entry> entries;
  13. std::mutex display;
  14. // "Monitor" function
  15. void refreshScreen()
  16. {
  17. while(running == true)
  18. {
  19. clear();
  20. for(int i = 0; i < entries.size(); i++)
  21. {
  22. mvprintw(entries[i].getyPosition(), entries[i].getxPosition(), entries[i].getSymbol().c_str());
  23. }
  24. refresh();
  25. // Refresh every 0.01 s
  26. usleep(10000);
  27. }
  28. }
  29. int main()
  30. {
  31. int xMax, yMax, fallingBricks = 0;
  32. std::vector<std::thread> entriesThreads;
  33. srand(time(0));
  34. // Initialize ncurses
  35. initscr();
  36. curs_set(0);
  37. getmaxyx(stdscr, yMax, xMax);
  38. // Initialize scene
  39. Entry::initScene(xMax, yMax);
  40. // Start monitor
  41. std::thread monitor(refreshScreen);
  42. for(int i = 0; i < 15; i++)
  43. {
  44. entries.push_back(*(new Entry(rand() % 6)));
  45. }
  46. for(int i = 0; i < entries.size(); i++)
  47. {
  48. unsigned randTime = rand() % 3 + 1;
  49. sleep(1 * randTime);
  50. entriesThreads.push_back(entries[i].runThread());
  51. }
  52. // Wait for all entries
  53. for(int i = 0; i < entriesThreads.size(); i++)
  54. {
  55. entriesThreads.at(i).join();
  56. }
  57. // Stop monitor
  58. sleep(1);
  59. running = false;
  60. monitor.join();
  61. // Close ncurses
  62. endwin();
  63. std::cout << "SYncsys Next Caban SYStem v1.1" << std::endl;
  64. std::cout << "Jan Potocki 2018" << std::endl;
  65. std::cout << "(beerware)" << std::endl;
  66. std::cout << std::endl;
  67. std::cout << '"' << "...And now the times have changed" << std::endl;
  68. std::cout << "Repos on the web, git," << std::endl;
  69. std::cout << "Now githubs everywhere." << std::endl;
  70. std::cout << "Not like the winter of '95..." << '"' << std::endl;
  71. return 0;
  72. }