Czytalem posty ktore mowia ze kilkadziesiat lini kodu nie ma szans na skomentowanie a czy moglby ktos skomentowac kilka linijek oto link do tematu.
http://4programmers.net/Forum/viewtopic.php?id=150082
potrzebuje komentarzy do funkcji znTrase();.
bulibrb napisał(a)
potrzebuje komentarzy do funkcji znTrase();
bulibrb napisał(a)
kilkadziesiat lini kodu nie ma szans na skomentowanie
Sam sobie odpowiedziałeś.
kilka a kilkadziesiąt to chyba różnica
bulibrb napisał(a)
kilka a kilkadziesiąt to chyba różnica
Dla mnie kilkadziesiąt to liczby od 20 do 99. Ta funkcja ma 63, czy coś koło tego...
a mógłbyś mi pomóc??
bulibrb napisał(a)
a mógłbyś mi pomóc??
A z czym konkretnie masz problem? Prośba o wyjaśnienie funkcji z powodu "bo nie rozumiem" nie jest konkretem. Czego konkretnie nie rozumiesz?
nie rozumiem dlaczego musza tam sie znajdowac zmienne statyczne oraz zmienne str oraz straz
Wklej to w tag < cpp >, bo czytać się nie chce
tzn ta funkcje??
#include <iostream>
#include <fstream>
#include <conio.h>
using namespace std;
int wspX, wspY, rozX, rozY;
char **tab;
void wczytlab();
void pokazlab();
bool wprStart();
bool wprKoniec();
bool czywczyt;
void znTrase();
void wczytlab()
{
int wyb;
cout<< "wybierz labirynt: 1 lub 2"<<endl;
cin >> wyb;
rozX=20;
rozY=20;
fstream plik;
czywczyt= true;
if(wyb==1)
plik.open("labirynt.txt",ios::in);
else
plik.open("labirynt2.txt",ios::in);
system("cls");
if(!plik)
{
czywczyt=false;
cout<<"Nie wczytano labiryntu"<<endl;
}
if(czywczyt)
{
int i=0,j=0;
char t;
tab = new char*[rozX];
tab[0]=new char[rozY];
while(!plik.eof())
{
plik.get(t);
if((int)t==10)
{
i++;j=0;
tab[i]=new char[rozX];
continue;
}
tab[i][j]=t;
j++;
}
}
plik.close();
}
void pokazlab()
{
if(!czywczyt)
{
cout<<"NIE WCZYTANO PLIKU NIE MA CZEGO OGLADAC"<<endl;
return;
}
int i,j;
char t;
for(i=0;i<rozX;i++)
{
for(j=0;j<rozX;j++)
{
t=tab[i][j];
if(t=='2')
cout <<" ";//(char)254;
else if(t=='1')
cout <<(char)219;
else if(t=='3')
cout <<"W";
else if(t=='4')
cout <<"S";
else
cout <<t;
}
cout<<"\n";
}
}
bool wprStart()
{
int x,y;
cout<<"Wprowadz wspolrzedne startu:"<<endl;
cout<<"Podaj wspolzedna X: ";
cin>>x;
cout<<"Podaj wspolzedna Y: ";
cin>>y;
if((x-1<0 || x-1>rozX-1) || (y-1<0 || y-1>rozY-1))
{
cout<<"PODALES NIEWLASCIWY ZAKRES"<<endl;
getch();
return false;
}
else
{
if(tab[y-1][x-1]=='2')
{
wspX=x-1;
wspY=y-1;
tab[y-1][x-1]='4';
return true;
}
else
{
cout<<"TRAFILES W W SCIANE"<<endl;
getch();
return false;
}
}
}
bool wprKoniec()
{
int x,y;
cout<<"Wprowadz wspolrzedne konca:"<<endl;
cout<<"Podaj wspolzedna X: ";
cin>>x;
cout<<"Podaj wspolzedna Y: ";
cin>>y;
if((x-1<0 || x-1>rozX-1) || (y-1<0 || y-1>rozY-1))
{
cout<<"PODALES NIEWLASCIWY ZAKRES"<<endl;
getch();
return false;
}
else
{
if(tab[y-1][x-1]=='2')
{
tab[y-1][x-1]='3';
return true;
}
else
{
cout<<"TRAFILES W W SCIANE"<<endl;
getch();
return false;
}
}
}
void znTrase(int x,int y,int straz)
{
static int pY,pX, find;
int moz=0,biezX,biezY,str;
if(find==1)
return;
system("cls");
pokazlab();
str=straz+1;
if(x==-1 || y==-1)
x=wspX,y=wspY;
pX=x;
pY=y;
while(moz<4)//dla danej opozycji mogą być max 4 drogi (góra dół lewo prawo)
{
//okreslenie mozliwej pozycji wzgledem bieżącego położenia pozycji
if(moz==0)
{
biezX=x;
biezY=y-1;
}
else if(moz==1)
{
biezX=x+1;
biezY=y;
}
if(moz==2)
{
biezX=x;
biezY=y+1;
}
if(moz==3)
{
biezX=x-1;
biezY=y;
}
//jeśli bieżąca pozycja wykracza poza labirynt to bierz następną
if((biezX<0 || biezX>rozX-1) || (biezY<0 || biezY>rozY-1))
{
moz++;
continue;
}
else
{
//jesli nie wykracza i jest drogą to nią idź
if(tab[biezY][biezX]=='2')
{
tab[biezY][biezX]='.';
znTrase(biezX,biezY,str);
}
//jesli nie wykracza i jest jakimś wyjściem to znalałes wyjście
else if(tab[biezY][biezX]=='3')
{
cout<<"WYJSCIE !!!!"<<endl;
//getch();
find=1;
return;
}
moz++;
}
}
}
int main(void)
{
wczytlab();
pokazlab() ;
wprStart();
wprKoniec();
system("cls");
znTrase(-1,-1,0);
return 1;
}
a tutaj przykladowy labirynt:
11111111111111111111
12222222212222222221
12111111211111111121
12122222222221212221
12111211211111112121
12111211222222222221
12111211211211112121
12111211211211112121
12111211211211112121
12222222211211112121
12111211222222222221
12111211211121121111
12111211211121121111
12222222211121121111
12111111211121121111
12222222222222222211
11121121211121111211
11121121211121111211
11122221211122222221
11111111111111111111
przykladowe współrzedne startu(2,2), konca (19,19)
prosze o pomoc :)