Advertisement
Guest User

///TheGame///

a guest
Nov 17th, 2017
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 58.20 KB | None | 0 0
  1. /// The Code is not well written, I have made a lot of wrong programming decisions.
  2. /// I pointed some with comments, but there are much more "quick fixes" to problems
  3. /// which lead to spaghetti code.
  4.  
  5. /// Either way console game never will be actually really good because of limitations
  6. /// (of course except things like text-based games)
  7. #include <iostream>
  8. #include <cstdlib>
  9. #include <windows.h>
  10. #include <time.h>
  11. #include <fstream>
  12. #include <conio.h>
  13. using namespace std;
  14.  
  15. class Player
  16. {
  17. public:
  18.     int x;
  19.     int y;
  20.     int lifes;
  21.     int ammunition;
  22.     int respawnTime;
  23.     char movingDirection;   /// As in 'w' = UP; 's' = DOWN; 'a' = LEFT; 'd' = RIGHT
  24.     bool lostLife;
  25.     int checkPoint;
  26. };
  27. class PickUp
  28. {
  29. public:
  30.     int x;
  31.     int y;
  32.     bool exists;
  33. };
  34.  
  35. class CannonHorizontal        /// CannonHorizontal and CannonVertical should have been same object with "direction" variable
  36. {
  37. public:
  38.     int x;
  39.     int y;
  40.     char shootingDirection;   /// As in 'w' = UP; 's' = DOWN; 'a' = LEFT; 'd' = RIGHT
  41.     int speed;
  42.     bool exists;
  43. };
  44. class CannonVertical          /// CannonHorizontal and CannonVertical should have been same object with "direction" variable
  45. {
  46. public:
  47.     int x;
  48.     int y;
  49.     char shootingDirection;   /// As in 'w' = UP; 's' = DOWN; 'a' = LEFT; 'd' = RIGHT
  50.     int speed;
  51.     bool exists;
  52. };
  53.  
  54. class RunnerHorizontal         /// Runner = name of the green enemy that bounces between walls
  55. {                              /// Same mistake as cannons, but I haven't made the vertical version
  56. public:
  57.     int x;
  58.     int y;
  59.     int lifes;
  60.     char movingDirection;      /// As in 'w' = UP; 's' = DOWN; 'a' = LEFT; 'd' = RIGHT
  61. };
  62.  
  63. class Randomer                 /// Randomer = name of the violet enemy that moves randomly in certain area
  64. {
  65. public:
  66.     int x;
  67.     int y;
  68.     int xMax;
  69.     int xMin;
  70.     int yMax;
  71.     int yMin;
  72.     int lifes;
  73.     bool successfulMove;
  74.     int speed;
  75. };
  76. class Chaser                   /// Chaser = name of the blue enemy that chaises you || Works very badly in the game :)
  77. {
  78. public:
  79.     int x;
  80.     int y;
  81.     bool exists;
  82.     int speed();
  83. };
  84.  
  85. class Bullet
  86. {
  87. public:
  88.     int x;
  89.     int y;
  90.     char movingDirection;       /// As in 'w' = UP; 's' = DOWN; 'a' = LEFT; 'd' = RIGHT
  91.     bool exists;
  92.     bool firstOccurrence;
  93. };
  94.  
  95. Player player;
  96. int framesDelay;
  97. int bossLife;       /// Why the fuck is it a global variable?
  98. bool bossPlaced=false;      /// Why the fuck is it a global variable?
  99. bool chasersPlaced=false;       /// Why the fuck is it a global variable?
  100. char c;     /// Why the fuck is it a global variable?
  101. bool exitConsole=false;
  102. bool inGame;
  103. Chaser chaser[30];
  104. PickUp pickUp[40];
  105. Randomer randomer[50];
  106. CannonHorizontal cannonHorizontal[50];
  107. CannonVertical cannonVertical[50];
  108. RunnerHorizontal runnerHorizontal[100];
  109. Bullet bullet[400];
  110. int nrBullet;       /// Bullet number is a shitty solution to a problem made by not using dynamic arrays or vectors
  111. int frameCount; /// for game objects -> instead of adding and removing bullets from array they get a number
  112.                     /// which represents its position in static array
  113. void gotoxy(int x, int y)
  114. {
  115.   COORD coord;
  116.   coord.X = x;
  117.   coord.Y = y;
  118.   SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
  119. }
  120. char getCursorChar()    /// Function which returns character on console's cursor position || Totally not copied from the Internet
  121. {
  122.     char c = '\0';
  123.     CONSOLE_SCREEN_BUFFER_INFO con;
  124.     HANDLE hcon = GetStdHandle(STD_OUTPUT_HANDLE);
  125.     if (hcon != INVALID_HANDLE_VALUE &&
  126.         GetConsoleScreenBufferInfo(hcon,&con))
  127.     {
  128.         DWORD read = 0;
  129.         if (!ReadConsoleOutputCharacterA(hcon,&c,1,
  130.             con.dwCursorPosition,&read) || read != 1
  131.             )
  132.             c = '\0';
  133.     }
  134.     return c;
  135. }
  136.  
  137.  
  138. void loadLevelBase(string fileName)    /// Function which loads static level walls from text file
  139. {
  140.     string getContent;
  141.     ifstream openfile(fileName.c_str());
  142.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
  143.     if(openfile.is_open())
  144.     {
  145.         while(! openfile.eof())
  146.         {
  147.             getline(openfile, getContent);
  148.             cout << getContent << endl;
  149.         }
  150.     }
  151. }
  152.  
  153.  
  154. char readChar(int x,int y)  /// Function which reads character at specific coordinates
  155. {
  156.     gotoxy(x,y);
  157.     char ccccc = getCursorChar();
  158.     return ccccc;
  159. }
  160.  
  161. void createMovableBox(int x,int y)
  162. {
  163.     gotoxy(x,y);
  164.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),8);
  165.     cout<<"@";
  166. }
  167. void createChaser(int id,int x,int y)
  168. {
  169.     chaser[id].x=x;
  170.     chaser[id].y=y;
  171.     chaser[id].exists=true;
  172.     gotoxy(x,y);
  173.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),9);
  174.     cout<<"&";
  175. }
  176.  
  177. void createCannonHorizontal(int id, int x,int y, char shootingDirection,int speed)
  178. {
  179.     cannonHorizontal[id].x=x;
  180.     cannonHorizontal[id].y=y;
  181.     cannonHorizontal[id].shootingDirection=shootingDirection;
  182.     cannonHorizontal[id].speed=speed;
  183.     cannonHorizontal[id].exists=true;
  184.     gotoxy(x,y);
  185.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),12);
  186.     cout<<"-";
  187. }
  188. void createCannonVertical(int id, int x,int y, char shootingDirection,int speed)
  189. {
  190.     cannonVertical[id].x=x;
  191.     cannonVertical[id].y=y;
  192.     cannonVertical[id].shootingDirection=shootingDirection;
  193.     cannonVertical[id].speed=speed;
  194.     cannonVertical[id].exists=true;
  195.     gotoxy(x,y);
  196.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),12);
  197.     cout<<"|";
  198. }
  199.  
  200. void createRandomer(int id,int x,int y, int lifes,int range,int speed)
  201. {
  202.     randomer[id].x=x;
  203.     randomer[id].y=y;
  204.     randomer[id].xMin=x-range;
  205.     randomer[id].yMin=y-range;
  206.     randomer[id].xMax=x+range;
  207.     randomer[id].yMax=y+range;
  208.     randomer[id].lifes=lifes;
  209.     randomer[id].speed=speed;
  210.     gotoxy(x,y);
  211.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),13);
  212.     cout<<"%";
  213. }
  214.  
  215. void createRunnerHorizontal(int id,int x,int y,char movingDirection,int lifes)
  216. {
  217.     runnerHorizontal[id].x=x;
  218.     runnerHorizontal[id].y=y;
  219.     runnerHorizontal[id].lifes=lifes;
  220.     runnerHorizontal[id].movingDirection=movingDirection;
  221.     gotoxy(x,y);
  222.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10);
  223.     cout<<"S";
  224. }
  225. void createPickUpLife(int id,int x,int y)
  226. {
  227.     pickUp[id].exists=true;
  228.     pickUp[id].x=x;
  229.     pickUp[id].y=y;
  230.     gotoxy(x,y);
  231.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
  232.     cout<<"+";
  233. }
  234.  
  235. void createPickUpAmunicja(int id,int x,int y)
  236. {
  237.     pickUp[id].exists=true;
  238.     pickUp[id].x=x;
  239.     pickUp[id].y=y;
  240.     gotoxy(x,y);
  241.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),14);
  242.     cout<<"A";
  243. }
  244.  
  245. void createPickUpCheckPoint(int id,int x,int y)
  246. {
  247.     pickUp[id].exists=true;
  248.     pickUp[id].x=x;
  249.     pickUp[id].y=y;
  250.     gotoxy(x,y);
  251.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),240);
  252.     cout<<"C";
  253. }
  254.  
  255.  
  256. void createBoss()   /// Should have read all the information from external file
  257. {
  258.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),8);
  259.     gotoxy(69,19);
  260.     cout<<"XXXXXXX";
  261.     gotoxy(68,20);
  262.     cout<<"XXXXXXXXX";
  263.     gotoxy(67,21);
  264.     cout<<"XXXXXXXXXXX";
  265.     gotoxy(66,22);
  266.     cout<<"XXXXXXXXXXXXX";
  267.     gotoxy(66,23);
  268.     cout<<"XXX XXXXX XXX";
  269.     gotoxy(66,24);
  270.     cout<<"XX   XXX   XX";
  271.     gotoxy(66,25);
  272.     cout<<"XXX XX XX XXX";
  273.     gotoxy(66,26);
  274.     cout<<"XXXXXX XXXXXX";
  275.     gotoxy(67,27);
  276.     cout<<"XXXXXXXXXXX";
  277.     gotoxy(67,28);
  278.     cout<<"X  XXXXX  X";
  279.     gotoxy(67,29);
  280.     cout<<"XX X X X XX";
  281.     gotoxy(68,30);
  282.     cout<<"X       X";
  283.     gotoxy(68,31);
  284.     cout<<"X       X";
  285.     gotoxy(68,32);
  286.     cout<<"XX X X XX";
  287.     gotoxy(68,33);
  288.     cout<<"XXXXXXXXX";
  289.     gotoxy(69,34);
  290.     cout<<"XXXXXXX";
  291.     gotoxy(70,35);
  292.     cout<<"XXXXX";
  293.     gotoxy(70,36);
  294.     cout<<"XXXXX";
  295.  
  296.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
  297.     gotoxy(85,14);
  298.     cout<<"#";
  299.  
  300.     for(int i=0; i<=2;i++)
  301.     {
  302.         createCannonHorizontal(20+i,60,16+i,'d',30);
  303.     }
  304.     createCannonHorizontal(23,85,17,'a',30);
  305.     createCannonHorizontal(24,85,18,'a',30);
  306.  
  307.     createCannonHorizontal(25,60,34,'d',30);
  308.     createCannonHorizontal(26,68,34,'a',28);
  309.     createCannonHorizontal(27,76,34,'d',28);
  310.     createCannonHorizontal(28,85,34,'a',30);
  311.     createCannonHorizontal(29,69,35,'a',20);
  312.     createCannonHorizontal(30,75,35,'d',20);
  313.     createCannonHorizontal(31,69,36,'a',20);
  314.     createCannonHorizontal(32,75,36,'d',20);
  315.  
  316.     createRunnerHorizontal(43,60,15,'d',2);
  317.  
  318.     createRunnerHorizontal(44,60,19,'a',2);
  319.     createRunnerHorizontal(45,60,20,'a',2);
  320.     createRunnerHorizontal(46,85,19,'d',2);
  321.     createRunnerHorizontal(47,85,20,'d',2);
  322.     createRunnerHorizontal(48,60,27,'d',2);
  323.  
  324.     createRandomer(8,82,24,2,3,2);
  325.     createRandomer(9,63,24,2,2,3);
  326.  
  327.     createRandomer(10,82,29,2,4,2);
  328.     createRandomer(11,64,31,2,2,3);
  329.  
  330.     for (int i=0; i<=7;i++)
  331.         {
  332.             createPickUpAmunicja(12+i,60+i,36);
  333.             createPickUpAmunicja(19+i,78+i,36);
  334.         }
  335. }
  336.  
  337. void createBossDefeated()
  338. {
  339.     for (int j=0;j<=4;j++)
  340.     {
  341.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),8);
  342.         gotoxy(69,19);
  343.         cout<<"XXXXXXX";
  344.         gotoxy(68,20);
  345.         cout<<"XXXXXXXXX";
  346.         gotoxy(67,21);
  347.         cout<<"XXXXXXXXXXX";
  348.         gotoxy(66,22);
  349.         cout<<"XXXXXXXXXXXXX";
  350.         gotoxy(66,23);
  351.         cout<<"XXX XXXXX XXX";
  352.         gotoxy(66,24);
  353.         cout<<"XX   XXX   XX";
  354.         gotoxy(66,25);
  355.         cout<<"XXX XX XX XXX";
  356.         gotoxy(66,26);
  357.         cout<<"XXXXXX XXXXXX";
  358.         gotoxy(67,27);
  359.         cout<<"XXXXXXXXXXX";
  360.         gotoxy(67,28);
  361.         cout<<"X  XXXXX  X";
  362.         gotoxy(67,29);
  363.         cout<<"XX X X X XX";
  364.         gotoxy(68,30);
  365.         cout<<"X       X";
  366.         gotoxy(68,31);
  367.         cout<<"X       X";
  368.         gotoxy(68,32);
  369.         cout<<"XX X X XX";
  370.         gotoxy(68,33);
  371.         cout<<"XXXXXXXXX";
  372.         gotoxy(69,34);
  373.         cout<<"XXXXXXX";
  374.         gotoxy(70,35);
  375.         cout<<"XXXXX";
  376.         gotoxy(70,36);
  377.         cout<<"XXXXX";
  378.         Sleep(200);
  379.         for(int i=0;i<=18;i++)
  380.         {
  381.             gotoxy(65,18+i);
  382.             cout<<"               ";
  383.         }
  384.         Sleep(200);
  385.     }
  386. }
  387.  
  388. void createBossFirstTime()
  389. {
  390.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),8);
  391.     gotoxy(69,19);
  392.     cout<<"XXXXXXX";
  393.     Sleep(50);
  394.     gotoxy(68,20);
  395.     cout<<"XXXXXXXXX";
  396.     Sleep(50);
  397.     gotoxy(67,21);
  398.     cout<<"XXXXXXXXXXX";
  399.     Sleep(50);
  400.     gotoxy(66,22);
  401.     cout<<"XXXXXXXXXXXXX";
  402.     Sleep(50);
  403.     gotoxy(66,23);
  404.     cout<<"XXX XXXXX XXX";
  405.     Sleep(50);
  406.     gotoxy(66,24);
  407.     cout<<"XX   XXX   XX";
  408.     Sleep(50);
  409.     gotoxy(66,25);
  410.     cout<<"XXX XX XX XXX";
  411.     Sleep(50);
  412.     gotoxy(66,26);
  413.     cout<<"XXXXXX XXXXXX";
  414.     Sleep(50);
  415.     gotoxy(67,27);
  416.     cout<<"XXXXXXXXXXX";
  417.     Sleep(50);
  418.     gotoxy(67,28);
  419.     cout<<"X  XXXXX  X";
  420.     Sleep(50);
  421.     gotoxy(67,29);
  422.     cout<<"XX X X X XX";
  423.     Sleep(50);
  424.     gotoxy(68,30);
  425.     cout<<"X       X";
  426.     Sleep(50);
  427.     gotoxy(68,31);
  428.     cout<<"X       X";
  429.     Sleep(50);
  430.     gotoxy(68,32);
  431.     cout<<"XX X X XX";
  432.     Sleep(50);
  433.     gotoxy(68,33);
  434.     cout<<"XXXXXXXXX";
  435.     Sleep(50);
  436.     gotoxy(69,34);
  437.     cout<<"XXXXXXX";
  438.     Sleep(50);
  439.     gotoxy(70,35);
  440.     cout<<"XXXXX";
  441.     Sleep(50);
  442.     gotoxy(70,36);
  443.     cout<<"XXXXX";
  444.     Sleep(50);
  445.     createBoss();
  446. }
  447.  
  448. void loadLevelObjects(int levelNumber)    /// Should have read all the information from external file
  449. {
  450.     if (levelNumber==1)
  451.     {
  452.         createMovableBox(53,31);
  453.         createMovableBox(56,33);
  454.         createMovableBox(57,34);
  455.         for (int i=0; i<=3; i++)
  456.         {
  457.             createMovableBox(52,15+i*2);
  458.         }
  459.         createMovableBox(53,15);
  460.         for (int i=0; i<=2; i++)
  461.         {
  462.             createMovableBox(53,16+i*2);
  463.         }
  464.         for (int i=0; i<=3; i++)
  465.         {
  466.             createMovableBox(54,15+i*2);
  467.         }
  468.         for (int i=0; i<=1; i++)
  469.         {
  470.             createMovableBox(55,16+i*2);
  471.         }
  472.         for (int i=0; i<=2; i++)
  473.         {
  474.             createMovableBox(56,15+i*2);
  475.         }
  476.         createMovableBox(13,25);
  477.  
  478.         createMovableBox(1,13);
  479.         createMovableBox(2,12);
  480.         createMovableBox(2,11);
  481.         createMovableBox(2,10);
  482.         createMovableBox(3,11);
  483.         createMovableBox(4,12);
  484.         createMovableBox(4,11);
  485.         createMovableBox(5,10);
  486.         createMovableBox(1,9);
  487.         createMovableBox(3,8);
  488.  
  489.         createMovableBox(4,9);
  490.         createMovableBox(4,13);
  491.         createMovableBox(6,12);
  492.         createMovableBox(7,11);
  493.         createMovableBox(8,10);
  494.         createMovableBox(9,9);
  495.         createMovableBox(10,8);
  496.         createMovableBox(11,9);
  497.         createMovableBox(11,12);
  498.         createMovableBox(6,13);
  499.  
  500.         createMovableBox(35,12);
  501.         createMovableBox(35,13);
  502.         createMovableBox(36,12);
  503.         createMovableBox(34,13);
  504.  
  505.         createMovableBox(34,7);
  506.         createMovableBox(34,8);
  507.         createMovableBox(34,6);
  508.  
  509.         createMovableBox(35,7);
  510.         createMovableBox(35,8);
  511.         createMovableBox(36,8);
  512.  
  513.         createMovableBox(35,10);
  514.  
  515.         for (int i=0; i<=4; i++)
  516.         {
  517.             createMovableBox(36+i,9);
  518.             createMovableBox(36+i,11);
  519.         }
  520.         createMovableBox(52,3);
  521.         createMovableBox(42,13);
  522.  
  523.  
  524. //---------------------------------------------------------------
  525.         createCannonHorizontal(1,11,28,'d',35);
  526.  
  527.         createCannonHorizontal(2,54,29,'a',20);
  528.         createCannonHorizontal(3,54,33,'a',15);
  529.  
  530.         createCannonHorizontal(4,58,23,'a',3);
  531.         createCannonHorizontal(5,58,24,'a',3);
  532.         createCannonHorizontal(6,58,25,'a',3);
  533.  
  534.         for (int i=0; i<=5; i++)
  535.         {
  536.             createCannonHorizontal(7+i,17,1+i,'d',40-i*3);
  537.         }
  538.         createCannonHorizontal(13,33,6,'a',30);
  539.  
  540.         for (int i=0; i<=4; i++)
  541.         {
  542.             createCannonHorizontal(14+i,85,2+i,'a',50-i*5);
  543.         }
  544. //---------------------------------------------------------------
  545.         createCannonVertical(1,5,25,'s',40);
  546.  
  547.         createCannonVertical(2,26,29,'s',30);
  548.         createCannonVertical(3,27,29,'s',40);
  549.         createCannonVertical(4,28,29,'s',35);
  550.         createCannonVertical(5,29,29,'s',50);
  551.  
  552.         createCannonVertical(6,31,29,'s',25);
  553.         createCannonVertical(7,32,29,'s',30);
  554.         createCannonVertical(8,33,29,'s',35);
  555.         createCannonVertical(9,34,29,'s',40);
  556.         createCannonVertical(10,35,29,'s',45);
  557.         createCannonVertical(11,36,29,'s',50);
  558.  
  559.         createCannonVertical(12,41,36,'w',20);
  560.         createCannonVertical(13,43,36,'w',20);
  561.         createCannonVertical(14,45,36,'w',20);
  562.         createCannonVertical(15,47,36,'w',20);
  563.  
  564.         createCannonVertical(16,47,15,'s',1);
  565.  
  566.         createCannonVertical(17,13,26,'w',2);
  567.  
  568.         createCannonVertical(18,5,15,'s',40);
  569.  
  570.         for (int i=0; i<=14; i++)
  571.         {
  572.             createCannonVertical(19+i,18+i,8,'s',2);
  573.         }
  574.  
  575.         for (int i=0; i<=5; i++)
  576.         {
  577.             createCannonVertical(34+i,78+i,1,'s',25+i*3);
  578.         }
  579.  
  580. //---------------------------------------------------------------
  581.  
  582.         createRunnerHorizontal(1,7,33,'d',2);
  583.         createRunnerHorizontal(2,13,31,'a',2);
  584.  
  585.         createRunnerHorizontal(3,38,33,'d',2);
  586.         createRunnerHorizontal(4,40,32,'d',2);
  587.         createRunnerHorizontal(5,42,31,'a',2);
  588.         createRunnerHorizontal(6,44,30,'d',2);
  589.         createRunnerHorizontal(7,46,29,'d',2);
  590.  
  591.         createRunnerHorizontal(8,48,28,'d',2);
  592.         createRunnerHorizontal(9,54,30,'a',2);
  593.         createRunnerHorizontal(10,54,34,'a',2);
  594.  
  595.         createRunnerHorizontal(11,7,17,'d',2);
  596.         createRunnerHorizontal(12,22,18,'a',2);
  597.         createRunnerHorizontal(13,7,19,'d',2);
  598.         createRunnerHorizontal(14,22,20,'a',2);
  599.         createRunnerHorizontal(15,7,21,'d',2);
  600.         createRunnerHorizontal(16,22,22,'a',2);
  601.         createRunnerHorizontal(17,7,23,'d',2);
  602.         createRunnerHorizontal(18,22,24,'a',2);
  603.  
  604.         createRunnerHorizontal(19,1,2,'a',2);
  605.         createRunnerHorizontal(20,2,3,'d',2);
  606.         createRunnerHorizontal(23,8,2,'a',2);
  607.         createRunnerHorizontal(24,7,3,'a',2);
  608.         createRunnerHorizontal(27,9,4,'a',2);
  609.         createRunnerHorizontal(28,9,3,'a',2);
  610.         createRunnerHorizontal(29,15,4,'a',2);
  611.         createRunnerHorizontal(30,15,5,'a',2);
  612.  
  613.         createRunnerHorizontal(31,36,10,'d',2);
  614.  
  615.         createRunnerHorizontal(32,37,7,'d',2);
  616.         createRunnerHorizontal(33,37,8,'d',2);
  617.         createRunnerHorizontal(34,37,12,'d',2);
  618.         createRunnerHorizontal(35,37,13,'d',2);
  619.         createRunnerHorizontal(36,36,6,'d',2);
  620.  
  621.         createRunnerHorizontal(37,59,11,'d',2);
  622.         createRunnerHorizontal(38,64,12,'d',2);
  623.         createRunnerHorizontal(39,62,13,'d',2);
  624.         createRunnerHorizontal(40,75,11,'d',2);
  625.         createRunnerHorizontal(42,77,13,'d',2);
  626. //---------------------------------------------------------------
  627.         if (player.checkPoint>=4)
  628.         {
  629.             createChaser(1,42,9);
  630.             createChaser(2,45,13);
  631.             createChaser(3,42,4);
  632.             createChaser(4,51,7);
  633.             createChaser(5,55,7);
  634.             createChaser(6,59,7);
  635.             createChaser(7,61,7);
  636.         }
  637.         if (player.checkPoint>=5)
  638.         {
  639.             createBoss();
  640.         }
  641. //---------------------------------------------------------------
  642.         createRandomer(1,18,33,2,3,3);
  643.         createRandomer(2,30,21,2,6,3);
  644.  
  645.         createRandomer(3,41,18,2,3,2);
  646.         createRandomer(4,30,21,2,6,2);
  647.         createRandomer(5,30,21,2,6,3);
  648.         createRandomer(6,30,21,2,6,3);
  649. //---------------------------------------------------------------
  650.         if (pickUp[1].exists==true)
  651.         {
  652.             createPickUpAmunicja(1,15,36);
  653.         }
  654.         if (pickUp[2].exists==true)
  655.         {
  656.             createPickUpAmunicja(2,8,1);
  657.         }
  658.         if (pickUp[3].exists==true)
  659.         {
  660.             createPickUpLife(3,40,35);
  661.         }
  662.         if (pickUp[4].exists==true)
  663.         {
  664.             createPickUpLife(4,25,15);
  665.         }
  666.         if (pickUp[5].exists==true)
  667.         {
  668.             createPickUpLife(5,22,6);
  669.         }
  670.         if (pickUp[6].exists==true)
  671.         {
  672.             createPickUpCheckPoint(6,56,22);
  673.         }
  674.         if (pickUp[7].exists==true)
  675.         {
  676.             createPickUpCheckPoint(7,4,23);
  677.         }
  678.         if (pickUp[8].exists==true)
  679.         {
  680.             createPickUpCheckPoint(8,33,11);
  681.         }
  682.         if (pickUp[9].exists==true)
  683.         {
  684.             createPickUpCheckPoint(9,42,12);
  685.         }
  686.         if (pickUp[10].exists==true)
  687.         {
  688.             createPickUpLife(10,58,12);
  689.         }
  690.         if (pickUp[11].exists==true)
  691.         {
  692.             createPickUpCheckPoint(11,85,15);
  693.         }
  694.     }
  695. }
  696.  
  697. int collisionRandomer(int id,char movingDirection)
  698. {
  699.     if(movingDirection=='w')
  700.     {
  701.         if ((readChar(randomer[id].x,randomer[id].y-1)==' ')||(readChar(randomer[id].x,randomer[id].y-1)=='%'))
  702.         {
  703.             return 0;
  704.         }else if ((readChar(randomer[id].x,randomer[id].y-1)=='#') || (readChar(randomer[id].x,randomer[id].y-1)=='@')|| (readChar(randomer[id].x,randomer[id].y-1)=='-')|| (readChar(randomer[id].x,randomer[id].y-1)=='|')|| (readChar(randomer[id].x,randomer[id].y-1)=='A')|| (readChar(randomer[id].x,randomer[id].y-1)=='+')|| (readChar(randomer[id].x,randomer[id].y-1)=='S')|| (readChar(randomer[id].x,randomer[id].y-1)=='%')|| (readChar(randomer[id].x,randomer[id].y-1)=='X'))
  705.         {
  706.             return 2;
  707.         }else return 1;
  708.     }
  709.     if(movingDirection=='s')
  710.     {
  711.         if ((readChar(randomer[id].x,randomer[id].y+1)==' ')||(readChar(randomer[id].x,randomer[id].y+1)=='%'))
  712.         {
  713.             return 0;
  714.         }else if ((readChar(randomer[id].x,randomer[id].y+1)=='#') || (readChar(randomer[id].x,randomer[id].y+1)=='@')|| (readChar(randomer[id].x,randomer[id].y+1)=='-')|| (readChar(randomer[id].x,randomer[id].y+1)=='|')|| (readChar(randomer[id].x,randomer[id].y+1)=='A')|| (readChar(randomer[id].x,randomer[id].y+1)=='+')|| (readChar(randomer[id].x,randomer[id].y+1)=='S')|| (readChar(randomer[id].x,randomer[id].y+1)=='%')|| (readChar(randomer[id].x,randomer[id].y+1)=='X'))
  715.         {
  716.             return 2;
  717.         }else return 1;
  718.     }
  719.     if(movingDirection=='a')
  720.     {
  721.         if ((readChar(randomer[id].x-1,randomer[id].y)==' ')||(readChar(randomer[id].x-1,randomer[id].y)=='%'))
  722.         {
  723.             return 0;
  724.         }else if ((readChar(randomer[id].x-1,randomer[id].y)=='#') || (readChar(randomer[id].x-1,randomer[id].y)=='@')|| (readChar(randomer[id].x-1,randomer[id].y)=='-')|| (readChar(randomer[id].x-1,randomer[id].y)=='|')|| (readChar(randomer[id].x-1,randomer[id].y)=='A')|| (readChar(randomer[id].x-1,randomer[id].y)=='+')|| (readChar(randomer[id].x-1,randomer[id].y)=='S')|| (readChar(randomer[id].x-1,randomer[id].y)=='%')|| (readChar(randomer[id].x-1,randomer[id].y)=='X'))
  725.         {
  726.             return 2;
  727.         }else return 1;
  728.     }
  729.     if (movingDirection=='d')
  730.     {
  731.         if ((readChar(randomer[id].x+1,randomer[id].y)==' ')||(readChar(randomer[id].x+1,randomer[id].y)=='%'))
  732.         {
  733.             return 0;
  734.         }else if ((readChar(randomer[id].x+1,randomer[id].y)=='#') || (readChar(randomer[id].x+1,randomer[id].y)=='@')|| (readChar(randomer[id].x+1,randomer[id].y)=='-')|| (readChar(randomer[id].x+1,randomer[id].y)=='|')|| (readChar(randomer[id].x+1,randomer[id].y)=='A')|| (readChar(randomer[id].x+1,randomer[id].y)=='+')|| (readChar(randomer[id].x+1,randomer[id].y)=='S')|| (readChar(randomer[id].x+1,randomer[id].y)=='%')|| (readChar(randomer[id].x+1,randomer[id].y)=='X'))
  735.         {
  736.             return 2;
  737.         }else return 1;
  738.     }
  739. }
  740. void update()
  741. {
  742.     if ((player.checkPoint==4) && (chasersPlaced==false))
  743.     {
  744.         createChaser(1,42,9);
  745.         createChaser(2,45,13);
  746.         createChaser(3,42,4);
  747.         createChaser(4,51,7);
  748.         createChaser(5,55,7);
  749.         createChaser(6,59,7);
  750.         createChaser(7,61,7);
  751.         chasersPlaced=true;
  752.     }
  753.     if ((player.checkPoint==5)&& (bossPlaced==false))
  754.     {
  755.         createBossFirstTime();
  756.         bossPlaced=true;
  757.     }
  758.     if ((c=='w')|| (c=='s') || (c=='a') || (c=='d'))
  759.     {
  760.         if (c=='w')
  761.         {
  762.             player.movingDirection='w';
  763.             gotoxy(player.x,player.y);
  764.             cout<<" ";
  765.             if ((readChar(player.x,player.y-1)!= '#') && (readChar(player.x,player.y-1)!= '-') && (readChar(player.x,player.y-1)!= '|')&& (readChar(player.x,player.y-1)!= 'X'))
  766.             {
  767.                 if (readChar(player.x,player.y-1)=='@')
  768.                 {
  769.                     if ((readChar(player.x,player.y-2)==' ') || (readChar(player.x,player.y-2)=='o'))
  770.                     {
  771.                         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),8);
  772.                         gotoxy(player.x,player.y-2);
  773.                         cout<<"@";
  774.                         player.y-=1;
  775.                     }
  776.                 }else
  777.                 {
  778.                     player.y-=1;
  779.                 }
  780.             }
  781.         }
  782.  
  783.         if (c=='s')
  784.         {
  785.             player.movingDirection='s';
  786.             gotoxy(player.x,player.y);
  787.             cout<<" ";
  788.             if ((readChar(player.x,player.y+1)!= '#') && (readChar(player.x,player.y+1)!= '-') && (readChar(player.x,player.y+1)!= '|')&& (readChar(player.x,player.y+1)!= 'X'))
  789.             {
  790.                 if (readChar(player.x,player.y+1)=='@')
  791.                 {
  792.                     if ((readChar(player.x,player.y+2)==' ') || (readChar(player.x,player.y+2)=='o'))
  793.                     {
  794.                         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),8);
  795.                         gotoxy(player.x,player.y+2);
  796.                         cout<<"@";
  797.                         player.y+=1;
  798.                     }
  799.                 }else
  800.                 {
  801.                     player.y+=1;
  802.                 }
  803.             }
  804.         }
  805.  
  806.         if (c=='a')
  807.         {
  808.             player.movingDirection='a';
  809.             gotoxy(player.x,player.y);
  810.             cout<<" ";
  811.             if ((readChar(player.x-1,player.y)!= '#') && (readChar(player.x-1,player.y)!= '-') && (readChar(player.x-1,player.y)!= '|')&& (readChar(player.x-1,player.y)!= 'X'))
  812.             {
  813.                 if (readChar(player.x-1,player.y)=='@')
  814.                 {
  815.                     if ((readChar(player.x-2,player.y)==' ') || (readChar(player.x-2,player.y)=='o'))
  816.                     {
  817.                         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),8);
  818.                         gotoxy(player.x-2,player.y);
  819.                         cout<<"@";
  820.                         player.x-=1;
  821.                     }
  822.                 }else
  823.                 {
  824.                     player.x-=1;
  825.                 }
  826.             }
  827.         }
  828.  
  829.         if (c=='d')
  830.         {
  831.             player.movingDirection='d';
  832.             gotoxy(player.x,player.y);
  833.             cout<<" ";
  834.             if ((readChar(player.x+1,player.y)!= '#') && (readChar(player.x+1,player.y)!= '-') && (readChar(player.x+1,player.y)!= '|')&& (readChar(player.x+1,player.y)!= 'X'))
  835.             {
  836.                 if (readChar(player.x+1,player.y)=='@')
  837.             {
  838.                     if ((readChar(player.x+2,player.y)==' ') || (readChar(player.x+2,player.y)=='o'))
  839.                     {
  840.                         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),8);
  841.                         gotoxy(player.x+2,player.y);
  842.                         cout<<"@";
  843.                         player.x+=1;
  844.                     }
  845.                 }else
  846.                 {
  847.                     player.x+=1;
  848.                 }
  849.             }
  850.         }
  851.         if (readChar(player.x,player.y)== 'A')
  852.         {
  853.             player.ammunition+=5;
  854.             for(int i=0; i<=20; i++)
  855.             {
  856.                 if ((player.x==pickUp[i].x) && (player.y==pickUp[i].y))
  857.                 {
  858.                     pickUp[i].exists=false;
  859.                 }
  860.             }
  861.         }
  862.         if (readChar(player.x,player.y)== '+')
  863.         {
  864.             player.lifes+=1;
  865.             for(int i=0; i<=20; i++)
  866.             {
  867.                 if ((player.x==pickUp[i].x) && (player.y==pickUp[i].y))
  868.                 {
  869.                     pickUp[i].exists=false;
  870.                 }
  871.             }
  872.         }
  873.         if (readChar(player.x,player.y)== 'C')
  874.         {
  875.             player.checkPoint+=1;
  876.             for(int i=0; i<=20; i++)
  877.             {
  878.                 if ((player.x==pickUp[i].x) && (player.y==pickUp[i].y))
  879.                 {
  880.                     pickUp[i].exists=false;
  881.                 }
  882.             }
  883.         }
  884.         if (readChar(player.x,player.y)== 'S')
  885.         {
  886.             player.lifes-=1;
  887.             player.lostLife=true;
  888.         }
  889.         if (readChar(player.x,player.y)== '%')
  890.         {
  891.             player.lifes-=1;
  892.             player.lostLife=true;
  893.         }
  894.         if (readChar(player.x,player.y)== 'o')
  895.         {
  896.             player.lifes-=1;
  897.             player.lostLife=true;
  898.         }
  899.         if (readChar(player.x,player.y)== '&')
  900.         {
  901.             player.lifes-=1;
  902.             player.lostLife=true;
  903.         }
  904.  
  905.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
  906.         gotoxy(player.x,player.y);
  907.         if (player.movingDirection=='w')
  908.         {
  909.             cout<<char(24);
  910.         }
  911.         if (player.movingDirection=='s')
  912.         {
  913.             cout<<char(25);
  914.         }
  915.         if (player.movingDirection=='a')
  916.         {
  917.             cout<<char(27);
  918.         }
  919.         if (player.movingDirection=='d')
  920.         {
  921.             cout<<char(26);
  922.         }
  923.     }
  924.     int r;
  925.     int emergencyLoopBreak;     /// In case Randomer gets stuck || Shitty solution, should just see surroundings first
  926.     for (int i=0; i<=50; i++)
  927.     {
  928.         if (randomer[i].lifes>0)
  929.         {
  930.             if ((frameCount % randomer[i].speed)==0)
  931.             {
  932.                 gotoxy(randomer[i].x,randomer[i].y);
  933.                 cout<<" ";
  934.                 randomer[i].successfulMove=false;
  935.                 while (randomer[i].successfulMove==false)
  936.                 {
  937.                     emergencyLoopBreak+=1;
  938.                     r=rand()%4+1;
  939.                     if ((r==1) && (randomer[i].y>randomer[i].yMin) && (collisionRandomer(i,'w')==0))
  940.                     {
  941.                         randomer[i].y-=1;
  942.                         randomer[i].successfulMove=true;
  943.                     } else if ((r==1) && (randomer[i].y>randomer[i].yMin) && (collisionRandomer(i,'w')==1))
  944.                     {
  945.                         player.lifes-=1;
  946.                         player.lostLife=true;
  947.                     }
  948.                     if ((r==2) && (randomer[i].y<randomer[i].yMax) && (collisionRandomer(i,'s')==0))
  949.                     {
  950.                         randomer[i].y+=1;
  951.                         randomer[i].successfulMove=true;
  952.                     } else if ((r==2) && (randomer[i].y<randomer[i].yMax) && (collisionRandomer(i,'s')==1))
  953.                     {
  954.                         player.lifes-=1;
  955.                         player.lostLife=true;
  956.                     }
  957.                     if ((r==3) && (randomer[i].x>randomer[i].xMin) && (collisionRandomer(i,'a')==0))
  958.                     {
  959.                         randomer[i].x-=1;
  960.                         randomer[i].successfulMove=true;
  961.                     } else if ((r==3) && (randomer[i].x>randomer[i].xMin) && (collisionRandomer(i,'a')==1))
  962.                     {
  963.                         player.lifes-=1;
  964.                         player.lostLife=true;
  965.                     }
  966.                     if ((r==4) && (randomer[i].x<randomer[i].xMax) && (collisionRandomer(i,'d')==0))
  967.                     {
  968.                         randomer[i].x+=1;
  969.                         randomer[i].successfulMove=true;
  970.                     } else if ((r==4) && (randomer[i].x<randomer[i].xMax) && (collisionRandomer(i,'d')==1))
  971.                     {
  972.                         player.lifes-=1;
  973.                         player.lostLife=true;
  974.                     }
  975.                     if (emergencyLoopBreak>=50)
  976.                     {
  977.                         randomer[i].successfulMove=true;
  978.                     }
  979.                 }
  980.                 gotoxy(randomer[i].x,randomer[i].y);
  981.                 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),13);
  982.                 if (randomer[i].lifes<=1)
  983.                 {
  984.                     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),5);
  985.                 }
  986.                 cout<<"%";
  987.             }
  988.         }
  989.     }
  990.  
  991.     for (int i=0; i<=30; i++)
  992.     {
  993.         if (chaser[i].exists==true)
  994.         {
  995.             SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),9);
  996.             if (abs(chaser[i].x-player.x)>=(abs(chaser[i].y-player.y)))
  997.             {
  998.                 if(chaser[i].x>=player.x)
  999.                 {
  1000.                     if(readChar(chaser[i].x-1,chaser[i].y)==' ')
  1001.                     {
  1002.                         gotoxy(chaser[i].x,chaser[i].y);
  1003.                         cout<<" ";
  1004.                         chaser[i].x-=1;
  1005.                         gotoxy(chaser[i].x,chaser[i].y);
  1006.                         cout<<"&";
  1007.                     }else if ((readChar(chaser[i].x-1,chaser[i].y)!='#') && (readChar(chaser[i].x-1,chaser[i].y)!='@') &&(readChar(chaser[i].x-1,chaser[i].y)!='A') && (readChar(chaser[i].x-1,chaser[i].y)!='+') && (readChar(chaser[i].x-1,chaser[i].y)!='&') && (readChar(chaser[i].x-1,chaser[i].y)!='S')&&(readChar(chaser[i].x-1,chaser[i].y)!='o') && (readChar(chaser[i].x-1,chaser[i].y)!='%'))
  1008.                     {
  1009.                         player.lostLife=true;
  1010.                         player.lifes-=1;
  1011.                     }
  1012.                 }else if(chaser[i].x<player.x)
  1013.                 {
  1014.                     if(readChar(chaser[i].x+1,chaser[i].y)==' ')
  1015.                     {
  1016.                         gotoxy(chaser[i].x,chaser[i].y);
  1017.                         cout<<" ";
  1018.                         chaser[i].x+=1;
  1019.                         gotoxy(chaser[i].x,chaser[i].y);
  1020.                         cout<<"&";
  1021.                     }else if ((readChar(chaser[i].x+1,chaser[i].y)!='#') && (readChar(chaser[i].x+1,chaser[i].y)!='@') &&(readChar(chaser[i].x+1,chaser[i].y)!='A') && (readChar(chaser[i].x+1,chaser[i].y)!='+') && (readChar(chaser[i].x+1,chaser[i].y)!='&') && (readChar(chaser[i].x+1,chaser[i].y)!='S')&&(readChar(chaser[i].x+1,chaser[i].y)!='o') && (readChar(chaser[i].x+1,chaser[i].y)!='%'))
  1022.                     {
  1023.                         player.lostLife=true;
  1024.                         player.lifes-=1;
  1025.                     }
  1026.                 }
  1027.             }else if (abs(chaser[i].x-player.x)<(abs(chaser[i].y-player.y)))
  1028.             {
  1029.                 if(chaser[i].y>=player.y)
  1030.                 {
  1031.                     if(readChar(chaser[i].x,chaser[i].y-1)==' ')
  1032.                     {
  1033.                         gotoxy(chaser[i].x,chaser[i].y);
  1034.                         cout<<" ";
  1035.                         chaser[i].y-=1;
  1036.                         gotoxy(chaser[i].x,chaser[i].y);
  1037.                         cout<<"&";
  1038.                     }else if ((readChar(chaser[i].x,chaser[i].y-1)!='#') && (readChar(chaser[i].x,chaser[i].y-1)!='@') &&(readChar(chaser[i].x,chaser[i].y-1)!='A') && (readChar(chaser[i].x,chaser[i].y-1)!='+') && (readChar(chaser[i].x,chaser[i].y-1)!='&') && (readChar(chaser[i].x,chaser[i].y-1)!='S')&&(readChar(chaser[i].x,chaser[i].y-1)!='o') && (readChar(chaser[i].x,chaser[i].y-1)!='%'))
  1039.                     {
  1040.                         player.lostLife=true;
  1041.                         player.lifes-=1;
  1042.                     }
  1043.                 }else if(chaser[i].y<player.y)
  1044.                 {
  1045.                     if(readChar(chaser[i].x,chaser[i].y+1)==' ')
  1046.                     {
  1047.                         gotoxy(chaser[i].x,chaser[i].y);
  1048.                         cout<<" ";
  1049.                         chaser[i].y+=1;
  1050.                         gotoxy(chaser[i].x,chaser[i].y);
  1051.                         cout<<"&";
  1052.                     }else if ((readChar(chaser[i].x,chaser[i].y+1)!='#') && (readChar(chaser[i].x,chaser[i].y+1)!='@') &&(readChar(chaser[i].x,chaser[i].y+1)!='A') && (readChar(chaser[i].x,chaser[i].y+1)!='+') && (readChar(chaser[i].x,chaser[i].y+1)!='&') && (readChar(chaser[i].x,chaser[i].y+1)!='S')&&(readChar(chaser[i].x,chaser[i].y+1)!='o') && (readChar(chaser[i].x,chaser[i].y+1)!='%'))
  1053.                     {
  1054.                         player.lostLife=true;
  1055.                         player.lifes-=1;
  1056.                     }
  1057.                 }
  1058.             }
  1059.         }
  1060.     }
  1061.  
  1062.     for (int i=0;i<=100;i++)
  1063.     {
  1064.         if (runnerHorizontal[i].lifes>0)
  1065.         {
  1066.             gotoxy(runnerHorizontal[i].x,runnerHorizontal[i].y);
  1067.             cout<<" ";
  1068.             if (runnerHorizontal[i].movingDirection=='d')
  1069.             {
  1070.                 if (readChar(runnerHorizontal[i].x+1,runnerHorizontal[i].y)==' ')
  1071.                 {
  1072.                     runnerHorizontal[i].x+=1;
  1073.                 }else if (readChar(runnerHorizontal[i].x+1,runnerHorizontal[i].y)=='#')
  1074.                 {
  1075.                     runnerHorizontal[i].movingDirection='a';
  1076.                 }else if (readChar(runnerHorizontal[i].x+1,runnerHorizontal[i].y)=='X')
  1077.                 {
  1078.                     runnerHorizontal[i].movingDirection='a';
  1079.                 }else if (readChar(runnerHorizontal[i].x+1,runnerHorizontal[i].y)=='@')
  1080.                 {
  1081.                     runnerHorizontal[i].movingDirection='a';
  1082.                 }else if (readChar(runnerHorizontal[i].x+1,runnerHorizontal[i].y)=='+')
  1083.                 {
  1084.                     runnerHorizontal[i].movingDirection='a';
  1085.                 }else if (readChar(runnerHorizontal[i].x+1,runnerHorizontal[i].y)=='A')
  1086.                 {
  1087.                     runnerHorizontal[i].movingDirection='a';
  1088.                 }else if (readChar(runnerHorizontal[i].x+1,runnerHorizontal[i].y)=='S')
  1089.                 {
  1090.                     runnerHorizontal[i].movingDirection='a';
  1091.                 }else if (readChar(runnerHorizontal[i].x+1,runnerHorizontal[i].y)=='o')
  1092.                 {
  1093.                     //NIC
  1094.                 }else
  1095.                 {
  1096.                     player.lifes-=1;
  1097.                     player.lostLife=true;
  1098.                 }
  1099.             }else if (runnerHorizontal[i].movingDirection=='a')
  1100.             {
  1101.                 if (readChar(runnerHorizontal[i].x-1,runnerHorizontal[i].y)==' ')
  1102.                 {
  1103.                     runnerHorizontal[i].x-=1;
  1104.                 }else if (readChar(runnerHorizontal[i].x-1,runnerHorizontal[i].y)=='#')
  1105.                 {
  1106.                     runnerHorizontal[i].movingDirection='d';
  1107.                 }else if (readChar(runnerHorizontal[i].x-1,runnerHorizontal[i].y)=='X')
  1108.                 {
  1109.                     runnerHorizontal[i].movingDirection='d';
  1110.                 }else if (readChar(runnerHorizontal[i].x-1,runnerHorizontal[i].y)=='@')
  1111.                 {
  1112.                     runnerHorizontal[i].movingDirection='d';
  1113.                 }else if (readChar(runnerHorizontal[i].x-1,runnerHorizontal[i].y)=='+')
  1114.                 {
  1115.                     runnerHorizontal[i].movingDirection='d';
  1116.                 }else if (readChar(runnerHorizontal[i].x-1,runnerHorizontal[i].y)=='A')
  1117.                 {
  1118.                     runnerHorizontal[i].movingDirection='d';
  1119.                 }else if (readChar(runnerHorizontal[i].x-1,runnerHorizontal[i].y)=='S')
  1120.                 {
  1121.                     runnerHorizontal[i].movingDirection='d';
  1122.                 }else if (readChar(runnerHorizontal[i].x-1,runnerHorizontal[i].y)=='o')
  1123.                 {
  1124.                     //NIC
  1125.                 }else
  1126.                 {
  1127.                     player.lifes-=1;
  1128.                     player.lostLife=true;
  1129.                 }
  1130.             }
  1131.             SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10);
  1132.             if (runnerHorizontal[i].lifes==1)
  1133.             {
  1134.                 SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),2);
  1135.             }
  1136.             gotoxy(runnerHorizontal[i].x,runnerHorizontal[i].y);
  1137.             cout<<"S";
  1138.         }
  1139.     }
  1140.  
  1141.     for (int i=0; i<=50; i++)
  1142.     {
  1143.         if (cannonHorizontal[i].exists==true)
  1144.         {
  1145.             if ((frameCount % cannonHorizontal[i].speed)==0)
  1146.             {
  1147.                 if (cannonHorizontal[i].shootingDirection=='a')
  1148.                 {
  1149.                     nrBullet+=1;
  1150.                     bullet[nrBullet].exists=true;
  1151.                     bullet[nrBullet].x=cannonHorizontal[i].x;
  1152.                     bullet[nrBullet].y=cannonHorizontal[i].y;
  1153.                     bullet[nrBullet].movingDirection=cannonHorizontal[i].shootingDirection;
  1154.                     bullet[nrBullet].firstOccurrence=true;
  1155.                 }
  1156.                 if (cannonHorizontal[i].shootingDirection=='d')
  1157.                 {
  1158.                     nrBullet+=1;
  1159.                     bullet[nrBullet].exists=true;
  1160.                     bullet[nrBullet].x=cannonHorizontal[i].x;
  1161.                     bullet[nrBullet].y=cannonHorizontal[i].y;
  1162.                     bullet[nrBullet].movingDirection=cannonHorizontal[i].shootingDirection;
  1163.                     bullet[nrBullet].firstOccurrence=true;
  1164.                 }
  1165.             }
  1166.         }
  1167.     }
  1168.     for (int i=0; i<=50; i++)
  1169.     {
  1170.         if (cannonVertical[i].exists==true)
  1171.         {
  1172.             if ((frameCount % cannonVertical[i].speed)==0)
  1173.             {
  1174.                 if (cannonVertical[i].shootingDirection=='w')
  1175.                 {
  1176.                     nrBullet+=1;
  1177.                     bullet[nrBullet].exists=true;
  1178.                     bullet[nrBullet].x=cannonVertical[i].x;
  1179.                     bullet[nrBullet].y=cannonVertical[i].y;
  1180.                     bullet[nrBullet].movingDirection=cannonVertical[i].shootingDirection;
  1181.                     bullet[nrBullet].firstOccurrence=true;
  1182.                 }
  1183.                 if (cannonVertical[i].shootingDirection=='s')
  1184.                 {
  1185.                     nrBullet+=1;
  1186.                     bullet[nrBullet].exists=true;
  1187.                     bullet[nrBullet].x=cannonVertical[i].x;
  1188.                     bullet[nrBullet].y=cannonVertical[i].y;
  1189.                     bullet[nrBullet].movingDirection=cannonVertical[i].shootingDirection;
  1190.                     bullet[nrBullet].firstOccurrence=true;
  1191.                 }
  1192.             }
  1193.         }
  1194.     }
  1195.  
  1196.     if (c=='m')
  1197.     {
  1198.         if (player.ammunition!=0)
  1199.         {
  1200.             nrBullet+=1;
  1201.             bullet[nrBullet].exists=false;
  1202.             bullet[nrBullet].firstOccurrence=true;
  1203.             player.ammunition-=1;
  1204.             if (player.movingDirection=='w')
  1205.             {
  1206.                 bullet[nrBullet].x=player.x;
  1207.                 bullet[nrBullet].y=player.y;
  1208.                 bullet[nrBullet].movingDirection='w';
  1209.                 if ((readChar(player.x,player.y-1)==' ') || (readChar(player.x,player.y-1)=='S') || (readChar(player.x,player.y-1)=='%')|| (readChar(player.x,player.y-1)=='X'))
  1210.                 {
  1211.                     bullet[nrBullet].exists=true;
  1212.                 }
  1213.             }
  1214.             if (player.movingDirection=='s')
  1215.             {
  1216.                 bullet[nrBullet].x=player.x;
  1217.                 bullet[nrBullet].y=player.y;
  1218.                 bullet[nrBullet].movingDirection='s';
  1219.                 if ((readChar(player.x,player.y+1)==' ') || (readChar(player.x,player.y+1)=='S') || (readChar(player.x,player.y+1)=='%')|| (readChar(player.x,player.y+1)=='X'))
  1220.                 {
  1221.                     bullet[nrBullet].exists=true;
  1222.                 }
  1223.             }
  1224.             if (player.movingDirection=='a')
  1225.             {
  1226.                 bullet[nrBullet].x=player.x;
  1227.                 bullet[nrBullet].y=player.y;
  1228.                 bullet[nrBullet].movingDirection='a';
  1229.                 if ((readChar(player.x-1,player.y)==' ') || (readChar(player.x-1,player.y)=='S') || (readChar(player.x-1,player.y)=='%')|| (readChar(player.x-1,player.y)=='X'))
  1230.                 {
  1231.                     bullet[nrBullet].exists=true;
  1232.                 }
  1233.             }
  1234.             if (player.movingDirection=='d')
  1235.             {
  1236.                 bullet[nrBullet].x=player.x;
  1237.                 bullet[nrBullet].y=player.y;
  1238.                 bullet[nrBullet].movingDirection='d';
  1239.                 if ((readChar(player.x+1,player.y)==' ') || (readChar(player.x+1,player.y)=='S') || (readChar(player.x+1,player.y)=='%')|| (readChar(player.x+1,player.y)=='X'))
  1240.                 {
  1241.                     bullet[nrBullet].exists=true;
  1242.                 }
  1243.             }
  1244.         }
  1245.  
  1246.     }
  1247.  
  1248.     for (int i=0; i<=400; i++)
  1249.     {
  1250.         if (bullet[i].exists==true)
  1251.         {
  1252.             bullet[i].exists=false;
  1253.             if (readChar(bullet[i].x,bullet[i].y)!='@')
  1254.             {
  1255.                 if ((bullet[i].firstOccurrence==false) && (readChar(bullet[i].x,bullet[i].y)!='@'))
  1256.                 {
  1257.                     cout<<" ";
  1258.                 }
  1259.                 if (bullet[i].movingDirection=='w')
  1260.                 {
  1261.                     bullet[i].y-=1;
  1262.                     if ((readChar(bullet[i].x,bullet[i].y)==' ') || (readChar(bullet[i].x,bullet[i].y)=='o'))
  1263.                     {
  1264.                         bullet[i].exists=true;
  1265.                     }
  1266.                 }
  1267.                 if (bullet[i].movingDirection=='s')
  1268.                 {
  1269.                     bullet[i].y+=1;
  1270.                     if ((readChar(bullet[i].x,bullet[i].y)==' ') || (readChar(bullet[i].x,bullet[i].y)=='o'))
  1271.                     {
  1272.                         bullet[i].exists=true;
  1273.                     }
  1274.                 }
  1275.                 if (bullet[i].movingDirection=='a')
  1276.                 {
  1277.                     bullet[i].x-=1;
  1278.                     if ((readChar(bullet[i].x,bullet[i].y)==' ') || (readChar(bullet[i].x,bullet[i].y)=='o'))
  1279.                     {
  1280.                         bullet[i].exists=true;
  1281.                     }
  1282.                 }
  1283.                 if (bullet[i].movingDirection=='d')
  1284.                 {
  1285.                     bullet[i].x+=1;
  1286.                     if ((readChar(bullet[i].x,bullet[i].y)==' ') || (readChar(bullet[i].x,bullet[i].y)=='o'))
  1287.                     {
  1288.                         bullet[i].exists=true;
  1289.                     }
  1290.                 }
  1291.                 if (bullet[i].exists==false)
  1292.                 {
  1293.                     if (readChar(bullet[i].x,bullet[i].y)=='S')
  1294.                     {
  1295.                         for (int j=0; j<=100; j++)
  1296.                         {
  1297.                             if((bullet[i].x==runnerHorizontal[j].x) && (bullet[i].y==runnerHorizontal[j].y))
  1298.                             {
  1299.                                 runnerHorizontal[j].lifes-=1;
  1300.                                 gotoxy(runnerHorizontal[j].x,runnerHorizontal[j].y);
  1301.                                 cout<<" ";
  1302.                             }
  1303.                         }
  1304.                     }else if (readChar(bullet[i].x,bullet[i].y)=='%')
  1305.                     {
  1306.                         for (int j=0; j<=50; j++)
  1307.                         {
  1308.                             if((bullet[i].x==randomer[j].x) && (bullet[i].y==randomer[j].y))
  1309.                             {
  1310.                                 randomer[j].lifes-=1;
  1311.                                 gotoxy(randomer[j].x,randomer[j].y);
  1312.                                 cout<<" ";
  1313.                             }
  1314.                         }
  1315.                     }else if (readChar(bullet[i].x,bullet[i].y)=='X')
  1316.                     {
  1317.                         bossLife-=1;
  1318.                     }else if ((readChar(bullet[i].x,bullet[i].y)!='@') && (readChar(bullet[i].x,bullet[i].y)!='#') && (readChar(bullet[i].x,bullet[i].y)!='o') && (readChar(bullet[i].x,bullet[i].y)!='-') && (readChar(bullet[i].x,bullet[i].y)!='|')&& (readChar(bullet[i].x,bullet[i].y)!='A') && (readChar(bullet[i].x,bullet[i].y)!='+')&& (readChar(bullet[i].x,bullet[i].y)!='C'))
  1319.                     {
  1320.                         player.lifes-=1;
  1321.                         player.lostLife=true;
  1322.                     }
  1323.                 }
  1324.                 bullet[i].firstOccurrence=false;
  1325.  
  1326.  
  1327.             }
  1328.         }
  1329.     }
  1330.     for(int i=0; i<=400; i++)
  1331.     {
  1332.         if (bullet[i].exists==true)
  1333.         {
  1334.             SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),12);
  1335.             gotoxy(bullet[i].x,bullet[i].y);
  1336.             cout<<"o";
  1337.         }
  1338.     }
  1339.     gotoxy(90,3);
  1340.     cout<<"                ";
  1341.     gotoxy(90,3);
  1342.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),4);
  1343.     cout<<"Lives: "<<player.lifes;
  1344.  
  1345.     gotoxy(90,5);
  1346.     cout<<"                ";
  1347.     gotoxy(90,5);
  1348.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),14);
  1349.     cout<<"Ammo: "<<player.ammunition;
  1350.  
  1351.     gotoxy(90,7);
  1352.     cout<<"                           ";
  1353.     if (player.respawnTime>0)
  1354.     {
  1355.         gotoxy(90,7);
  1356.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
  1357.         cout<<"Respawn time: "<<player.respawnTime;
  1358.     }
  1359.  
  1360.  
  1361.     gotoxy(11,40);
  1362.     cout<<"                ";
  1363.     gotoxy(11,40);
  1364.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
  1365.     cout<<"XY: ( "<<player.x<<", "<<player.y<<" )";
  1366.  
  1367.     if (bossPlaced==true)
  1368.     {
  1369.         gotoxy(70,31);
  1370.         cout<<"      ";
  1371.         gotoxy(70,31);
  1372.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
  1373.         cout<<bossLife<<" HP";
  1374.     }
  1375.  
  1376.  
  1377. }
  1378.  
  1379. void clearAllObjects()
  1380. {
  1381.     for (int i=0; i<=100; i++)
  1382.     {
  1383.         runnerHorizontal[i].lifes=0;
  1384.     }
  1385.     for (int i=0; i<=50; i++)
  1386.     {
  1387.         randomer[i].lifes=0;
  1388.         cannonVertical[i].exists=false;
  1389.         cannonHorizontal[i].exists=false;
  1390.     }
  1391. }
  1392.  
  1393. void poruszeniePlayer()
  1394. {
  1395.     c='0';
  1396.     if (_kbhit()==1)
  1397.     {
  1398.         c=getch();
  1399.     }
  1400. }
  1401.  
  1402. void drawLegend()
  1403. {
  1404.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),9);
  1405.     gotoxy(87,9);
  1406.     cout<<"--------------------------";
  1407.     gotoxy(91,10);
  1408.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
  1409.     cout<<"     LEGEND: ";
  1410.  
  1411.     gotoxy(89,12);
  1412.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
  1413.     cout<<char(24)<<" -> YOU";
  1414.  
  1415.     gotoxy(89,14);
  1416.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
  1417.     cout<<"# -> Unmovable object";
  1418.  
  1419.     gotoxy(89,16);
  1420.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),8);
  1421.     cout<<"@ -> Movable object";
  1422.  
  1423.     gotoxy(89,18);
  1424.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),4);
  1425.     cout<<"- , | -> Cannons";
  1426.     gotoxy(95,19);
  1427.     cout<<"(Indestructible)";
  1428.  
  1429.     gotoxy(89,21);
  1430.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10);
  1431.     cout<<"S -> Vertically-moving";
  1432.     gotoxy(94,22);
  1433.     cout<<"enemy [Have 2HP]";
  1434.  
  1435.     gotoxy(89,24);
  1436.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),13);
  1437.     cout<<"% -> Randomly-moving";
  1438.     gotoxy(94,25);
  1439.     cout<<"enemy [Have 2HP]";
  1440.     gotoxy(91,26);
  1441.     cout<<"(move in certain area)";
  1442.  
  1443.     gotoxy(89,28);
  1444.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),9);
  1445.     cout<<"& -> Follows YOU";
  1446.     gotoxy(94,29);
  1447.     cout<<"(longer axis dist.)";
  1448.  
  1449.     gotoxy(89,31);
  1450.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),14);
  1451.     cout<<"A -> Ammo (+5)";
  1452.  
  1453.     gotoxy(89,33);
  1454.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
  1455.     cout<<"+ -> life (+1)";
  1456.  
  1457.     gotoxy(89,35);
  1458.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),240);
  1459.     cout<<"C";
  1460.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
  1461.     cout<<" -> CheckPoint";
  1462.  
  1463.     gotoxy(87,37);
  1464.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),9);
  1465.     cout<<"--------------------------";
  1466.  
  1467.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),9);
  1468.     for (int i=0; i<=5; i++)
  1469.     {
  1470.         gotoxy(67,38+i);
  1471.         cout<<"|";
  1472.     }
  1473.  
  1474.     gotoxy(69,39);
  1475.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
  1476.     cout<<"ESC -> Quit to menu";
  1477.  
  1478.     gotoxy(69,41);
  1479.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
  1480.     cout<<"R -> Restart from CheckPoint (loses life)";
  1481.  
  1482.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),9);
  1483.     for (int i=0; i<=5; i++)
  1484.     {
  1485.         gotoxy(38,38+i);
  1486.         cout<<"|";
  1487.     }
  1488.  
  1489.     gotoxy(40,39);
  1490.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
  1491.     cout<<"W/S/A/D -> Move character";
  1492.  
  1493.     gotoxy(40,41);
  1494.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),12);
  1495.     cout<<"M -> Shoot";
  1496. }
  1497.  
  1498. void levelRestart()
  1499. {
  1500.     c='0';
  1501.     frameCount=0;
  1502.     system("CLS");
  1503.     if(player.checkPoint==0)
  1504.     {
  1505.         player.x=2;
  1506.         player.y=35;
  1507.     }
  1508.     if (player.checkPoint==1)
  1509.     {
  1510.         player.x=56;
  1511.         player.y=22;
  1512.     }
  1513.     if (player.checkPoint==2)
  1514.     {
  1515.         player.x=4;
  1516.         player.y=23;
  1517.     }
  1518.     if (player.checkPoint==3)
  1519.     {
  1520.         player.x=33;
  1521.         player.y=11;
  1522.     }
  1523.     if (player.checkPoint==4)
  1524.     {
  1525.         player.x=42;
  1526.         player.y=12;
  1527.     }
  1528.     if (player.checkPoint==5)
  1529.     {
  1530.         player.x=85;
  1531.         player.y=15;
  1532.     }
  1533.     clearAllObjects();
  1534.     loadLevelBase("level_1.txt");
  1535.     loadLevelObjects(1);
  1536.     drawLegend();
  1537.     gotoxy(player.x,player.y);
  1538.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
  1539.     cout<<char(24);
  1540. }
  1541.  
  1542. void speed()
  1543. {
  1544.     system("CLS");
  1545.     char c=' ';
  1546.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
  1547.     gotoxy(48,16);
  1548.     cout<<"CURRENT SPEED: ";
  1549.     gotoxy(41,21);
  1550.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),12);
  1551.     cout<<"<- A(-)";
  1552.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
  1553.     cout<<" MOVING SPEED ";
  1554.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10);
  1555.     cout<<"(+)D ->";
  1556.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
  1557.     gotoxy(41,24);
  1558.     cout<<"   (Press ENTER to go back)   ";
  1559.     while (c!=char(13))
  1560.     {
  1561.         gotoxy(54,18);
  1562.         cout<<"                    ";
  1563.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
  1564.         gotoxy(54,18);
  1565.         cout<<framesDelay;
  1566.         gotoxy(0,0);
  1567.         c=getch();
  1568.         if (c=='d')
  1569.         {
  1570.             framesDelay+=1;
  1571.         }
  1572.         if (c=='a')
  1573.         {
  1574.             if (framesDelay>=2)
  1575.             {
  1576.                 framesDelay-=1;
  1577.             }
  1578.         }
  1579.     }
  1580. }
  1581.  
  1582. void trudnosc()
  1583. {
  1584.  
  1585. }
  1586.  
  1587. void options()
  1588. {
  1589.     char c='0';
  1590.     int chosen=2;
  1591.     while (c!=' ')
  1592.     {
  1593.     system("CLS");
  1594.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
  1595.     gotoxy(55,14);
  1596.     cout<<char(24);
  1597.     gotoxy(55,15);
  1598.     cout<<"W";
  1599.  
  1600.     gotoxy(55,28);
  1601.     cout<<char(25);
  1602.     gotoxy(55,27);
  1603.     cout<<"S";
  1604.  
  1605.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
  1606.     gotoxy(49,19);
  1607.     cout<<" DIFFICULTY ";
  1608.     gotoxy(49,21);
  1609.     cout<<"MOVING SPEED";
  1610.     gotoxy(49,23);
  1611.     cout<<"    BACK    ";
  1612.     while (c!=char(13))
  1613.     {
  1614.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10);
  1615.         gotoxy(46,19+chosen);
  1616.         cout<<"->";
  1617.         gotoxy(63,19+chosen);
  1618.         cout<<"<-";
  1619.         gotoxy(0,0);
  1620.         c=getch();
  1621.         gotoxy(46,19+chosen);
  1622.         cout<<"  ";
  1623.         gotoxy(63,19+chosen);
  1624.         cout<<"  ";
  1625.         if (c=='s')
  1626.         {
  1627.             if (chosen<4)
  1628.             {
  1629.                 chosen+=2;
  1630.             }
  1631.         }
  1632.         if (c=='w')
  1633.         {
  1634.             if (chosen>0)
  1635.             {
  1636.                 chosen-=2;
  1637.             }
  1638.         }
  1639.     }
  1640.     if (chosen==0)
  1641.     {
  1642.         trudnosc();
  1643.         c='0';
  1644.     }
  1645.     if (chosen==2)
  1646.     {
  1647.         speed();
  1648.         c='0';
  1649.     }
  1650.     if (chosen==4)
  1651.     {
  1652.         c=' ';
  1653.     }
  1654.     system("CLS");
  1655.     chosen=2;
  1656.     }
  1657.  
  1658. }
  1659.  
  1660. void startGame()
  1661. {
  1662.     srand(time(NULL));
  1663.     frameCount=0;
  1664.     player.x=2;
  1665.     player.y=35;
  1666.     player.ammunition=15;
  1667.     player.lifes=3;
  1668.     player.checkPoint=0;
  1669.     bossLife=50;
  1670.     bossPlaced=false;
  1671.     for (int i=0; i<=20;i++)
  1672.     {
  1673.         pickUp[i].exists=true;
  1674.     }
  1675.     clearAllObjects();
  1676.     loadLevelBase("level_1.txt");
  1677.     loadLevelObjects(1);
  1678.     drawLegend();
  1679.     gotoxy(player.x,player.y);
  1680.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
  1681.     cout<<char(24);
  1682. }
  1683.  
  1684. void menu()
  1685. {
  1686.     char c='0';
  1687.     int chosen=2;
  1688.     exitConsole=false;
  1689.     system("CLS");
  1690.     while ((inGame==false) && (exitConsole==false))
  1691.     {
  1692.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
  1693.     gotoxy(55,14);
  1694.     cout<<char(24);
  1695.     gotoxy(55,15);
  1696.     cout<<"W";
  1697.  
  1698.     gotoxy(55,28);
  1699.     cout<<char(25);
  1700.     gotoxy(55,27);
  1701.     cout<<"S";
  1702.  
  1703.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
  1704.     gotoxy(52,19);
  1705.     cout<<" START ";
  1706.     gotoxy(52,21);
  1707.     cout<<"OPTIONS";
  1708.     gotoxy(52,23);
  1709.     cout<<" QUIT  ";
  1710.     while (c!=char(13))
  1711.     {
  1712.         SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10);
  1713.         gotoxy(49,19+chosen);
  1714.         cout<<"->";
  1715.         gotoxy(60,19+chosen);
  1716.         cout<<"<-";
  1717.         gotoxy(0,0);
  1718.         c=getch();
  1719.         gotoxy(49,19+chosen);
  1720.         cout<<"  ";
  1721.         gotoxy(60,19+chosen);
  1722.         cout<<"  ";
  1723.         if (c=='s')
  1724.         {
  1725.             if (chosen<4)
  1726.             {
  1727.                 chosen+=2;
  1728.             }
  1729.         }
  1730.         if (c=='w')
  1731.         {
  1732.             if (chosen>0)
  1733.             {
  1734.                 chosen-=2;
  1735.             }
  1736.         }
  1737.     }
  1738.     if (chosen==0)
  1739.     {
  1740.         inGame=true;
  1741.     }
  1742.     if (chosen==2)
  1743.     {
  1744.         options();
  1745.     }
  1746.     if (chosen==4)
  1747.     {
  1748.         inGame=false;
  1749.         exitConsole=true;
  1750.     }
  1751.     chosen=2;
  1752.     c=' ';
  1753.     system("CLS");
  1754.     }
  1755. }
  1756.  
  1757.  
  1758. int main()
  1759. {
  1760.     framesDelay=10;
  1761.     menu();
  1762.     while (exitConsole==false)
  1763.     {
  1764.         startGame();
  1765.         while(inGame==true)
  1766.         {
  1767.             player.lostLife=false;
  1768.             update();
  1769.             poruszeniePlayer();
  1770.             if (player.respawnTime>=1)
  1771.             {
  1772.                 c='0';
  1773.                 player.respawnTime-=1;
  1774.             }
  1775.             if (c==char(27))
  1776.             {
  1777.                 inGame=false;
  1778.             }
  1779.             if ((player.lostLife==true) || (c=='r'))
  1780.             {
  1781.                 for (int i=0; i<=4; i++)
  1782.                 {
  1783.                     gotoxy(player.x,player.y);
  1784.                     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),3);
  1785.                     cout<<char(24);
  1786.                     Sleep(150);
  1787.                     gotoxy(player.x,player.y);
  1788.                     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),11);
  1789.                     cout<<char(24);
  1790.                     Sleep(150);
  1791.                 }
  1792.                 if (c=='r')
  1793.                     {
  1794.                         player.lifes-=1;
  1795.                     }
  1796.                 player.respawnTime=20;
  1797.                 levelRestart();
  1798.             }
  1799.             if (player.lifes<=0)
  1800.             {
  1801.                 inGame=false;
  1802.             }
  1803.             gotoxy(0,0);
  1804.             Sleep(framesDelay);
  1805.             frameCount+=1;
  1806.             if (frameCount>2000000)
  1807.             {
  1808.                 frameCount=0;
  1809.             }
  1810.             if (nrBullet>350)
  1811.             {
  1812.                 nrBullet=0;
  1813.             }
  1814.             if(bossLife<=0)
  1815.             {
  1816.                 inGame=false;
  1817.             }
  1818.         }
  1819.         if ((exitConsole==false)&&(bossLife>0))
  1820.         {
  1821.             system("CLS");
  1822.             gotoxy(52,20);
  1823.             SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),6);
  1824.             cout<<"GAME OVER";
  1825.             gotoxy(44,23);
  1826.             SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
  1827.             cout<<"Press ESC to go back to menu";
  1828.             while (c!=char(27))
  1829.             {
  1830.                 c=getch();
  1831.             }
  1832.             menu();
  1833.         }
  1834.         if (bossLife<=0)
  1835.         {
  1836.             createBossDefeated();
  1837.             system("CLS");
  1838.             gotoxy(52,20);
  1839.             SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),6);
  1840.             cout<<"YOU WON!";
  1841.             gotoxy(43,23);
  1842.             SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),15);
  1843.             cout<<"Press ESC to go back to menu";
  1844.             while (c!=char(27))
  1845.             {
  1846.                 c=getch();
  1847.             }
  1848.             menu();
  1849.         }
  1850.     }
  1851.     return 0;
  1852. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement