Advertisement
Guest User

Untitled

a guest
Jul 29th, 2015
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.60 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <stdio.h>
  3. #include <windows.h>
  4. #include <time.h>
  5. #include <conio.h>
  6.  
  7. #define PYTHON_MAX_SIZE 100
  8.  
  9. void ConsoleGoXY(int x, int y);
  10. void HideCursor(void);
  11. void RemoveCharacters(int PythonPosition[][2]);
  12. void PutCharacters(int PythonPosition[][2]);
  13. int PlaceFood(int FoodCoord[2], int PythonPosition[][2]);
  14.  
  15. int main()
  16. {
  17.     srand(time(NULL));
  18.  
  19.     int PythonPosition[PYTHON_MAX_SIZE][2];
  20.     for(int i=0;i<PYTHON_MAX_SIZE;i++) {
  21.         PythonPosition[i][0] = -1;
  22.         PythonPosition[i][1] = -1;
  23.     }
  24.     char PythonDirection = 3;
  25.     PythonPosition[0][0] = 40;
  26.     PythonPosition[0][1] = 12;
  27.     PythonPosition[1][0] = 41;
  28.     PythonPosition[1][1] = 12;
  29.     PythonPosition[2][0] = 42;
  30.     PythonPosition[2][1] = 12;
  31.  
  32.     HideCursor();
  33.     PutCharacters(PythonPosition);
  34.  
  35.     char KeyBuf;
  36.     int HaveFood = 0;
  37.     int FoodCoord[2];
  38.  
  39.     while(1) {
  40.         if(kbhit()) {
  41.             KeyBuf = getch();
  42.  
  43.             switch(KeyBuf) {
  44.             case 72:
  45.                 if(PythonDirection != 2)
  46.                     PythonDirection = 0;
  47.                 break;
  48.             case 80:
  49.                 if(PythonDirection != 0)
  50.                     PythonDirection = 2;
  51.                 break;
  52.             case 75:
  53.                 if(PythonDirection != 1)
  54.                     PythonDirection = 3;
  55.                 break;
  56.             case 77:
  57.                 if(PythonDirection != 3)
  58.                     PythonDirection = 1;
  59.                 break;
  60.             case 27:
  61.                 exit(0);
  62.             }
  63.         }
  64.         if(!HaveFood)
  65.             HaveFood = PlaceFood(FoodCoord, PythonPosition);
  66.         RemoveCharacters(PythonPosition);
  67.  
  68.         {
  69.             int i;
  70.             for(i=0;PythonPosition[i+1][0]!= -1;i++)
  71.                 ;
  72.             for(;i>0;i--) {
  73.                 PythonPosition[i][0] = PythonPosition[i-1][0];
  74.                 PythonPosition[i][1] = PythonPosition[i-1][1];
  75.             }
  76.         }
  77.  
  78.         switch(PythonDirection) {
  79.         case 0:
  80.             PythonPosition[0][1] -= 1;
  81.             break;
  82.         case 1:
  83.             PythonPosition[0][0] += 1;
  84.             break;
  85.         case 2:
  86.             PythonPosition[0][1] += 1;
  87.             break;
  88.         case 3:
  89.             PythonPosition[0][0] -= 1;
  90.             break;
  91.         }
  92.         for(int i=1;PythonPosition[i][0] != -1;i++)
  93.                 if((PythonPosition[0][1] == PythonPosition[i][1]) && (PythonPosition[0][0] == PythonPosition[i][0])) {
  94.                     ConsoleGoXY(20,12);
  95.                     printf("Eat yourself");
  96.                     system("pause\n");
  97.                     exit(0);
  98.                 }
  99.         if(PythonPosition[0][1] == FoodCoord[1] && PythonPosition[0][0] == FoodCoord[0]) {
  100.             int i;
  101.             for(i=0;PythonPosition[i][0] != -1;i++)
  102.                 ;
  103.             if(PythonPosition[i-1][0] == PythonPosition[i-2][0]) {
  104.                 if(PythonPosition[i-1][1] > PythonPosition[i-2][1]) {
  105.                     PythonPosition[i][0] = PythonPosition[i-1][0];
  106.                     PythonPosition[i][1] = PythonPosition[i-1][1] - 1;
  107.             }
  108.                 else {
  109.                     PythonPosition[i][0] = PythonPosition[i-1][0];
  110.                     PythonPosition[i][1] = PythonPosition[i-1][1] = 1;
  111.                 }
  112.             }
  113.             if(PythonPosition[i-1][1] == PythonPosition[i-2][1]) {
  114.                 if(PythonPosition[i-1][0] > PythonPosition[i-2][0]) {
  115.                     PythonPosition[i][1] = PythonPosition[i-1][1] + 1;
  116.                     PythonPosition[i][0] = PythonPosition[i-1][0];
  117.             }
  118.                 else {
  119.                     PythonPosition[i][1] = PythonPosition[i-1][1] - 1;
  120.                     PythonPosition[i][0] = PythonPosition[i-1][0];
  121.                 }
  122.             }
  123.             HaveFood = 0;
  124.         }
  125.         if(PythonPosition[0][0] <= 0 || PythonPosition[0][0] >= 80 || PythonPosition[0][1] <= 0 || PythonPosition[0][1] >= 25) {
  126.             ConsoleGoXY(20,12);
  127.             printf("Out of border\n");
  128.             system("pause");
  129.             exit(0);
  130.         }
  131.  
  132.  
  133.         PutCharacters(PythonPosition);
  134.         Sleep(80);
  135.     }
  136.  
  137.  
  138.  
  139.     return 0;
  140. }
  141.  
  142. void RemoveCharacters(int PythonPosition[][2])
  143. {
  144.     for(int i=0;i<PYTHON_MAX_SIZE;i++) {
  145.         if(PythonPosition[i][0] != -1) {
  146.             ConsoleGoXY(PythonPosition[i][0], PythonPosition[i][1]);
  147.             putchar(' ');
  148.         }
  149.         else break;
  150.     }
  151. }
  152.  
  153. void PutCharacters(int PythonPosition[][2])
  154. {
  155.     for(int i=0;i<PYTHON_MAX_SIZE;i++) {
  156.         if(PythonPosition[i][0] != -1) {
  157.             ConsoleGoXY(PythonPosition[i][0], PythonPosition[i][1]);
  158.             putchar('@');
  159.         }
  160.         else break;
  161.     }
  162. }
  163.  
  164. int PlaceFood(int FoodCoord[2], int PythonPosition[][2])
  165. {
  166.     int Normal;
  167.     while(1) {
  168.         Normal = 1;
  169.         FoodCoord[0] = rand() % 80;
  170.         FoodCoord[1] = rand() % 25;
  171.         for(int i=0;PythonPosition[i][0] != -1;i++)
  172.             if(FoodCoord[0] == PythonPosition[i][0] && FoodCoord[1] == PythonPosition[i][1]) {
  173.                 Normal = 0;
  174.                 break;
  175.             }
  176.         if(Normal == 1) {
  177.             ConsoleGoXY(FoodCoord[0], FoodCoord[1]);
  178.             putchar('*');
  179.             return 1;
  180.         }
  181.     }
  182. }
  183.  
  184. void ConsoleGoXY(int x, int y)
  185. {
  186.     HANDLE hConsole = GetStdHandle(STD_OUTPUT_HANDLE);
  187.     COORD place = {x,y};
  188.     SetConsoleCursorPosition(hConsole, place);
  189. }
  190.  
  191. void HideCursor(void)
  192. {
  193.     CONSOLE_CURSOR_INFO CCI;
  194.     CCI.bVisible = FALSE;
  195.     CCI.dwSize= 1 ;
  196.     SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&CCI);
  197. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement