Autor Wątek: Prosta gra w Javie  (Przeczytany 5679 razy)

Offline AS

  • Użytkownik
    • Homepage

# Marzec 07, 2011, 18:54:00
Mam do napisania grę jako projekt z programowania zdarzeniowego. Teoretycznie czasu jest 3-4 miesiące, praktycznie około tygodnia. Prowadzący jest wymagający i ostrzegał, że będzie sprawdzał każdą linijkę kodu jak zły. Mówił, że ma być wielowątkowo, obiektowo, przemyślanie, schludnie, uniwersalnie (na genericach i enumach) i ogólnie grubo. Dopiero raczkuję w Javie i Eclipsie, bazuję na C/C++. Który projekt z poniższych, waszym zdaniem, będzie najlepszym* wyborem?

1. Tysiąc
2. Oczko (Blackjack)
3. Warcaby
4. BomberMan
5. Tanks 1990 z Pegasusa

*Najlepszy = o najwyższym stosunku (grywalność / trudność_wykonania) ew. (grywalność / czas_wykonania)

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline ArekBal

  • Użytkownik

# Marzec 07, 2011, 18:59:44
Bomberman albo tanks. Podobna, przyjemna, mechanika. W tydzień tego nie zrobisz... Nawet na brudno.
Ale spróbuj... bo inaczej się o tym nie dowiesz.

Offline lmmilewski

  • Użytkownik
    • Łukasz Milewski - devblog

# Marzec 07, 2011, 20:13:47
Oczko chyba jest najprostszą grą do zrobienia z wymienionych przez Ciebie. Przynajmniej będziesz mógł się skupić na wymaganiach co do wątków, obiektów, genericów itp.

Chociaż w tym przypadku wielowątkowo i przemyślanie albo obiektowo i przemyślanie czy też uniwersalnie i przemyślanie itd. wydaje się mi być sprzecznością ;-)

Offline cub31993

  • Użytkownik

# Marzec 08, 2011, 09:14:14
A ja bym brał Tanks i zrobił je jako applet. Najszybciej Ci to pójdzie i możliwe, że sie wyrobisz w ten tydzień ;)

Offline Avaj

  • Użytkownik

# Marzec 08, 2011, 11:35:55
ja bym brał tanki i robił je z trybem multiplayer, wtedy układ miałbyś taki:
dzień 1 - kompletujesz wszystkie grafiki i dźwięki, tworzysz podstawowy renderer
dzień 2 - wyświetlasz całą planszę, dorabiasz poruszanie się jednym czołgiem z kolizjami
dzień 3 - dodajesz dowolną ilość czołgów, może jakieś banalne AI
dzień 4 - robisz mechanikę strzałów, niszczenie ścian, powerupy
dzień 5 - robisz wielowątkowość, może jakieś sockety proste żeby multiplayer był
dzień 6 - cd. powyższego
dzień 7 - dorabiasz prosty interfejs, jakaś plansza tytułowa

spokojnie można się w 7 dni wyrobić tylko trzeba się skupić :)

Offline AS

  • Użytkownik
    • Homepage

# Marzec 09, 2011, 14:49:12
Nom, tanki są fajne... Tu są świetnie zrobione we Flashu: http://www.battlecity.com.ua/

Warcaby też wydają mi się dobrym wyborem i chyba łatwiejsze niż tanki. Do tego można fajne AI napisać (na końcu, jak starczy czasu - na początek player vs player). Jeszcze przemyślę sprawę. Pytanie - czy jak najpierw zrobię to jako aplikację okienkową (JFrame), to potem trudne będzie przerobienie tego na aplet?

Chociaż w tym przypadku wielowątkowo i przemyślanie albo obiektowo i przemyślanie czy też uniwersalnie i przemyślanie itd. wydaje się mi być sprzecznością ;-)
Dlaczego? Czasu na myślenie jest sporo.

Offline Xirdus

  • Moderator

# Marzec 09, 2011, 17:13:51
W warcabach raczej nie zrobisz wielowątkowości ;)

mógłby się ten Chrome nauczyć że piszę w dwóch językach a nie jednym...

Offline AS

  • Użytkownik
    • Homepage

# Marzec 09, 2011, 21:28:05
Mogę się mylić, ale nasłuchiwanie elementów GUI dobrze jest puścić w osobnym wątku. AI można puścić w osobnym wątku.
« Ostatnia zmiana: Marzec 09, 2011, 21:30:04 wysłana przez AS »

Offline lmmilewski

  • Użytkownik
    • Łukasz Milewski - devblog

# Marzec 10, 2011, 01:27:12
Dlaczego? Czasu na myślenie jest sporo.
W takim dosłownym znaczeniu to masz rację. Dla mnie "przemyślana architektura" to stwierdzenie bliższe "ma sens, a wykorzystanie konkretnych technik/komponentów ma uzasadnienie" niż "spędziłem nad tym dużo czasu". Miałem na myśli to, że w prostej wersji gry w oczko spełenienie wymagań co do wątków, obiektów, genericów itd. nie ma uzasadnienia.

IMO oczko jest "najlepszym" wyborem biorąc pod uwagę podany wzór. Z prostej przyczyny - mianownik (trudność wykonania, czas wykonania) jest wielokrotnie mniejszy niż w pozostałych przypadkach.

AI można puścić w osobnym wątku.
Można dla zabawy czy faktycznie jest to potrzebne? I jaki jest zysk w stosunku do ilości czasu poświęconego na debuggowanie problemów z wątkami?

Jeżeli wymogiem są wątki, obiekty, genericsy i enumy to skupiłbym się na spełnieniu tych wymagań. Weź najprostszą grę z podanych i ją szybko zaimplementuj. Potem dodawaj featury pod każde z wymagań (pewnie będą sztuczne). Jak zostanie czas, to wiedząc jak każda z tych rzeczy wpływa na projekt będziesz mógł uporządkować kod.

Sytuacja, w której będziesz projektował architekturę z wykorzystaniem wątków, podczas gdy nie masz doświadczenia z wątkami jest niezbyt dobra (to samo tyczy się pozostałych wymagań).

To, co piszę, opiera się mocno na założeniu, że nie masz doświadczenia z wątkami, obiektami, itd. Że to proste ćwiczenie ma Cię nauczyć tych technik. Jeżeli jest inaczej to zapomnij o tym co piszę i wybierz ten projekt, który najchętniej byś komuś pokazał, gdy go skończysz (ja bym wtedy wybrał bombermana ;-) tyle, że w tydzień możesz nie wyrobić się z podstawowym gameplayem)
« Ostatnia zmiana: Marzec 10, 2011, 01:29:40 wysłana przez lmmilewski »