Advertisement
kirya_shkolnik

ссс

Jan 29th, 2023 (edited)
810
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 7.32 KB | None | 0 0
  1. // I WANT TO PLAY WITH YOU
  2. //         YOUR FRIEND, AI
  3.  
  4. #include <stdio.h>
  5.  
  6. #define MAX_X 80
  7. #define MAX_Y 24
  8. #define MAX_S 7
  9. #define MAX_S1 73
  10. #define Y_MIN 0
  11. #define X_MIN 0
  12. #define WIN_SCORE 21
  13.  
  14. void draw(int racket1_kkor1, int racket1_kkor2, int racket1_kkor3, int racket2_kkor1, int racket2_kkor2,
  15.   int racket2_kkor3, int ball_x, int ball_y, int resLeft, int resRight);
  16. int perem();
  17. int ball_coord(int * way, int * x, int * y, int Ly, int Ry);
  18. int main() {
  19.   int countLeft = 0;
  20.   int countRight = 0;
  21.   int way = 2;
  22.  
  23.   while (1) {
  24.     int racket1_kkor1 = (MAX_Y) / 2 + 1;
  25.     int racket1_kkor2 = (MAX_Y) / 2;
  26.     int racket1_kkor3 = (MAX_Y) / 2 - 1;
  27.  
  28.     int racket2_kkor1 = (MAX_Y) / 2 + 1;
  29.     int racket2_kkor2 = (MAX_Y) / 2;
  30.     int racket2_kkor3 = (MAX_Y) / 2 - 1;
  31.  
  32.     int ball_x = MAX_X / 2;
  33.     int ball_y = MAX_Y / 2;
  34.     way = 1 + (countLeft + countRight) % 4;
  35.  
  36.     while (1) {
  37.       // system("clear");
  38.       // рисовка
  39.       printf("\033[2J\033[1;1H");
  40.       draw(racket1_kkor1, racket1_kkor2, racket1_kkor3, racket2_kkor1, racket2_kkor2, racket2_kkor3,
  41.         ball_x, ball_y, countLeft, countRight);
  42.       int res = ball_coord( & way, & ball_x, & ball_y, racket1_kkor2, racket2_kkor2);
  43.       if (res == 1) {
  44.         // ракетки
  45.         int peremvalue = perem();
  46.         printf("%d", peremvalue);
  47.         if (peremvalue == 10 && racket1_kkor3 != MAX_Y - 3) {
  48.           racket1_kkor1++;
  49.           racket1_kkor2++;
  50.           racket1_kkor3++;
  51.         }
  52.         if (peremvalue == 11 && racket1_kkor1 != 4) {
  53.           racket1_kkor1--;
  54.           racket1_kkor2--;
  55.           racket1_kkor3--;
  56.         }
  57.         if (peremvalue == 20 && racket2_kkor3 != MAX_Y - 3) {
  58.           racket2_kkor1++;
  59.           racket2_kkor2++;
  60.           racket2_kkor3++;
  61.         }
  62.         if (peremvalue == 21 && racket2_kkor1 != 4) {
  63.           racket2_kkor1--;
  64.           racket2_kkor2--;
  65.           racket2_kkor3--;
  66.         }
  67.       } else if (res == 0) {
  68.         countLeft++;
  69.         break;
  70.       } else {
  71.         countRight++;
  72.         break;
  73.       }
  74.     }
  75.     if (countLeft == WIN_SCORE) {
  76.       printf("\033[2J\033[1;1H");
  77.       printf("FINAL SCORE: %d:%d\nLEFT PLAYER WON!!\nCONGRATULATIONS", countLeft, countRight);
  78.       getchar();
  79.       break;
  80.     }
  81.     if (countRight == WIN_SCORE) {
  82.       printf("\033[2J\033[1;1H");
  83.       printf("FINAL SCORE: %d:%d\nRIGHT PLAYER WON!!\nCONGRATULATIONS", countLeft, countRight);
  84.       getchar();
  85.       break;
  86.     }
  87.   }
  88. }
  89.  
  90. void draw(int racket1_kkor1, int racket1_kkor2, int racket1_kkor3, int racket2_kkor1, int racket2_kkor2,
  91.   int racket2_kkor3, int ball_x, int ball_y, int res_left, int res_right) {
  92.   char space = ' '; //переменая для пробела
  93.   char top = '#'; // переменная для верха/низа
  94.   char left = '#'; // переменная право/лево и ракеток
  95.   char rk = '|';
  96.   char sh = '*'; // переменная шара
  97.  
  98.   // проходим по всем полю для отрисовки
  99.   for (int i = 0; i <= MAX_Y; i++) {
  100.     // printf("%d", i);
  101.     if (i == 0 || i == MAX_Y) { // прописовка верха
  102.       for (int j = 0; j <= MAX_X; j++) {
  103.         printf("%c", top);
  104.       }
  105.       printf("\n");
  106.     }
  107.     // прорисовка тела
  108.  
  109.     if ((i > 0 && i < MAX_Y)) { //прорисовка сторон
  110.       printf("%c", left);
  111.       for (int j = 1; j < MAX_X; j++) {
  112.         if ((i == racket1_kkor1 || i == racket1_kkor2 || i == racket1_kkor3) && j == 7) {
  113.           printf("%c", rk);
  114.         } else if ((i == racket2_kkor1 || i == racket2_kkor2 || i == racket2_kkor3) && j == 73) {
  115.           printf("%c", rk);
  116.         } else if (i == ball_y && j == ball_x) {
  117.           printf("%c", sh);
  118.           /// *******
  119.         } else if (i == (MAX_Y - 3) && j == 3) {
  120.           if (res_left < 10) {
  121.             printf("%d", res_left);
  122.           } else {
  123.             printf("%d", res_left / 10);
  124.           }
  125.         } else if (i == (MAX_Y - 3) && j == 4) {
  126.           if (res_left >= 10) {
  127.             printf("%d", res_left % 10);
  128.           } else {
  129.  
  130.             printf("%c", space);
  131.           }
  132.         } else if (i == (MAX_Y - 3) && j == (MAX_X - 4)) {
  133.           if (res_left >= 10) {
  134.             printf("%d", res_right / 10);
  135.           } else {
  136.  
  137.             printf("%c", space);
  138.           }
  139.         } else if (i == (MAX_Y - 3) && j == (MAX_X - 3)) {
  140.           if (res_left < 10) {
  141.             printf("%d", res_right );
  142.           } else {
  143.             printf("%d", res_right % 10);
  144.           }
  145.         } else
  146.         /// *******
  147.           printf("%c", space);
  148.       }
  149.       printf("%c\n", left);
  150.     }
  151.   }
  152. }
  153.  
  154. int perem() {
  155.   char k = 'k';
  156.   char m = 'm';
  157.   char a = 'a';
  158.   char z = 'z';
  159.   char prin;
  160.   prin = getchar();
  161.   printf("%c\n\n", prin);
  162.   if (prin == k) {
  163.     return 21;
  164.   } else if (prin == m) {
  165.     return 20;
  166.   } else if (prin == a) {
  167.     return 11;
  168.   } else if (prin == z) {
  169.     return 10;
  170.   } else {
  171.     return 0;
  172.   }
  173. };
  174.  
  175. int ball_coord(int * way, int * x, int * y, int Ly, int Ry) {
  176.   //если кто-то из игроков забил гол
  177.   if ( * x == MAX_X - 5) {
  178.     return 0;
  179.   }
  180.   if ( * x == X_MIN + 5) {
  181.     return -1;
  182.   }
  183.   //если мяч ударяется о рокетку (1)
  184.   if (( * way == 2 && * x == MAX_S1 - 1 && * y == Ry + 2)) {
  185.     * way = 4;
  186.     return 1;
  187.   }
  188.   if (( * way == 3 && * x == MAX_S1 - 1 && * y == Ry - 2)) {
  189.     * way = 1;
  190.     return 1;
  191.   }
  192.   if (( * way == 1 && * x == MAX_S + 1 && * y == Ly + 2)) {
  193.     * way = 3;
  194.     return 1;
  195.   }
  196.   if (( * way == 4 && * x == MAX_S + 1 && * y == Ly - 2)) {
  197.     * way = 2;
  198.     return 1;
  199.   }
  200.   //если мяч ударяется о рокетку (2)
  201.   if (( * way == 2) && ( * x == MAX_S1 - 1) && ( * y == Ry || * y == Ry - 1 || * y == Ry + 1)) {
  202.     * way = 1;
  203.     * y = * y - 1;
  204.     * x = * x - 1;
  205.     return 1;
  206.   }
  207.   if (( * way == 3) && ( * x == MAX_S1 - 1) && ( * y == Ry || * y == Ry - 1 || * y == Ry + 1)) {
  208.     * way = 4;
  209.     * y = * y + 1;
  210.     * x = * x - 1;
  211.     return 1;
  212.   }
  213.   if (( * way == 1) && ( * x == MAX_S + 1) && ( * y == Ly || * y == Ly - 1 || * y == Ly + 1)) {
  214.     * way = 2;
  215.     * y = * y - 1;
  216.     * x = * x + 1;
  217.     return 1;
  218.   }
  219.   if (( * way == 4) && ( * x == MAX_S + 1) && ( * y == Ly || * y == Ly - 1 || * y == Ly + 1)) {
  220.     * way = 3;
  221.     * y = * y + 1;
  222.     * x = * x + 1;
  223.     return 1;
  224.   }
  225.   //если мяч ударяется о стенки
  226.   if ( * y == Y_MIN + 1 || * y == MAX_Y - 1) {
  227.     if ( * way == 1) {
  228.       * x = * x - 1;
  229.       * y = * y + 1;
  230.       * way = 4;
  231.       return 1;
  232.     }
  233.     if ( * way == 2) {
  234.       * x = * x + 1;
  235.       * y = * y + 1;
  236.       * way = 3;
  237.       return 1;
  238.     }
  239.     if ( * way == 3) {
  240.       * x = * x + 1;
  241.       * y = * y - 1;
  242.       * way = 2;
  243.       return 1;
  244.     }
  245.     if ( * way == 4) {
  246.       * x = * x - 1;
  247.       * y = * y - 1;
  248.       * way = 1;
  249.       return 1;
  250.     }
  251.   }
  252.   //остальные случаи
  253.   if ( * way == 1) {
  254.     * x = * x - 1;
  255.     * y = * y - 1;
  256.     return 1;
  257.   }
  258.   if ( * way == 2) {
  259.     * x = * x + 1;
  260.     * y = * y - 1;
  261.     return 1;
  262.   }
  263.   if ( * way == 3) {
  264.     * x = * x + 1;
  265.     * y = * y + 1;
  266.     return 1;
  267.   }
  268.   if ( * way == 4) {
  269.     * x = * x - 1;
  270.     * y = * y + 1;
  271.     return 1;
  272.   }
  273.   return 1;
  274. };
  275.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement