CodersCommunity / zabawa-w-refaktoryzacje-challange-forumowy

Mirror z forum
http://tinyurl.com/ovunnv7
MIT License
0 stars 2 forks source link

Szkielet programu zaproponowany przez @efiku #5

Open event15 opened 9 years ago

event15 commented 9 years ago

Update @efiku: Jak zapewne wiemy kod który obecnie refaktoryzujemy to gra Tic tac Toe. Co możemy się dowiedzieć? Zobaczmy na to pod kątem bardziej obiektowym. Każdy obiekt , nie może zmienić swojego stanu. Wg zasad ( walidator ) gracz nie może zrobić więcej niż jednego ruchu. Wynik sprawdzany jest podczas wykonania ruchu przez gracza. Zwróćmy uwagę na to, że w taką grę można zagrać na kartce / ścianie / komputerze - konsolowe , graficznie , ale zasady gry się nie zmieniają. Istnieją takie cuda jak plansza, gracz ( którego bym całkowicie odseparował od systemu , interakcja człowieka z systemem to problem :smile: ) , zasady które określają wygraną.

Chciałbym krótko machnąć szkic aplikacji, w zasadzie to warstwy domenowej? Obecnie jestem jeszcze na etapie studiowania DDD, ale może dobrze rozumiem... To jest tylko i wyłącznie moja propozycja, nie jest to w stylu: Tak macie robić.


Ta warstwa powinna być odseparowana od całej aplikacji w taki sposób, aby dało się testować ją z przeróżnymi kombinacjami.

Wobec tego do dyspozycji możemy mieć następujące VO: Jak wiemy, VO raz stworzone nie może być już modyfikowane.

Oraz Repozytorium:

Cała ta warstwa zajmowałby się tylko dodawaniem do kolekcji / zwracaniem danych z kolekcji na podstawie jakiś kryteriów.


Warstwa aplikacji

Dodawania ( najniższa )

W momencie gdy dostanie zielone światło z warstwy wyżej dodaje do planszy obiekt o określonych kordach.

Walidacji

W tej warstwie mógł by się znajdować walidator z tym magicznym kwadratem. Odwołujący się do kolekcji z planszy Walidacja następuje na podstawie danych z warstwy wyżej

Sterująca ruchem

Otrzymuje dane na temat planowanego ruchu z warstwy wyżej , wołając o sprawdzenie do warstwy niżej. Zielone -> Wola dodawanie. Czerwone -> Wola generator widoku dla remisu / porażki / zwycięstwa

Gracz

Gracz na podstawie warstwy wyżej otrzymuje kordynaty gdzie chce postawić kółko / krzyżyk i obiekt item

Widok

Konsola / Graficznie : Graficznie tutaj pasowałoby pakować np SFML i nigdzie indziej.

efiku commented 9 years ago

@event15 zrobiłem update.