Pierwszy projekt w Javie (roguelike)

1

Mój pierwszy program w Java, prosta gra roguelike.

Kod źródłowy: http://wklej.eu/index.php?id=0b5aa7fb8c

Screen:
user image

Proszę o komentarze :D

14

niezły, pisz książkę

5

@0DFh: na którym roku jesteś, że Was uczą pisać taki dobry kod?

13

Czy ty jestes poważny? Czymś takim się chwalić? Mnie by było wstyd przed samym sobą.

                  if(Map[i][j] == '^') 
                    { 
                          g2.setColor(Color.lightGray); 
                    } 
                    if(Map[i][j] == '*') 
                    { 
                          g2.setColor(Color.lightGray); 
                    } 
                    if(Map[i][j] == ',') 
                    { 
                          g2.setColor(new Color(0, 80, 0)); 
                    } 
                    if(Map[i][j] == '&') 
                    { 
                          g2.setColor(Color.green); 
                    } 
                    if(Map[i][j] == '~') 
                    { 
                          g2.setColor(Color.blue); 
                    } 
                    if(Map[i][j] == '.') 
                    { 
                          g2.setColor(new Color(130, 60, 10)); 
                    } 
                    if(Map[i][j] == 'o') 
                    { 
                          g2.setColor(Color.orange); 
                    } 
                    if(Map[i][j] == 'O') 
                    { 
                          g2.setColor(Color.orange); 
                    } 
                    if(Map[i][j] == '0') 
                    { 
                          g2.setColor(Color.orange); 
                    }

Rozumiem że nie umiesz zrobić mapy Map<String,Color> żeby takie potworki zapisywać potem w jednej linijce?

            if (screen == 1) 
            { 
                  g2.setColor(Color.white); 
                  g2.drawString("Jesteś w pewnej wiosce.", 30, 30); 
                  g2.drawString("Wciśnij klawisz 'k', aby kupić jedzenie od wieśniaków.", 30, 100); 
                  g2.drawString("Wciśnij klawisz 'p', aby pracować za pieniądze.", 30, 150); 
            } 
            if (screen == 2) 
            { 
                  g2.setColor(Color.white); 
                  g2.drawString("Musisz być obywatelem, aby wejść do miasta.", 30, 30); 
            } 
            if (screen == 3) 
            { 
                  g2.setColor(Color.white); 
                  g2.drawString("Tylko magowie mogą wejść do klasztoru.", 30, 30); 
            } 
            if (screen == 4) 
            { 
                  g2.setColor(Color.white); 
                  g2.drawString("Jaskinia jest pusta.", 30, 30); 
            } 
            if (screen == 5) 
            { 
                  g2.setColor(Color.white); 
                  g2.drawString("Zostałeś zaatakowany przez wilki.", 30, 30); 
            }

Wiesz że z użyciem tablicy stringów można to zapisać w jednej linijce?

            // narysuj punkty życia 
        g2.setColor(Color.red); 
        g2.drawString("Punkty życia: "+hp, 20, 425); 
        // narysuj ilość złota 
        g2.setColor(Color.yellow); 
        g2.drawString("Złoto: "+gold, 300, 425); 
        // narysuje ilość jedzenia 
        g2.setColor(Color.white); 
        g2.drawString("Jedzenie: "+food, 460, 425); 
        // narysuj opis 

Wiesz że da się zrobić funkcję która przyjmuje kolor i stringa, a nie powielać ten sam kod milion razy?

        if (x == 48 && y == 1) 
        { 
              g2.setColor(Color.lightGray); 
              g2.drawString("Wieje lekki wiatr. Jesteś na drodze.", 15, 455); 
        } 
        if (x == 37 && y == 3) 
        { 
              if (screen == 0) 
              { 
                    g2.setColor(Color.lightGray); 
                    g2.drawString("Stoisz przed wejściem do wioski.", 15, 455); 
              } 
        } 
        if (x == 41 && y == 11) 
        { 
              if (screen == 0) 
              { 
                    g2.setColor(Color.lightGray); 
                    g2.drawString("Stoisz przed wejściem do wioski.", 15, 455); 
              } 
        } 
        if (x == 28 && y == 8) 
        { 
              if (screen == 0) 
              { 
                    g2.setColor(Color.lightGray); 
                    g2.drawString("Stoisz przed wejściem do miasta.", 15, 455); 
              } 
        } 
        if (x == 15 && y == 3) 
        { 
              if (screen == 0) 
              { 
                    g2.setColor(Color.lightGray); 
                    g2.drawString("Stoisz przed wejściem do wioski.", 15, 455); 
              } 
        } 
        if (x == 8 && y == 12) 
        { 
              if (screen == 0) 
              { 
                    g2.setColor(Color.lightGray); 
                    g2.drawString("Stoisz przed wejściem do klasztoru magów.", 15, 455); 
              } 
        } 
        if (x == 6 && y == 18) 
        { 
              if (screen == 0) 
              { 
                    g2.setColor(Color.lightGray); 
                    g2.drawString("Stoisz przed wejściem do jaskini.", 15, 455); 
              } 
        }

Piękny copy-paste. Rozumiem że nie opanowałeś jeszcze funkcji na tyle żeby napisać funkcję która przyjmuje jako argument x,y i stringa? o_O
A sterowanie przepływem programu za pomocą zmiennej "screen" to majstersztyk. Widać że brałeś nauki u kolegi maszynaz...

4

Bałbym się pokazać coś takiego, szczególnie gdybym był autorem książki i tym bardziej promował się pod nazwiskiem... Pracujesz nad spieprzeniem swojego image równie tęgo co kolega polaczek niedawno.

5

opanujcie sie. niektorzy sie ucza I pozniej pisza kod, a niektorzy zeby zrozumiec musza napisac ksiazke. @monk - nigdy nie widzialem zebys sie chwalil kodem, za to codziennie kilka razy widze ze na kogos wjezdzasz

2

To nie jest roguelike, jednym z kluczowych wyznaczników jest losowe generowanie terenu. Screen wygląda jak żywcem wzięty z ADoMa/ADoMa II, pomijając oczywiście status. Sorry, ale co tu jest do pokazywania, że umiesz wyświetlić hardcodowaną tablicę literek ifując przy tym kolory?

1

Że Wy mieliście czas, żeby kod czytać :)

Edit: // aaa to go tak duuuuużo było....
Kolego @0DFh, wybacz, ale nie nazywaj takiego "tworu" projektem, bo to serio projektom uwłacza:) Dobrze widziałem, że tam całą 1 klasa jest ?? :)
Napisz do moda lepiej z prośbą o usunięcie, bo sobie rep psujesz - firmując to jawnie imieniem i nazwiskiem.
pozdro!

0

@0DFh Tak to ma wyglądać? Gdzie jest (jak mniemam małpa) postać gracza? Chodzi się strzałkami?
ss.jpg

2

who da faq is polaczek? Coś tam o jakimś photoPolu się doczytałem. O co kaman? Też chce się pośmiać:) - Antoniossss

szukaj 'photoyebator' na forum - Wibowit 5 minut temu

Poszukałem i szczerze mówiąc nadal nie wiem o co chodzi.
Znalazłem takie wątki:
Czy warto zrobić PhotoMake(PhotoYebator) 2.0?
PhotoYebator 2.0 - pożądane funkcje
PhotoMake 2.0 Premiera Bety

Szczerze mówiąc ten ktoś zrobił coś gigantycznego i coś co przekracza umiejętności 95% ludzi z tego forum :D
Po czym Demonical Monk pisze coś takiego:

Pracujesz nad spieprzeniem swojego image równie tęgo co kolega polaczek niedawno.

I prezentuje swoje "cudo":
http://4programmers.net/Forum/Off-Topic/Oceny_i_recenzje/183557-4p_tower_defense

Komuś się chyba coś pomyliło widzę :D Bo jeśli chodzi o umiejętności to program do obróbki grafiki jest dużo poważniejszy niż gra na poziomie gimnazjum :D

Może ktoś to wyjaśnić?

0

Tyś widzioł -.- po 1. Ta rouglike w porównaniu z 4pTD jest nudnym pykadełkiem, a po 2. 95% ludzi z tego forum jest dużo bardziej doświadczone w swoim fachu niż autor tematu. -

Przecież ja nie pisałem o autorze topicu i jego programie. Czytaj uważnie!

0

Sorki, faktycznie nie doczytałem. Ale i tak nie wiem do końca czy then PhotoYebator to taki hit.

Nic nie szkodzi. Nie wiem czy hit, ale z pewnością coś dużo fajniejszego niż "program" osoby, która podobno wszystkich hejci.

@monk - nigdy nie widzialem zebys sie chwalil kodem, za to codziennie kilka razy widze ze na kogos wjezdzasz

Typowy hejter z tego co widzę, którym nie warto się przejmować.

5

Szczerze mówiąc ten ktoś zrobił coś gigantycznego i coś co przekracza umiejętności 95% ludzi z tego forum :D

Jesteś trollem ponad wszystko, zanim zaczniesz fapować nad programem polaczka zapoznaj się z komentarzami ludzi (w tym reverserów) na temat kodu i równoległymi wątkami, które wtedy toczyły się na forum. Chociażby sytuacja, gdy polaczek udzielał rad na temat projektowania i poprawnego realizowania projektów, a sam w swoim PhotoYebatorze miał zdefiniowane 100 formatek i miliard eventów z nazwą ZielonyiczerwonyClick[0-100]. Z przewyższaniem umiejętności 95% ludzi z tego forum też bym nie był taki pewien, spora część stałych bywalców żyje z programowania i ma potężne doświadczenie.

I prezentuje swoje "cudo"

Doczytaj datę prezentacji tego cuda, treść wątku i nick osoby, która to zalinkowała. Pomylenie "Mystogan" z "Demonical Monk" sugerowałoby konieczność ponownej nauki czytania.

Napisałem jedno zdanie odnosząc się do wcześniejszych wypowiedzi, jako że autor zaczął promować się wraz ze swoją twórczością pod nazwiskiem, książki przez niego pisane są oznaczane jako literatura dla "profesjonalistów" i "elit". Napisałem ze szczerego serca i generalnie mam w dupie to co uważa jakiś przypadkowy troll piszący z gościa poprzez proxy. Ewidentnie widać, że ktoś ma kompleks małego, bo ciągle musi grzebać w historii administratorów i linkować prześmiewczo projekty sprzed iluś lat nie rozumiejąc ani ich kontekstu, ani przeznaczenia. Tako przemówiłem.

Ad. osobniki spamujące w tym wątku: Flejm nie ma nic wspólnego z wątkiem i dalsze posunięcia będę kasował, jak ktoś chce się poznęcać nad całym światem za to, że urodził się debilem to polecam założyć temat "Dlaczego Demonical Monk jest taki feeee" w dziale Flame i tam sobie ulżyć.

6
Demonical Monk napisał(a):

Chociażby sytuacja, gdy polaczek udzielał rad na temat projektowania i poprawnego realizowania projektów, a sam w swoim PhotoYebatorze miał zdefiniowane 100 formatek i miliard eventów z nazwą ZielonyiczerwonyClick[0-100].

O ile dobrze pamiętam, to polaczek po zjechaniu go za kod pierwszego PhotoMake przez deusa, wziął się za siebie, douczył i uczynił pewien postęp (w przeciwieństwie do niektórych innych tutejszych artystów), a rad udzielał później.
Ciągłe wyciąganie tego jest bez sensu.

Kod polaczka może i nie jest super, ale gość przynajmniej potrafił zrobić coś co w miarę działa, a dla większości użytkowników/klientów to się właśnie liczy. Image ocenią pracodawcy, o ile w ogóle będą chcieli zajrzeć na to forum w poszukiwaniu jakiegoś kodu sprzed lat. ;]

Zresztą, mój kod, którym kiedyś chwaliłem się nawet w CV, wcale nie stał dużo wyżej tego poziomu. Każdy kiedyś od czegoś zaczynał, nie każdy od fantastycznego basha, w którym po zgłoszeniu cytatu nie ma żadnego przekierowania, i w którym można zgłaszać ten sam cytat pod rząd jedynie klikając przycisk. ;P

Nie każdy wie od urodzenia, co to jest mapa, tablica czy funkcja, a ten dział jest chyba po to, żeby ludziom takie błędy wytykać. Bo jaki miałby być inny jego sens? Twórzmy tu jakąś społeczność, a nie socjopatię.

2

Wszystko zależy co było przed Javą. Ja w zasadzie nie miałem prawie nic między asemblerem, a Javą (oprócz przeczytania na szybko dwóch książek o C i Pascalu). Pierwszy kontakt z Javą to był szok i ciągłe problemy z odwoływaniem się do pól instancji z metod statycznych. Przez miesiąc chyba w ogóle nie rozumiałem tego podziału na obiekty. Jeśli Farbaniec miał styczność z C++ przynajmniej przez kilka miesięcy, a potem naklepał taki kijowy kod w Javie to jednak nie jest to powód do chwały, bo sposób pisania w C++ i Javie nie różni się znowu jakoś drastycznie.

3

Najpierw odniosę się do autora wątku.
Rozumiem, że pisałeś to na pierwszym roku studiów ale w świetle Twojej dzisiejszej światowej sławy nie powinieneś publikować takiego kodu bo niszczysz swoje dobre imię. Ja może do tego nie przywiązuję jakiejś szczególnie dużej wagi bo każdy jakoś zaczynał... nie każdemu wychodziło to najlepiej.
Co do samej gry to nie jest to roguelike bo nie spełnia jej podstawowych założeń:

Cechą charakterystyczną gier roguelike jest pełna losowość świata.

Wszelkie lochy, potwory, skarby, miasta, a nawet imiona NPC są najczęściej generowane losowo w każdej rozgrywce

Idąc tropem Twojej gry można by powiedzieć, że każda konsolowa gra, w której choćby @ dąży do wyruchania X`a to jest roguelike.
Nie wyobrażam sobie pisania takiej gry bez uprzedniego dogłębnego przeanalizowania mechanizmów i zasady działania.

@JaNicNieRozumiem - faktycznie g**no rozumiesz.
Po jaką cholerę i jakim prawem nawiązujesz z d**y do postów i projektów polaczka? Przecież ten temat traktuje o czymś zupełnie innym a Ty koniecznie chciałeś zatrollować. Do tego z anonima, żeby Cię przypadkiem nikt nie pojechał. Gratuluję odwagi.

@Demonical Monk jeżeli jesteś [CIACH!] za wstawienie tutaj Twojego projektu to sorki. Chciałem po prostu udowodnić @krwq, że się myli. Nie wiedziałem, że wywoła to taką burzę. A co do odgrzebywania historii adminów to było do mnie? Wcale jakoś długo nie szukałem akurat Twojego projektu bo znalazłem go kilka dni temu zupełnie przypadkiem. Jak? Korzystam z Google Chrome i mam włączone wszelakie dynamiczne wyszukiwania i auto uzupełnianie. Jako, że często bywam na tym forum to inteligenta przeglądarka i wyszukiwarka Google myśli, że cokolwiek bym nie chciał wyszukać odnosi się do tego forum. Miałem ochotę wejść na basha i wpisałem 'ludzie.4p' i wyskoczyło mi:

ludzie.4programmers. net demonical td 2#map2

Więc jak @krwq napisał, że nigdy nic nie prezentujesz to zlinkowałem to, żeby pokazać że tak nie jest... nie widziałem, że Cię to tak troszeczkę zdenerwuje. Przecież ta gra jest świetna i to co pisze ten debil z anonima nie powinno Cię tak denerwować!

1 użytkowników online, w tym zalogowanych: 0, gości: 1