Josef-Friedrich / litiengine-boilerplate

Try out the litiengine

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

litiengine-boilerplate

Litiengine verwendet ab der Version 0.6.0 Java 21. Auf Ubuntu kann Java 21 folgendermaßen installiert und als Standard festgelegt werden.

sudo apt install openjdk-21-jdk
sudo update-alternatives --config java

gradle

./gradlew build -Dorg.gradle.java.home=/usr/lib/jvm/java-21-openjdk-amd64

vscode

{
  "java.configuration.runtimes": [
    {
      "name": "JavaSE-21",
      "path": "/usr/lib/jvm/java-21-openjdk-amd64",
      "default": true
    }
  ],
  "java.jdt.ls.java.home": "/usr/lib/jvm/java-21-openjdk-amd64",
  "java.gradle.buildServer.enabled": "off"
}

Text setzen

Schriftdatei in folgendenden Ordner kopieren: ./src/main/resources/fonts/Jersey10-Regular.ttf

import java.awt.Color;
import java.awt.Graphics2D;

import de.gurkenlabs.litiengine.Game;
import de.gurkenlabs.litiengine.gui.screens.Screen;
import de.gurkenlabs.litiengine.resources.Resources;

public class FontExample extends Screen
{
    public FontExample()
    {
        super("font");
    }

    public void render(Graphics2D g)
    {
        super.render(g);
        g.setFont(Resources.fonts().get("fonts/Jersey10-Regular.ttf", 32f));
        g.setColor(Color.GREEN);
        Game.graphics().renderText(g, "Hello, LITIengine!", 0, 100);
        g.setColor(Color.BLUE);
        Game.graphics().renderText(g, "Font Test", 0, 0);
    }

    public static void main(String[] args)
    {
        Game.init();
        Game.screens().add(new FontExample());
        Game.start();
    }
}

Screens

https://litiengine.com/docs/game-api/screens/

Screens sind die Container, mit denen Sie die sichtbaren Inhalte Ihres Spiels organisieren können. Sie rendern die Spielumgebung und gelten als übergeordnete Elemente aller GUI-Komponenten, die Sie in einem bestimmten Zustand Ihres Spiels anzeigen möchten. Ein Screen selbst erbt von GuiComponent und bietet dadurch Unterstützung beim Definieren einer Appearance und beim Abhören aller Arten von Eingabeereignissen (z. B. onMouseMoved(…)). Alles, was für den Spieler sichtbar sein soll, muss auf dem aktuell aktiven Screen gerendert werden.

Bildschirme werden durch einen eindeutigen Namen identifiziert und addressiert. Der ScreenManager enthält Instanzen aller verfügbaren Screens und verarbeitet, wann immer dem Player ein anderer Screen angezeigt werden soll. Es stellt den aktuell aktiven Bildschirm für die RenderComponent des Spiels bereit, die bei jedem Tick des RenderLoop die Screen.render(Graphics2D)-Methode aufruft. Das Überschreiben dieser Methode bietet die Möglichkeit, eine benutzerdefinierte Renderpipeline zu definieren, die den Anforderungen einer bestimmten Screen-Implementierung entspricht. Mit dem GameScreen stellt die LITIENGINE eine einfache Standard-Screen-Implementierung bereit, die die aktuelle Umgebung und alle ihre GuiComponents rendert.

Examples for screens include: Menu Screen, Credits Screen, Game Screen, Inventory Screen

Example usages:

import java.awt.Color;
import java.awt.event.KeyEvent;

import de.gurkenlabs.litiengine.Game;
import de.gurkenlabs.litiengine.gui.screens.Resolution;
import de.gurkenlabs.litiengine.gui.screens.Screen;
import de.gurkenlabs.litiengine.input.Input;

class RedScreen extends Screen
{
    public RedScreen()
    {
        super("red");
    }

    @Override
    public void prepare()
    {
        super.prepare();
        Game.window().getRenderComponent()
                .setBackground(Color.decode("#ff0000"));
    }
}

class BlueScreen extends Screen
{
    public BlueScreen()
    {
        super("blue");
    }

    @Override
    public void prepare()
    {
        super.prepare();
        Game.window().getRenderComponent()
                .setBackground(Color.decode("#0000ff"));
    }
}

public class ScreenExample
{
    public static void main(String[] args)
    {
        Game.init(args);
        Game.window().setResolution(Resolution.Ratio4x3.RES_1024x768);
        Game.screens().add(new RedScreen());
        Game.screens().add(new BlueScreen());
        Input.keyboard().onKeyTyped(KeyEvent.VK_1,
                e -> Game.screens().display("red"));
        Input.keyboard().onKeyTyped(KeyEvent.VK_2,
                e -> Game.screens().display("blue"));
        Game.start();
    }
}

Tastatur-Eingabe

import java.awt.event.KeyEvent;

import de.gurkenlabs.litiengine.Game;
import de.gurkenlabs.litiengine.input.Input;

public class KeyboardInput {

  public static void main(String[] args) {
    Game.init();

    Input.keyboard().onKeyPressed(KeyEvent.VK_ESCAPE, e -> System.exit(0));

    Input.keyboard().onKeyPressed(KeyEvent.VK_1, e -> System.out.println("pressed"));
    Input.keyboard().onKeyTyped(KeyEvent.VK_2, e -> System.out.println("typed"));
    Input.keyboard().onKeyReleased(KeyEvent.VK_3, e -> System.out.println("released"));
    Game.start();
  }
}

Mouse-Eingabe

import de.gurkenlabs.litiengine.Game;
import de.gurkenlabs.litiengine.input.Input;

public class MouseInputExample
{
    public static void main(String[] args)
    {
        Game.init();
        Input.mouse().onClicked(e -> {
            System.out.println(
                    "Mouse clicked at x: " + e.getX() + ", y: " + e.getY());
        });
        Game.start();
    }
}

About

Try out the litiengine


Languages

Language:Java 100.0%