Przeglądając forum natknąłem się na temat założony przez owcę który chcesz stworzyć klon Bombermana... Zaciekawiło mnie jak można by to zrealizować i zauważyłem pewien problem który mam nawet przy... Tetrisie. W przypadku Tetrisa naturalne wydaje się że mamy klasę Klocek (kształt, obroty itp.) i jakąś Mapę, może Planszę która przechowuje informacje o aktualnie zajętych polach, usuwa zapełnione linie itp. ale pojawia się pytanie, kto odpowiada za przesuwanie się klocka i dodanie go do mapy? Bo wydaje mi się że jest to na skraju obu klas.
Wróćmy jednak do Bombermana... Znowu mamy mapę na której są różne obiekty (ściany, bomberman, jakieś inne stwory, bomby, bonusy...) naturalne wydaje się że te obiekty powinny mieć jakiś wspólny interfejs. Ale teraz pytanie, kto powinien przesuwać obiekty, przechowywać je i wywoływać pewne zdarzenia? Wykombinowałem coś takiego:
Powiedzmy że Mapa zawiera tablicę w której ma odwołania do obiektów znajdujących się na danych polach (o ile coś jest...), dzięki temu Mapa sprawdza czy inny obiekt może się przemieści na daną kratkę (sprawdza czy MożnaPrzejść?). W razie wybuchu bomby sprawdza które obiekty znajdują się w polu rażenia i wywołuje odpowiednie zdarzenie w obiektach, a one same decydują co mają zrobić (ściana zniknie, stwór zginie, bomba wybuchnie, bonus zniknie,...). A przy poruszaniu sprawdzamy co się dzieje po nadepnięciu (bonus działa na bombermana w jakiś sposób, może jakaś specjalna bomba-mina albo drzwi do następnego lvlu?). Tylko no właśnie... Czy w takim projekcie nie siedzi gdzieś pułapka w którą brnę nieświadomie? Czy w pewnym momencie nie okaże się że mam wszystko zależne od wszystkiego?
Jaka jest Wasza opinia o takim projekcie?
P.S. mam nadzieję że w diagramie za dużo błędów nie zrobiłem... ;)</url></url>