

= JME 3 Tutorial (1) - Tworzymy SimpleApplication

Poprzednie: <<jme3#installing_jmonkeyengine_3,Instalacja JME3>>,
Następne: <<hello_node_pl#,Hello Node>> +
+

W tym tutorialu zakładamy, że już <<jme3#installing_jmonkeyengine_3,pobrałeś oraz odpowiednio ustawiłeś jMonkeyEngine3>> w swoim środowisku programistycznym. +
+

Tak więc jesteś gotowy na stworzenie pierwszej w gry w jMonkeyEngine3 ! Możesz korzystać z tych wprowadzających tutoriali pracując w praktycznie dowolnym środowisku programistycznym (IDE), takim jak jMonkeyEngine SDK, NetBeans, Eclipse, lub po prostu uruchamiać wszystko z wiersza poleceń. +
+




== Czas na SimpleApplication

Stwórzmy pakiet `jme3test.helloworld` oraz plik `HelloJME3.java`. +
+

W środowisku NetBeans, klikamy prawym przyciskiem myszy na Source Packages :


*  Wybieramy `New… &gt; Java Class` aby stworzyć nowy plik.
*  Wprowadzamy nazwę klasy: `HelloJME3`
*  Wprowadzamy wartość dla package: `jme3test.helloworld`
*  Klikamy Finish.


=== Przykładowy kod źródłowy

Jak widzimy stworzony został plik HelloJME3.java. Skopiuj poniższy kod do niego:


[source,java]

----

package jme3test.helloworld;
import com.jme3.app.SimpleApplication;
import com.jme3.material.Material;
import com.jme3.math.Vector3f;
import com.jme3.scene.Geometry;
import com.jme3.scene.shape.Box;
import com.jme3.math.ColorRGBA;
/** Przykład 1 - zaczynamy prace z najprostsza aplikacja.
 * Wyswietlamy trojwymiarowy szescian i spogladamy na niego z wszystkich stron
 * poprzez ruch mysza lub klawisze WSAD. */
public class HelloJME3 extends SimpleApplication {
    public static void main(String[] args){
        HelloJME3 app = new HelloJME3();
        app.start();
    }
    @Override
    public void simpleInitApp() {
        Box b = new Box(Vector3f.ZERO, 1, 1, 1);
        Geometry geom = new Geometry("Box", b);
        Material mat = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
        mat.setColor("Color", ColorRGBA.Blue);
        geom.setMaterial(mat);
        rootNode.attachChild(geom);
    }
}
----

Zbuduj i uruchom klasę HelloJME3. Jeżeli ukaże się jakiekolwiek okno dialogowe, potwierdź domyślne ustawienia.


.  Zobaczysz okno, w którym wyświetlany jest sześcian.
.  Możesz nawigować w oknie za pomocą klawiszy WASD oraz myszy.
.  Naciśnij klawisz Escape, aby wyłączyć aplikację.

Gratulacje, coś w końcu działa. Jak jednak to zrobiłeś?



== Jak to wszystko zrozumieć?

Poniżej przedstawione są podstawowe zasady, którymi “rządzą się gry wykonane w JME3:



=== Start gry

Zauważ, że klasa HelloJME3.java class rozszerza `com.jme3.app.SimpleApplication`, która z kolei jest podklasą `com.jme3.app.Application`. Każda gra wykonana w JME3 jest egzemplarzem `com.jme3.app.Application` (pośrednio lub bezpośrednio). +
+

Aby uruchomić grę, musisz na początku stworzyć egzemplarz odpowiedniej klasy, następnie wywołać jego metodę `start()`:


[source,java]

----

HelloJME3 app = new HelloJME3();
app.start();

----

*Porada:* Jeżeli jesteś zaawansowanym programistą języka Java możesz stworzyć kopię `SimpleApplication`  i używać jej jako szablonu dla własnych klas.



=== Inicjalizacja sceny

Ta prosta “gra składa się tylko z sześcianu. Poniżej zaprezentowany jest kod, który odpowiada za jego stworzenie, wypozycjonowanie, nadanie koloru oraz samo podpięcie do sceny. (Tymi wszystkimi szczegółami zajmiemy się nieco później.)


[source,java]

----

    public void simpleInitApp() {
        Box b = new Box(Vector3f.ZERO, 1, 1, 1); // tworzy ksztalt szescianu
        Geometry geom = new Geometry("Box", b);  // tworzy geometrie szescianu z ksztaltu
        Material mat = new Material(assetManager,
         "Common/MatDefs/Misc/Unshaded.j3md"); // tworzy material
        mat.setColor("Color", ColorRGBA.Blue); // ustawia kolor materialu
        geom.setMaterial(mat);                   // przypisuje material do szescianu
        rootNode.attachChild(geom);              // podpina szescian do sceny
    }
----

Metoda `simpleInitApp()` jest automatycznie wywoływana raz, kiedy uruchamiana jest gra. W tej metodzie tworzysz lub wczytujesz obiekty zanim zacznie się gra! Tak wygląda standardowy proces:


.  Przygotowanie obiektów gry:
**  Stwórz lub wczytaj wszystkie obiekty i rozmieść je odpowiednio.
**  Aby geometria (jak przykładowo pudełko) ukazała się na scenie, podepnij ją do `rootNode`.
**  Przykłady: Wczytaj gracza, teren, niebo, wrogów, przeszkodzy i umieść je w odpowiednich miejsach.

.  Przygotowanie zmiennych gry:
**  Zmienne w grze “śledzą stan gry. Należy ustawić poprawne wartości początkowe.
**  Przykłady: Ustaw `wynik` na 0, a `zdrowie` na 100% i tak dalej.

.  Przygotowanie nawigacji:
**  Poniższe klawisze są ustawione domyślnie:
***  W,A,S,D – Poruszanie się
***  Mysz i strzałki – Zmiana pozycji kamery
***  Escape - Opuszczanie aplikacji



W JME3 kluczowym obiektem jest `rootNode`. Wszystko co jest podpięte do rootNode pojawia się na scenie. Innymi słowy: Obiekt który został stworzony, ale nie jest podpięty do rootNode, pozostaje niewidoczny.



== Podumowanie

Te kilka linijek kodu, nie  nothing but display a static object in 3-D, but they already allow you to navigate around in 3D. Dowiedziałeś się również, że SimpleApplication jest naprawdę dobrym miejscem na start ponieważ masz już:


*  metodę `simpleInitApp()` służąca inicjalizacji obiektów gry
*  `rootNode` where you attach geometries to make them appear in the scene
*  domyślne ustawienia nawigacyjne

W prawdziwej grze, musisz:


.  Initialize the game world,
.  Trigger actions in the event loop,
.  Respond to user input.

W kolejnych tutorialach dowiesz się, jak te zadania mogą zostać wykonane w jMonkeyEngine! +
+

Przejdź do lekcji  <<hello_node_pl#,Hello Node>> , gdzie na początku pokażemy Ci więcej szczegółów how to initialize the game world, also known as the scene graph.

'''

Zobacz również: <<jme3/simpleapplication_z_wiersza_polecen#,SimpleApplication z wiersza poleceń>>

<tags><tag target="beginner" /><tag target="intro" /><tag target="documentation" /><tag target="init" /><tag target="Polish" /></tags>
