Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 7.69 KB | None | 0 0
  1. /*
  2.     Недодневник
  3.     Версия Beta 2.0
  4.     Работает правильно
  5.     1)Игрок всегда ноmер 1
  6.     2)Продолжил делать интерфейс
  7.     3)Игра завершается при победе одного из  игроков
  8.     4)Баг:3.2 вместо 1.1. Походу нужно будет разводить подсчёт единиц и двоек в разные циклы
  9.     5)Если разводить,то это ещё +-60 строчек и код утяжелится для компилятора.
  10.     3)Нужны тестировщики
  11.    
  12.         коды ходов
  13.         1.1-победа по вертикал
  14.         1.2- поражение по вертикали
  15.         2.1-победа по диагонали
  16.         2.2- поражение по диагонали
  17.         3.1-победа по горизонтали
  18.         3.2- поражение по горизонтали
  19.    
  20.     Инструкция для тестеровщика
  21.     1)нажми кнопку RUN
  22.     2)вводи координаты точки куда хочешь сходить,в виде :у пробел х. Ты играешь единицами
  23.     3) не ходи в те клетки,которые заняты.Ты,конечно,можешь,но не можешь
  24.     4)после того как сходил,отмотай большой бегунок максимально вниз
  25.     5)игра не завершится после чьей-либо победы
  26.     6)когда игра закончится,будет надпись:game over
  27.     7)для новой игры введи любую надпись кроме "end"
  28.     8)если ИИ сделал неправильный ход,два хода подряд,не сходил-скинь код хода(он будет слева от верхней черты)
  29.    
  30. */
  31. #include <string>
  32. #include <iostream>
  33.  
  34.  
  35. using namespace std;
  36.  
  37. int pole[3][3];
  38. /*        y x
  39.       0 1 2 x
  40.     0 0 1 2
  41.     1 0 1 2                                                                                                            
  42.     2 0 1 2
  43.     y
  44. */
  45. int y,x,gg,ii=0,jj=0,iii=3,jjj=3;
  46.  
  47. void out()//готово
  48. {
  49.     cout<<"_____________________________________"<<endl;
  50.     cout<<pole[0][0]<<pole[0][1]<<pole[0][2]<<endl;
  51.     cout<<pole[1][0]<<pole[1][1]<<pole[1][2]<<endl;
  52.     cout<<pole[2][0]<<pole[2][1]<<pole[2][2]<<endl;
  53.     cout<<"_____________________________________"<<endl;
  54. }
  55. int bestplay(int play)
  56. {
  57.     int win=0,dun=0;
  58.     if(play>2)
  59.     {    
  60.         win=0;
  61.         dun=0;
  62.         for(int i=0;i<3;i++)//чекает по горизонталям
  63.         {
  64.             for(int j=0;j<3;j++)
  65.             {
  66.                 if(pole[i][j]==2)
  67.                 {
  68.                     win++;
  69.                 }
  70.                 if(pole[i][j]==1)
  71.                 {
  72.                     dun++;
  73.                 }
  74.                 if(dun==3)
  75.                 {
  76.                     gg=1;
  77.                     return 0;
  78.                 }
  79.                 if(win==2||dun==2)
  80.                 {
  81.                     for(int k=0;k<3;k++)
  82.                     {
  83.                         if(pole[i][k]==0)
  84.                         {
  85.                             pole[i][k]=2;
  86.                             if(win==2)
  87.                             {
  88.                                 cout<<"3.1";
  89.                                 gg=2;
  90.                                 return 0;
  91.                             }
  92.                             win=0;
  93.                             dun=0;
  94.                             cout<<"3.2";
  95.                             return 0;
  96.                         }
  97.                     }
  98.                 }
  99.             }
  100.             win=0;
  101.             dun=0;
  102.         }
  103.         win=0;
  104.         dun=0;
  105.         for(int i=0;i<3;i++)//чекает по вертикалям
  106.         {
  107.             for(int j=0;j<3;j++)
  108.             {
  109.                
  110.                 if(pole[j][i]==2)
  111.                 {
  112.                     win++;
  113.                 }
  114.                 if(pole[j][i]==1)
  115.                 {
  116.                     dun++;
  117.                 }
  118.                 if(dun==3)
  119.                 {
  120.                     gg=1;
  121.                     return 0;
  122.                 }
  123.                 if(win==2||dun==2)
  124.                 {
  125.                     for(int k=0;k<3;k++)
  126.                     {
  127.                         if(pole[k][i]==0)
  128.                         {
  129.                             pole[k][i]=2;
  130.                             if(win==2)
  131.                             {
  132.                                 gg=2;
  133.                                 cout<<"1.1";
  134.                             }
  135.                             win=0;
  136.                             dun=0;
  137.                             cout<<"1.2";
  138.                             return 0;
  139.                         }
  140.                     }
  141.                 }
  142.             }
  143.             win=0;
  144.             dun=0;
  145.         }
  146.         win=0;
  147.         dun=0;
  148.         for(int i=0;i<3;i++)//чекает по диагоналям
  149.         {
  150.             if(pole[i][ii]==1)
  151.             {
  152.                 dun++;
  153.             }
  154.             if(pole[i][ii]==2)
  155.             {
  156.                 win++;
  157.             }
  158.             if(dun==3)
  159.             {
  160.                 gg=1;
  161.                 return 0;
  162.             }
  163.             if(win==2||dun==2)
  164.             {
  165.                 for(int j=0;j<3;j++)
  166.                 {
  167.                     if(pole[j][jj]==0)
  168.                     {
  169.                         if(win==2)
  170.                         {
  171.                             gg=2;
  172.                             cout<<"2.1";
  173.                             return 0;
  174.                         }
  175.                         pole[j][jj]=2;
  176.                         cout<<"2.2";
  177.                         return 0;
  178.                     }
  179.                     jj++;
  180.                 }
  181.             }
  182.             ii++;
  183.         }
  184.         ii=0;
  185.         jj=0;    
  186.     }
  187.     if(pole[1][1]==0)
  188.     {
  189.             pole[1][1]=2;
  190.             return 0;
  191.         }
  192.     if(pole[0][2]==0)
  193.     {
  194.             pole[0][2]=2;
  195.             return 0;
  196.         }
  197.     for(int i=0;i<3;i++)
  198.     {
  199.         for(int j=0;j<3;j++)
  200.         {  
  201.             if(pole[j][i]==0)
  202.             {
  203.                 pole[j][i]=2;
  204.                 return 0;
  205.             }
  206.         }
  207.     }    
  208.     return 0;
  209.     }
  210.  
  211. void input()//готово
  212. {
  213.     int y;
  214.     int x;
  215.     cin>>y>>x;
  216.     pole[y][x]=1;
  217. }
  218.  
  219. void newgame()//готово
  220. {
  221.    
  222.     for(int i=0;i<3;i++)
  223.     {
  224.         for(int j=0;j<3;j++)
  225.         {
  226.             pole[i][j]=0;
  227.         }
  228.     }
  229.    out();
  230. }
  231.  
  232. int main()//готово
  233. {
  234.     int play=0;
  235.     string kom="a";
  236.     setlocale(LC_ALL,"Russian");
  237.         cin>>kom;
  238.         while(kom!="end")
  239.         {
  240.             newgame();
  241.             for(int i=0;play<9;i++)
  242.             {
  243.                 play++;
  244.                 input();
  245.                 play++;
  246.                 bestplay(play);
  247.                 switch (gg)
  248.                 {
  249.                     case 2:
  250.                         cout<<"ты проиграл"<<endl;
  251.                         play=0;
  252.                         break;
  253.                     case 1:
  254.                         cout<<"ты победил"<<endl;
  255.                         play=0;
  256.                         break;
  257.                 }
  258.                 out();
  259.             }
  260.             cout<<endl<<"game over"<<endl;
  261.             fflush(stdin);
  262.             cout<<"____________________________";
  263.             play=0;
  264.             cin>>kom;
  265.         }  
  266.     return 0;                                                                                                          
  267. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement