mm4tt / yapg

Yet another phone game
2 stars 0 forks source link

i003_z005(Enemy position) #13

Closed mm4tt closed 11 years ago

mm4tt commented 11 years ago

W klasie enemy współrzędne odpowiadają współrzędnym na ekranie. Takie rozwiązanie jest:

  1. Niespójne z resztą kodu
  2. Nieeleganckie, wszędzie poza rysowaniem trzeba przeliczać współrzędne
  3. Niepoprawne w sensie naszego "frameworku", przeplata się położenie obiektu w silniku z rysowaniem go, te rzeczy powinny być niezależne. Utrudnia to robienie zmian

Należy przepisać klasę Enemy, tak by Vector position zawierał położenie w silniku (w sensie, współrzędne kafelka-bloku), a nie współrzędne na ekranie

mm4tt commented 11 years ago

Stefan, wyjdź od brancha i003 i jak skończysz, to zmerguj znowu do i003. To będzie punkt wyjścia dla pozostałych

mm4tt commented 11 years ago

To samo dotyczy bomb

mm4tt commented 11 years ago

Jak i klasy Explosion

mm4tt commented 11 years ago

Poprawka: Wyjdź od brancha mojego taska i003_z004_2( o ile nie będzie już zmergowany do brancha iteracji) Poprawiłem tam wyświetlanie, tak żeby było możliwe zmiana wielkości mapy i wielkości kafalek.

mm4tt commented 11 years ago

Kolejna rzecz. Wywal to całe płynne ruszanie się wrogów. Mieszasz model silnika z wyświetlaniem, przez to inne osoby mają problemy z akcelerometrem czy modyfikatorami. GameObject.position reprezentuje, na której kafelce znajduje się obiekt. Nie ma stanów pośrednich.

Zrób to na razie tak, żeby "skakał" po tych kafelkach, bez płynności. Wtedy wszystko będzie spójne i dużo, dużo prostsze.

Jak będziesz chciał dodać płynność ruchu, to jest zdanie warstwy grafiki(wyświetlania). Powinno się to zrobić przez odpowiednią animację, bez naruszania modelu silnika. Napisz do mnie to opiszę Ci jak to można zrobić

mzglicz commented 11 years ago

Stefan użyłeś goto . Nie wiedziałem, że sie tego używa. Myślałem, że to jest kiepska praktyka programistyczna

W dniu 4 maja 2013 11:27 użytkownik IIUJ-MateuszMatejczyk < notifications@github.com> napisał:

Kolejna rzecz. Wywal to całe płynne ruszanie się wrogów. Mieszasz model silnika z wyświetlaniem, przez to inne osoby mają problemy z akcelerometrem czy modyfikatorami. GameObject.position reprezentuje, na której kafelce znajduje się obiekt. Nie ma stanów pośrednich.

Zrób to na razie tak, żeby "skakał" po tych kafelkach, bez płynności. Wtedy wszystko będzie spójne i dużo, dużo prostsze.

Jak będziesz chciał dodać płynność ruchu, to jest zdanie warstwy grafiki(wyświetlania). Powinno się to zrobić przez odpowiednią animację, bez naruszania modelu silnika. Napisz do mnie to opiszę Ci jak to można zrobić

Reply to this email directly or view it on GitHubhttps://github.com/bbsszz/yapg/issues/13#issuecomment-17430403 .

Pozdrawiam, Maciej Zgliczyński

MaciejPuczkowski commented 11 years ago

Tu muszę wziąć w obronę Stefana, ja też użyłem goto. Nie jest to zła praktyka, w jednej sytuacji - wychodzenia z zagnieżdżonej pętli. Dlatego też w java ( i widocznie C#) zachowała goto, które jest dozwolone właśnie jedynie przy pętli. Zamiast ifować na każdym poziomie pętli warunek zakończenia lub rzucać wyjątkiem (bo takie rozwiązanie też widziałem), używa się goto. Jest to jedyny uzasadniony przypadek użycia goto.

mzglicz commented 11 years ago

Rozumiem jeżeli masz 4 zagnieżdżone for-y i chesz wrócić na poziomy 2 to można to robić goto. Ale w waszych przypadkach return zrobił by to samo. W twoim akurt to samo a w Stefana wystarczyła by return FunkcjaKtoraRobiToSamoCoToPoGoto(jakies parametry)

A co do wykorzystywania w javie : http://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html

Dobra sprawa gutsutu. Ja byłem w szoku. Nauczyłem się czegoś nowego.

W dniu 4 maja 2013 11:54 użytkownik Maciej Puczkowski < notifications@github.com> napisał:

Tu muszę wziąć w obronę Stefana, ja też użyłem goto. Nie jest to zła praktyka, w jednej sytuacji - wychodzenia z zagnieżdżonej pętli. Dlatego też w java ( i widocznie C#) zachowała goto, które jest dozwolone właśnie jedynie przy pętli. Zamiast ifować na każdym poziomie pętli warunek zakończenia lub rzucać wyjątkiem (bo takie rozwiązanie też widziałem), używa się goto. Jest to jedyny uzasadniony przypadek użycia goto.

Reply to this email directly or view it on GitHubhttps://github.com/bbsszz/yapg/issues/13#issuecomment-17430702 .

Pozdrawiam, Maciej Zgliczyński

stefuncho commented 11 years ago

Poprawiłem działanie duszków i bomb. Bomby mają teraz jeszcze większe konstruktory bo z zasięgiem. Wszystkie współrzędne są zapisywane w polu Position. W sumie jeśli chodzi o moje klasy, to pola x i y z GameObject można nawet wyrzucić. Zastanawiałem się, czy nie wstawić Position do GameObject, ale póki co zostawiłem jak jest. O, i nie ma już goto :dancers: