Advertisement
Guest User

Untitled

a guest
Feb 27th, 2020
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.93 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <conio.h>
  4. #include <cstdlib>
  5. #include <windows.h>
  6. using namespace std;
  7.  
  8. void wczytanie(char tab[1000][1000],int &wys,int &szer)
  9. {
  10.     szer=0,wys=0;
  11.  
  12.  
  13.    fstream input("labirynt4.txt",ios::in | ios::binary);
  14.  
  15.    string wiersz;
  16.    getline(input,wiersz);
  17.    szer = wiersz.length();
  18.  
  19.    input.seekg(0,input.end);
  20.    wys=input.tellg()/szer;
  21.  
  22.    input.seekg(0,input.beg);
  23.  
  24.  
  25.     cout << "WYS: " << wys << "  SZER: " << szer << endl;
  26.  
  27.    for(int i=0;i<wys;i++)
  28.    {
  29.         getline(input,wiersz);
  30.         for(int j=0;j<szer;j++)
  31.         {
  32.             tab[i][j]=wiersz[j];
  33.         }
  34.     }
  35.  
  36.     input.close();
  37.  
  38.  
  39. }
  40. void kolorki(int jaki)
  41. {
  42.     SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),jaki);
  43. }
  44. void wyswietlanie(char tab[1000][1000],int wys,int szer,int licznik_krokow)
  45. {
  46.     system("cls");
  47.  
  48.     for(int i=0;i<wys;i++)
  49.    {
  50.        for(int j=0;j<szer;j++)
  51.        {
  52.  
  53.             if(tab[i][j]=='x')
  54.             {
  55.                 kolorki(9);
  56.                 cout << tab[i][j];
  57.                 kolorki(15);
  58.             }
  59.  
  60.             else if(tab[i][j]=='X')
  61.             {
  62.                 kolorki(5);
  63.                 cout << "X";
  64.                 kolorki(15);
  65.             }
  66.             else if(tab[i][j]=='p')
  67.             {
  68.                 kolorki(11);
  69.                 cout << "p";
  70.                 kolorki(15);
  71.             }
  72.             else if(tab[i][j]=='k')
  73.             {
  74.                 kolorki(10);
  75.                 cout << "k";
  76.                 kolorki(15);
  77.             }
  78.             else
  79.             {
  80.                 cout << tab[i][j];
  81.             }
  82.        }
  83.        cout << endl;
  84.    }
  85.    cout << endl;
  86.    cout << "LICZNIK KROKOW:  " << licznik_krokow << endl;
  87. }
  88. void find_p(char tab[1000][1000],int &x,int &y,int wys,int szer)
  89. {
  90.     for(int i=0;i<wys;i++)
  91.    {
  92.         for(int j=0;j<szer;j++)
  93.         {
  94.             if(tab[i][j]=='p')
  95.             {
  96.                 x=j;
  97.                 y=i;
  98.             }
  99.         }
  100.     }
  101. }
  102. void move_p(char tab[1000][1000],int x,int y,int new_x,int new_y)
  103. {
  104.     tab[y][x]='o';
  105.     tab[new_y][new_x]='p';
  106.  
  107. }
  108. bool play(char tab[1000][1000],int x,int y,int wys,int szer,int old_x,int old_y,int &licznik_krokow)
  109. {
  110.  
  111.     //cout << licznik_krokow << endl;
  112.     licznik_krokow++;
  113.     //cout << x << "  " << y << endl;
  114.  
  115.     if(tab[y][x]=='k')
  116.     {
  117.         cout << "TO KONIEC" << endl;
  118.         return true;
  119.     }
  120.     else if(tab[y][x]=='x' || tab[y][x]=='X')
  121.     {
  122.         tab[y][x]='X';
  123.         return false;
  124.     }
  125.     else
  126.     {
  127.         move_p(tab,old_x,old_y,x,y);
  128.         //wyswietlanie(tab,wys,szer,licznik_krokow);
  129.  
  130.         //1-w prawo
  131.         if(tab[y][x+1]!='o')
  132.         {
  133.             if(play(tab,x+1,y,wys,szer,x,y,licznik_krokow))
  134.             {
  135.                 return true;
  136.             }
  137.         }
  138.  
  139.         //2-w lewo
  140.         if(tab[y][x-1]!='o')
  141.         {
  142.             if(play(tab,x-1,y,wys,szer,x,y,licznik_krokow))
  143.             {
  144.                 return true;
  145.             }
  146.         }
  147.  
  148.         //3-w dol
  149.         if(tab[y+1][x]!='o')
  150.         {
  151.             if(play(tab,x,y+1,wys,szer,x,y,licznik_krokow))
  152.             {
  153.                 return true;
  154.             }
  155.         }
  156.  
  157.         //4-w gore
  158.         if(tab[y-1][x]!='o')
  159.         {
  160.             if(play(tab,x,y-1,wys,szer,x,y,licznik_krokow))
  161.             {
  162.                 return true;
  163.             }
  164.         }
  165.  
  166.  
  167.             move_p(tab,x,y,old_x,old_y);
  168.             //wyswietlanie(tab,wys,szer,licznik_krokow);
  169.  
  170.  
  171.         return false;
  172.     }
  173.  
  174.  
  175.  
  176. }
  177.  
  178. int main()
  179. {
  180.     char tab[1000][1000]={""};
  181.     int wys,szer;
  182.  
  183.     int licznik_krokow=0;
  184.  
  185.     wczytanie(tab,wys,szer);
  186.     int xk=0,yk=0;
  187.     int x=0,y=0;
  188.     find_p(tab,x,y,wys,szer);
  189.     find_p(tab,xk,yk,wys,szer);
  190.     //cout << xk << "  " << yk << endl;
  191.     play(tab,x,y,wys,szer,1,1,licznik_krokow);
  192.     cout << licznik_krokow << endl;
  193.  
  194.     return 0;
  195. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement