54798 wykomentowanie kodu, C++
min zł10 PLN
Opublikowano prawie 14 lat temu
min zł10 PLN
Płatne przy odbiorze
Prosze o wykomentowanie kodu, prowadzacy zadal nam zadanie zeby opisac kod programu
prosilbym o napisanei po ca sa odpowiedznie skladniki , zmienne, funkcje
i jak dzialaja
program jest generatorem labiryntu
kod:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>
#define SZEROKOSC 20
#define WYSOKOSC 10
#define puste(a) (!(a)->gora && !(a)->prawo && !(a)->dol && !(a)->lewo)
typedef class cell_t {
public:
unsigned int gora;
unsigned int prawo;
unsigned int dol;
unsigned int lewo;
unsigned int sciezka;
};
typedef cell_t *labirynt_t;
class funkcje{
public:
void TworzLabirynt (labirynt_t labirynt, int szerokosc, int wysokosc){
labirynt_t mp, labirynt_top;
char sciezki [4];
int odwiedzony, kierunek;
odwiedzony = szerokosc * wysokosc - 1;
mp = labirynt;
labirynt_top = mp + (szerokosc * wysokosc) - 1;
while (odwiedzony) {
kierunek = 0;
if ((mp - szerokosc) >= labirynt && puste (mp - szerokosc))
sciezki [kierunek++] = 0;
if (mp < labirynt_top && ((mp - labirynt + 1) % szerokosc) && puste (mp + 1))
sciezki [kierunek++] = 1;
if ((mp + szerokosc) <= labirynt_top && puste (mp + szerokosc))
sciezki [kierunek++] = 2;
if (mp > labirynt && ((mp - labirynt) % szerokosc) && puste (mp - 1))
sciezki [kierunek++] = 3;
if (kierunek){
odwiedzony--;
kierunek = ((unsigned) rand () % kierunek);
switch (sciezki [kierunek]) {
case 0:
mp->gora = 1;
(mp -= szerokosc)->dol = 1;
break;
case 1:
mp->prawo = 1;
(++mp)->lewo = 1;
break;
case 2:
mp->dol = 1;
(mp += szerokosc)->gora = 1;
break;
case 3:
mp->lewo = 1;
(--mp)->prawo = 1;
break;
default:
break;
}
}else{
do{
if (++mp > labirynt_top)
mp = labirynt;
} while (puste (mp));
}
}
};
void WyswietlLabirynt (labirynt_t labirynt, int szerokosc, int wysokosc){
int w, h;
char *line, *lp;
line = (char *) calloc ((szerokosc + 1) * 2, sizeof (char));
labirynt->gora = 1;
(labirynt + (szerokosc * wysokosc) - 1)->dol = 1;
for (lp = line, w = 0; w < szerokosc; w++) {
*lp++ = \'@\';
if ((labirynt + w)->gora)
*lp++ = ((labirynt + w)->sciezka) ? \'.\' : \' \';
else
*lp++ = \'@\';
}
*lp++ = \'@\';
(void) puts (line);
for (h = 0; h < wysokosc; h++) {
for (lp = line, w = 0; w < szerokosc; w++) {
if ((labirynt + w)->lewo)
*lp++ = ((labirynt + w)->sciezka && (labirynt + w - 1)->sciezka)? \'0\': \' \';
else
*lp++ = \'@\';
*lp++ = ((labirynt + w)->sciezka) ? \'.\' : \' \';
}
*lp++ = \'@\';
(void) puts (line);
for (lp = line, w = 0; w < szerokosc; w++) {
*lp++ = \'@\';
if ((labirynt + w)->dol)
*lp++ = ((labirynt + w)->sciezka && (h == wysokosc - 1 ||(labirynt + w + szerokosc)->sciezka)) ? \'.\' : \' \';
else
*lp++ = \'@\';
}
*lp++ = \'@\';
(void) puts (line);
labirynt += szerokosc;
}
getch();
};
};
funkcje funkcja;
int main (int argc, char *argv []){
int szerokosc = SZEROKOSC;
int wysokosc = WYSOKOSC;
labirynt_t labirynt;
labirynt = (labirynt_t) calloc (szerokosc * wysokosc, sizeof (cell_t));
[login to view URL] (labirynt, szerokosc, wysokosc);
[login to view URL] (labirynt, szerokosc, wysokosc);
}
Identyfikator projektu: 5628624
Informację o projekcie
Zdalny projekt
Aktywny 14 lat temu
Szukasz sposobu na zarobienie pieniędzy?
Korzyści ze składania ofert na Freelancer.com
Ustal budżet i ramy czasowe
Otrzymuj wynagrodzenie za swoją pracę
Przedstaw swoją propozycję
Rejestracja i składanie ofert jest bezpłatne