Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: Banana-Coding.com - Java Knuddels Emulator. Falls dies dein erster Besuch auf dieser Seite ist, lies bitte die Hilfe durch. Dort wird dir die Bedienung dieser Seite näher erläutert. Darüber hinaus solltest du dich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutze das Registrierungsformular, um dich zu registrieren oder informiere dich ausführlich über den Registrierungsvorgang. Falls du dich bereits zu einem früheren Zeitpunkt registriert hast, kannst du dich hier anmelden.

1

Montag, 11. Juni 2012, 08:17

[TUTORIAL] Eigenes Modul erstellen

Wie ihr bemerkt habt, kann der Client module laden - Siehe am Beispiel von Billard.
Ich werde euch nun zeigen, wie ihr komplett eigene Clientseitige Module schreibt. Dies ist relativ einfach.

Schritt 1: Die neue Klasse
Erstellt eine neue Klasse (Wir nennen Sie mal "Battleship").
Zum testen setzen wir mal einfach ein JFrame herein, was beim Starten dann aufgerufen wird.

Java-Quelltext

1
2
3
4
5
6
7
8
9
10
11
import javax.swing.JFrame;

public class Battleship {
	public Battleship() {
		System.out.println("Hello Module "Battleship"");
		JFrame window = new JFrame("Schiffe versenken (Beta)");
		window.setSize(450, 450);
		window.setResizable(false);
		window.setVisible(true);
	}
}


Kompiliert diese Klasse und packt diese in einer JAR-File. Achtet darauf, dass die erzeugte JAR im ordner des Clienten liegt!
Wir nennen die Jar einfach mal "battleshipk90aiv.jar"

Schritt 2: Den Clienten abändern
Im Clienten sind zwei änderungen nötig, die aber nicht direkt die Source betreffen.

Ihr könnt entweder den Clienten entpacken, oder diesen direkt über WinRar öffnen um die beiden nötigen Dateien zu Modifizieren.

Als erstes Widmen wir uns dem Classpath in der MANIFEST.MF des Ordners META-INF.
Wie ihr seht, wurden dort schon einige JAR-Archive angegeben (billardk90aiv.jar und so weiter...). Dort fügen wir jetzt unser neues Modul im

Zitat

Manifest-Version: 1.0

Class-Path: billard90aiv.jar battleship90aiv.jar bingo90aiv.jar poker90aiv.jar ani90aiv.ja
r search90aiv.jar cardgames90aiv.jar maumau90aiv.jar smileywars90aiv.
jar whois290aiv.jar
Created-By: 1.6.0_26 (Sun Microsystems Inc.)
Achtet darauf, dass die jar-files mit einem Leerzeichen getrennt sind!

Jetzt müssen wir noch weitere Infos in der INDEX.LIST hinzufügen (auch im Ordner META-INF).

Inder Index-File werden alle Jar-Files und deren Klassen angegeben. Wenn ihr hier etwas hinzufügt, achtet bitte auf die Struktur der Datei, sprich, es wird erst die JAR-File angegeben und dann deren beinhaltenden Klassen. Danach erscheint eine Leerzeile für ein neues Package.

Wir fügen also unser neues Modul auch hier hinzu:

Zitat

battleship90aiv.jar
Battleship.class
Das wars auch. Speichert die Beiden Dateien ab, wenn ihr diese über WinRar geöffnet habt oder Packt alle Client-Files wieder zurück in einer Jar, sofern ihr diese entpackt habt.

Schritt 3: Serverseitig ansprechen
Das Modul kann nun aufgerufen werden, indem der alte Module-Token genutzt wird:

Zitat

?\00\0Channel\0Modul
Beschreibung:
[1] ? - Opcode
[2] 0 - Unbekannt
[3] Channel - Der jeweilige Channel
[4] Module - Die jeweilige Modul-Klasse

Wie ihr sehen könnt, müsst ihr den jeweiligen Channel mit angeben, worin das Modul geladen werden soll und dementsprechend den Klassennamen des Modules.

Ich zeige es euch mal anhand von Zwei Beispielen:

Zitat

// Billard
?\00\09-Ball\0BillardManager - BillardManager.class wird aufgerufen

// Battleship
?\00\0Schiffe versenken (Beta)\0Battleship - Die Battleship.class wird aufgerufen
Denkt daran, den Browsercache (und ggf. den Java-Cache) zu leeren, damit das Modul beim nächsten aufruf des Clienten mitgeladen wird.

Ich werde das Tutorial bald noch updaten, da ich euch dann zeige, wie man nun ein komplettes Spiel programmiert. Wenn ihr jetzt schon selbst an etwas eigenes basteln wollt, müsst ihr den Clienten ein wenig studieren um zu sehen, welche Methode zum versenden/empfangen genutzt wird, werde mich die Tage irgendwann mal damit beschäftigen.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Blizzard« (19. Februar 2013, 12:37)


Es haben sich bereits 5 registrierte Benutzer bedankt.

Benutzer, die sich für diesen Beitrag bedankt haben:

Localhost, Chiller, Fif, Moritz, Dome

2

Donnerstag, 14. Juni 2012, 17:25

Der zweite Token (hier 0) ist wenn ich mich recht erinnere eine Id mit der man das Module ansprechen kann.
Tschüß.

Es hat sich bereits 1 registrierter Benutzer bedankt.

Benutzer, die sich für diesen Beitrag bedankt haben:

Blizzard