• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Gra "Statki" w javie

Object Storage Arubacloud
0 głosów
2,278 wizyt
pytanie zadane 8 kwietnia 2016 w Java przez Aisekai Nałogowiec (42,190 p.)
edycja 9 kwietnia 2016 przez Aisekai
Witam.

Kiedyś napisałem taki bardzo prosty program do gry w statki w konsoli. Cóż za frajda, 9 pól które trzeba wpisywać ręcznie. Teraz już programuje GUI i postanowiłem, tak dla siebie, że te statki napiszę w graficzny sposób. Jeszcze nie umiem podmieniać tła, więc wszystko jest czysto schematycznie. Teraz czas na pytania:

1. Gdzie umieścić losowe ustawianie statków w tablicy 9x9, zachowując jednocześnie zasady statków (nie mogą się stykać)? W konstruktorze okna? W main? Stworzyć JMenu i dać opcje "Nowa gra" i tam? Kod: https://dpaste.de/xRcb

2. Jak się zabrać za napisanie takiego algorytmu, który by sam losował gdzie i w jaki sposób rozłożyć statek (w poziomie czy w pionie)?

3. Jak zrobić tak, żeby na określony czas uniemożliwić graczowi naciskanie przycisków, nie chodzi mi tutaj o setEnabled (czy jakoś tak), chcę żeby jakoś to wyglądało. Ewentualnie na jakiś czas (fajnie byłoby jakby komputer udawał, że myślenie zajmuje mu około 1 sekundy)  wyłączyć ActionListenera dla przycisków.

Z góry dzięki za odpowiedzi. Jeśli macie jakieś rady, przydatne funkcje etc. który by mi pomogły w tym "projekcie (?)" będę wdzięczny. Z góry dzięki za odpowiedź.

Ps: mam pewien pomysł odnośnie tego, tzn powiększyłbym tablice z współrzędnymi z 9x9 na 10x10 jednocześnie tworząc tylko 9x9 przycisków. Wypelnilbym (inną, która przechowywalaby w jakiś sposob informacje, czy statek się tam znajduje) tablicę nie typem boolean tylko int, najpierw wszędzie na 0. Potem wylosowalbym jakaś parę liczb i wypelnilbym pola statku np 1, a obok w pętli 2. I pętla while bym ustawil wszystkie statki. W miarę dobry pomysł?

1 odpowiedź

0 głosów
odpowiedź 9 kwietnia 2016 przez bumpMind Gaduła (4,260 p.)

Sam mam zamiar napisać tego typu gierkę w niedalekiej przyszłości :P

Odnośnie pytań:

  1. Wypełnianie "planszy" zrobił bym na zasadzie przycisku który wywołuje funkcję wypełniającą ją statkami czyli coś na wzór drugiej przedstawionej przez Ciebie opcji.
  2. Wersją prostszą było by ręczne wprowadzanie miejsc statków (coś na wzór gorącego krzesła na dwie osoby) ale generacja też nie jest rzeczą strasznie trudną. Podszedł bym do tego poprzez stworzenie gotowych "modeli" dla różnych wielkości statków tj. z góry ile i jak połączone będą ich pola. Następnie losowe wybieranie pól do wstawienia i sprawdzanie czy dany obiekt może zostać tam umieszczony.
  3. Korzystając z GUI warto zainteresować się podstawami wielowątkowości tj. w tym przypadku chcąc emulować "myślenie" komputera jeden wątek odpowiadał by za samo wyświetlanie zawartości okna natomiast drugi za znajdujące się pod nim metody i obliczenia. Mając tak podzielony program możesz usypiać wątek (przykładowo metoda sleep() z określonym czasem) z metodami gdzie komputer losuje pole i nie powodując ścięcia okna zmienić na krótki czas aktywność przycisku oraz jego zawartość np. na "Czekaj..."

Tak więc to tyle z mojej strony, nie są to jakieś pro rady ale zwykłe subiektywne propozycje. W każdym razie powodzenia ;)

komentarz 9 kwietnia 2016 przez Aisekai Nałogowiec (42,190 p.)
Odnośnie pierwszego. Stworzona planszę to mam, tylko nie wiem gdzie mam umieścić (w przyszłości) np algorytm losujacy i innne bebechy odpowiadajace, za dzialanie programu. Na pewno nie w ActionListenerach buttonu. Dzięki

Nie doczytałem :) Czyli te wszystkie funkcje w ActionListener przycisku tak?
komentarz 9 kwietnia 2016 przez bumpMind Gaduła (4,260 p.)
Miałem na myśli coś w rodzaju przycisku "Nowa gra", który już tak bardziej uniwersalnie po pierwsze wyczyści plansze a następnie wygeneruje ją od nowa. W ActionListnerze myślę że nie warto umieszczać całego kodu tylko wywoływać w nim funkcje które zrobią określoną czynność np w tym przypadku:  wyczyscPlansze() i generujPlansze(). :)

Edit. Chodzi o przycisk obok planszy, sama plansza może być widoczna od samego początku ale nie aktywna

Podobne pytania

0 głosów
3 odpowiedzi 491 wizyt
pytanie zadane 8 lutego 2017 w Java przez NeAst Obywatel (1,170 p.)
0 głosów
2 odpowiedzi 1,299 wizyt
pytanie zadane 16 stycznia 2019 w Nasze projekty przez Mavannkas Bywalec (2,290 p.)
0 głosów
3 odpowiedzi 1,799 wizyt
pytanie zadane 20 maja 2016 w C i C++ przez mat07 Nowicjusz (160 p.)

92,579 zapytań

141,432 odpowiedzi

319,663 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...