@Hexmage960, post #1226
@Hexmage960, post #1230
Nie zgadzam się z tym. Zgodzę się, że się nadal uczę, ale zrobiłem ogromny postęp w rysowaniu.
@niebuszewo, post #1232
@Hexmage960, post #1234
Selur napisał, że brak mi talentu do rysowania. Z tym można polemizować, bo też innym jakoś moje prace się podobają.
@snajper, post #1235
2. ile było uwag i poprawek na drodze do tych "podobających się prac"? Pisanie w tej sytuacji o talencie nieodparcie kojarzy mi się z:
1. gdyby Twoje prace podobały się 5% odbiorców, też można by powiedzieć "innym jakoś się podobają". :)
@Hexmage960, post #1236
@Hexmage960, post #1234
Zauważ, że zapowiedziałem koniec prac nad nową wersją na koniec czerwca tylko raz i nie chciałem się powtarzać.
@JacK_Swidnik, post #1239
@JacK_Swidnik, post #1242
@JacK_Swidnik, post #1244
@Hexmage960, post #1245
Co jest dobrą wiadomością, to że silnik nowej wersji jest w dużej mierze gotowy. Co jest nowością to lista obiektów, która jest skanowana na bieżąco. Aktualnie jedyny obsługiwany obiekt to bohater
, ale jak będą taśmociągi to również skrzynie będą się samoczynnie poruszać.
Aktualnie dodaję typy kafli.
@amikoksu, post #1247
Ta lista obiektów, to rozumiem w chwili obecnej ten bohater?
To ma być za dwa dni?
Po co?
struct Obiekt { struct MinNode mn; WORD pto; WORD x, y; };
/* Podstawowe typy obiektów */ enum { PTO_BRAK, PTO_SKRZYNIA, PTO_BOHATER };
struct Plansza { struct Pole tab[ PLANSZA_WYS ][ PLANSZA_SZER ]; struct List obiekty; struct Obiekt bohater; WORD bx, by; /* Położenie bohatera */ WORD skrzynie; /* Liczba skrzyń na planszy */ WORD ulozone; WORD dx, dy; /* Kierunek ruchu bohatera */ };
struct Pole { WORD ptp : 4; /* Podstawowy typ podłogi */ WORD pto : 4; /* Podstawowy typ obiektu */ struct Obiekt *ob; };
/* Skanuj listę obiektów (silnik) */ void skanujObiekty( struct Plansza *pl ) { struct Obiekt *ob; for( ob = ( struct Obiekt * ) pl->obiekty.lh_Head; ob->mn.mln_Succ != NULL; ob = ( struct Obiekt * ) ob->mn.mln_Succ ) { switch( ob->pto ) { case PTO_BOHATER: if( pl->dx || pl->dy ) przemiescBohatera( pl, ob ); break; } } }
struct Obiekt *dodajObiekt( struct Plansza *pl, WORD x, WORD y, struct Pole *po ) { struct Obiekt *ob; pl->tab[ y ][ x ].pto = po->pto; if( ob = AllocMem( sizeof( *ob ), MEMF_PUBLIC ) ) { ob->x = x; ob->y = y; AddTail( &pl->obiekty, ( struct Node * ) &ob->mn ); return( ob ); } return( NULL ); }
@mschulz, post #1250
@Hexmage960, post #1251
Proszę kolegi, jest tam podstawowy działający silnik Sokobana.
Silnik gry zawiera się w funkcjach skanujObiekty() i przemiescBohatera().
@mschulz, post #1252
Obecnie sa to w sumie 284 linijki kodu, lacznie z pustymi liniami. Jak dla mnie to nie jest dzialajacy silnik Sokobana, ale ja sie moze nie znam.
PS. Obserwujac historie projektu na GitHub-ie widze ze u ciebie od jakiegos czasu wraz z kazdym kolejnym commitem do repozytorium kodu ubywa.
Github to nie tylko miejsce na gotowe fragmenty programu, tam sie trzyma cale repozytorium.
Sporo, czyli co konkretnie?
I z czym masz największą trudność?
@Hexmage960, post #1254
Brakuje tylko wyliczenia skarbów, drzwi i kluczy i innych elementów w nowej wersji
@Hexmage960, post #1249
/* Podstawowe typy obiektów */ typedef enum { PTO_BRAK, PTO_SKRZYNIA, PTO_BOHATER } ObjectTypes;
struct Obiekt { struct MinNode mn; ObjectTypes pto; WORD x, y; };
@amikoksu, post #1257