2011-03-12 19 views
5

Robię gry internetowe w Javie i mając problemy za każdym razem, gdy dostaję się do projektowania GUI, zazwyczaj patrzę na inne kody i kopiuję większość projektu, i nie mogę zdecydować, który projekt powinienem posługiwać się. Użyłem Applet, Canvas, JFrame. Potrzebuję głównej pętli i funkcji rysowania, które zmieniają się między różnymi grami. Więc jakiej klasy powinienem używać i jaki projekt, który jest lepszy, dlaczego, może linki do przydatnych samouczków i przykładów ... Proszę wyjaśnij swoją sugestię. Dzięki.Projektowanie apletów sieciowych

Odpowiedz

4

Jeśli potrzebujesz kodu do analizy, powinieneś wypróbować Killer Game Programming in Java

To dobra książka, nawet jeśli teraz używa starych bibliotek. Kupiłem to kilka lat temu. Jeśli nie masz ochoty go kupować, nadal możesz pobrać cały kod źródłowy ze strony internetowej:

Możesz dość łatwo odciąć wybór między używaniem apletu lub Java Web Start. Jeśli zostałby wybrany, wybrałbym JWS, ponieważ łatwiej jest skonfigurować środowisko programistyczne do debugowania.

Te dwa linki pokazują, jak korzystać z JFrame v kanwie:

  1. JFramehttp://download.oracle.com/javase/tutorial/uiswing/components/frame.html

  2. Płótnohttp://en.wikibooks.org/wiki/Java_Programming/Canvas

1

Chciałbym rozwijać aplikację przy użyciu JFrame, która zawiera w sobie JPanels.

Kiedy jesteś gotowy, aby przejść do sieci, możesz użyć java web start, aby uruchomić JFrame.

Użyłem samouczków java od Sun i były one bardzo skuteczne.

+0

http://stackoverflow.com/tags/java-web-start/info –

+0

dlaczego nie aplet lub płótno? czy możesz pokazać kilka linków. – Vladp

2
  • Aplet (lub JApplet) jest osadzony na stronie internetowej, a zatem ma tylko miejsce przydzielone mu przez przeglądarkę. Pozostaje tam tak długo, jak wyświetlana jest strona.
  • Właściwa (J) Rama to własne okno, które może być tak duże, jak pozwala na to system okien (i rozmiar ekranu) - i można je zamknąć bez zamykania strony przeglądarki (i apletu).

To główna różnica. Możesz po prostu zrobić swój rysunek we własnym płótnie (dla AWT) lub JPanelu (dla Swinga) i umieścić je w aplecie (J) lub ramce (J), tym samym rozdzielając różnicę między nimi, dopóki nie będziesz gotowy do podjęcia decyzji.

0

Możesz napisać klasę otoki, która pozwala twojej grze działać jako aplet (JApplet) lub jako aplikacja oparta na JFrame.

Następnie zapisałbym cały twój specyficzny dla gry kod na JPanelu dodanym jako dziecko JApplet lub JFrame. Możesz użyć JPanela dokładnie w ten sam sposób, w jaki wcześniej używałeś Canvas.

Przykładowy kod poniżej:

import javax.swing.JApplet; 
import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JPanel; 

public class AppletApp extends JApplet { 

    public void init() { 
     // do any applet-specific initialisation here 
     getContentPane().add(new AppPanel()); 
    } 

    private static final class AppPanel extends JPanel { 
     public AppPanel() { 
      // do any common initialisation here 
      add(new JButton("Hello World!")); 
     } 
    } 

    public static void main(String[] args) { 
     // do any frame-specific initialisation here 
     JFrame f=new JFrame("Frame"); 
     f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 

     AppPanel appPanel=new AppPanel(); 

     f.getContentPane().add(appPanel); 
     f.pack(); 
     f.setVisible(true); 
    } 
} 

Oczywiście to tylko przykład zabawka - normalnie którą chcesz oddzielić AppPanel się w osobnym pliku klasy etc .....

0

Jak Paulo Ebermann powiedział opracowanie własne płótna lub jakikolwiek inny składnik t na wyświetlaczu to najlepsze podejście (według mojej opinii).

Wybór komponentu zależy również od wybranych bibliotek. Jeśli rozwijasz tylko przy użyciu Java2D standardowe komponenty Java są wystarczające. Po przejściu na LWJGL, JOGL lub inne biblioteki często udostępniają własne komponenty.

Szczególnie JOGL zapewnia również specjalny sposób na wdrożenie pętli gry, ponieważ jest on napędzany przez wątek o nazwie Animator. Jeśli chcesz, aby twój projekt był kompatybilny z JOGL, musisz uczynić pętlę gry zgodną z tym wątkiem.