You are not logged in.

  • Login

Dear visitor, welcome to Coder Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

1

Thursday, January 5th 2012, 5:16pm

Klickgame ala "Harveys neue Augen" oder "Edna bricht aus" in Java programmieren... Fragen zu Kleinigkeiten.

Hey Leute,
da ich in den letzten Tagen beide der oben genannten Spiele gespielt habe und ich dieses Prinzip einfach liebe, habe ich mir gedacht soetwas in der Art, vllt etwas kleiner, selber zu porgrammieren.
Habe mir auch schon überlegt wie in etwa ich es anstellen könnte.
Nun habe ich mehrere allgemeine und auch spezifischere Fragen.
1. Würde es sich lohnen so ein Spiel in Java zu Programmieren, oder sollte ich dafür eher eine andere Sprache lernen?(kann inmoment nur Java)

2. Wie könnte ich es machenl, dass der Charakter nur auf dem Fußboden läuft und nicht auch auf den Gegenständen welche auf dem Hintergrund gemalt sind?

Das wars erstmal an Fragen, wenn ich das Projekt echt starten sollte werden aber sicherlich noch mehr auftreten.

LG Henrik

2

Thursday, January 5th 2012, 6:08pm

Spiele in Java zu programmieren, ist schon wieder eine Sache für sich.
Normalerweise nutzt man dann doch eher die Sprache C/C++, weil es effektiver in vielen Bestandteilen der Programmierung
ist, als in Java. Wer aber eine Programmiersprache kann der wird sich in einer anderen schnell zurecht finden, da das Grundprinzip
das selbe ist.
Doch ich denk bei deinem Vorhaben lässt sich das auch in Java realisieren.

Auf Grund deiner zweiten Frage nehme ich mal an das du noch nicht so viel Erfahrung in der Programmierung hast.

Wie gut bist du den in Java überhaupt?

Kannst du die grundlegenden Dinge der OOP?
Hast du GUI-Erfahrung?
Wenn nein, dann verzichte auf dieses Projekt und mache dich mit den Grundelementen der Programmierung
vertraut.

Für dein Spiel:
Du solltest dir erstmal überlegen welche Objekte du für dein Spiel brauchst und was für
Eigenschaften und Fähigkeiten haben diese.
In welcher Weise sind sie abhängig bzw. unabhängig voneinander sind.

3

Thursday, January 5th 2012, 6:40pm

Ich habe Erfahrung in Java, und auch mit GUI's in Java programmiert. ( Taschenrechner aus Tutorial, eine Installer welcher .classes in .jars packt usw.)

Ich hatte mir überlegt, das ich für alle Räume, Objekte(in den Räumen), und Items fürs Inventar eigene Klassen erstelle in denen denn entweder vorher oder per Konstruktor alles Infos und Variablen für diesen Raum, Objekt, Item, gespeichert werden... + die Funktionen die den Gegenstand betreffen.

Für die Storyabläufe werde ich denke eine class nehmen vllt auch mehrere(in Akte aufgeteilt), für die statischen Dinge (wie Orte, Coordinaten, Namen von Charakteren) könnte ich ein Enum verwenden, bzw, die Namen könnten auch in die class des jeweiligen Objektes rein, was wohl schlauer wäre.
Das Gameplay also Inventory, das Laufen und Dinge anklicken, kommt natürlich in seperate klassen.
Jemanden der die Grafiken macht hätte ich auch...

Genug Ahnung?

4

Thursday, January 5th 2012, 7:16pm

Edna bricht aus habe ich auch gespielt. Cool gemacht, allerdings war der Resourcenverbrauch extrem. Es ist schon eine Kunst ein 2D-Adventure so lahm zu machen.

Egal
Du kannst ein Grafikadventure 100% mit Java machen. Ist eigentlich ganz nett, da es dann auch gleich auf Linux und Mac läuft und nicht nur auf Windows. Es gibt aber auch eine Alternative, wenn du nicht bei 0 anfangen willst.

Dieser Artikel sollte dich brennend interessieren:
http://www.pro-linux.de/artikel/2/1544/g…mit-sludge.html

5

Thursday, January 5th 2012, 7:39pm

naja, das ist dann ja nschon wieder son adventurecreator, will ja alles selbst coden, nur mit Java und Eclipse

6

Thursday, January 5th 2012, 9:35pm

Wenn du Bock hast ein Adventure zu programmieren, solltest du dich entweder mit Java2d beschäftigen oder mit einer Grafikschnittstelle wie OpenGL, dafür gibts auch ein Java Binding (jogl oer LWjGL) Wenn du keine Lust hast von unten anzufangen, kannst du natürlich auf fertige 2D Engines zurückgreifen.

Java 2D: http://java.sun.com/products/java-media/2D/index.jsp
jogl: http://jogamp.org/
LWjGL: http://lwjgl.org/

Zu deiner ersten Frage: In Java kannst du definitiv ein 2D Adventure machen!
Deine zweite Frage verstehe ich nicht ganz. Was meinst du mit auf den Gegenständen im Hintergrund?!

In der Regel hast du in einem Adventure eine Szene, wo sich die Figur auf vordefinierten Wegen bewegen. Die Szene besteht im einfachsten Fall aus einem statischen Hintergrund und Objekten (Grafiken) die sich hinter der Spielfigur befinden und welche die sich vor der Spielfigur befinden. Das musst du natürlich vorher definieren.

7

Thursday, January 5th 2012, 9:39pm

Ja das meinte ich, ich muss mir dann da malp was ausklügeln, bin auch schon dabei einen Typen für die Räume zu basteln, sprich, DAS PROJEKT STARTET

8

Thursday, January 5th 2012, 9:48pm

Im einfachste Fall kannst du ja eine Liste nehmen, die die Reihenfolge definiert, welches Objekt zuerst und welches als letztes gerendert werden soll.

Ansonsten wünsche ich dir VIEL SPAß :)

9

Thursday, January 5th 2012, 9:49pm


Ich habe Erfahrung in Java, und auch mit GUI's in Java programmiert. ( Taschenrechner aus Tutorial, eine Installer welcher .classes in .jars packt usw.)

Ich hatte mir überlegt, das ich für alle Räume, Objekte(in den Räumen), und Items fürs Inventar eigene Klassen erstelle in denen denn entweder vorher oder per Konstruktor alles Infos und Variablen für diesen Raum, Objekt, Item, gespeichert werden... + die Funktionen die den Gegenstand betreffen.

Für die Storyabläufe werde ich denke eine class nehmen vllt auch mehrere(in Akte aufgeteilt), für die statischen Dinge (wie Orte, Coordinaten, Namen von Charakteren) könnte ich ein Enum verwenden, bzw, die Namen könnten auch in die class des jeweiligen Objektes rein, was wohl schlauer wäre.
Das Gameplay also Inventory, das Laufen und Dinge anklicken, kommt natürlich in seperate klassen.
Jemanden der die Grafiken macht hätte ich auch...

Genug Ahnung?
Jo haste. War nicht bös gemeint von mir, falls du das jetzt denkst :)
Viel Erfolg mit deinem projekt

10

Friday, January 6th 2012, 2:31pm

Ne denke ich nicht:)
Und danke für eure Hilfe, wenn ich irgendwo an Probleme stoße, was wohl früher oder später der Fall sein wird, meld ich mich

11

Friday, January 6th 2012, 8:06pm

So schon ordentlich a coden die ersten classes (Hauptklassen für Räume Items und Objekte und jeweils ein Beispiel) sind schon fertig..

Nun zum ersten Test mit Bildern, muss das ganzr klar auf den Bildschirm...

Applet kommt für mich nmicht wirklich in Frage, das das ganze nicht nur im Appletviewer oder Browser laufen soll, und Frame schon garnicht.

Also stellt sich die Frage JOGL, openGL, oder doch LWJGL?
Was würdet ihr machen?

12

Friday, January 6th 2012, 8:11pm

Während ich auch eine Antwort warte, mache ich mich daran eine Möglichkeit zu finden die Walkmap zu Definieren.
Habe mal ausgerechnet, wenn ich 100 x 60 (ca. 16 zu 9 format) Punkte habe, und jeden Punkt einzeln an(true) oder aus(false) stellen muss habe ich 6000 Punkte pro Raum die ich definieren (6000 Stelliges 3-Demensionales Array (x Coordinate, yCoordinate , boolean), gehts da nicht leichter=? per Hand eintragen muss!
Ich meine das wären 18000 Werte die ich
habt ihr ne idee=

13

Friday, January 6th 2012, 8:30pm

Also erstmal ist ein Array mit 6000 Elementen nicht so schlimm... Wenn es Effizient gespeichert ist, ist das nichtmal ein kilobyte. Allerdings speichert Java Boolean-Arrays nicht so effizient und braucht wohl ein byte pro boolean, was immer noch ok ist. Speichereffizienter wäre z.B. ein BitSet. Und du musst ja nicht alle Werte von Hand setzen, du setzt alle Werte standardmäßig auf False und setzt nur die erlaubten auf true, was man bestimmt auch teilweise automatisieren kann (mit geometrischen primitiven wie rechtecken, dreiecken etc.).
Ne andere Möglichkeit die Werte zu speichern, wäre nur die Koordinaten zu speichern, die true sind. Das könnte man mit ner Hashmap oder ähnlichem realisieren. Da musst du dann halt bei jedem Klick die Hashmap durchsuchen ob die angeklickten koordinaten darin vorhanden sind.

Vielleicht versteh ich aber auch nicht, was genau du mit Walkmap meinst ;)

14

Friday, January 6th 2012, 8:37pm

Nene, du hast mich richtig verstanden...

Ja ok, hab auch schon gemerkt das dies wohl meine einzigste Möglichkeit ist, werde mich dann mal mir
mehrDimensionalen Arrays und HashMaps auseinandersetzen.

15

Friday, January 6th 2012, 9:59pm

So nochmal, falls es jemanden interessieren sollte, ich habe inmoment 15 classes, mit insgesamt über 750 Zeilen code.
Fertig sind die Teile für Items, objekte, charaktere und räume. ausserdem habe ich cie klassen für achivements, dialoge, den player, und den SaveLoadHandler schon angefangen und einige simple funktionen geschirben.

16

Saturday, January 7th 2012, 11:57am

Quoted

Also stellt sich die Frage JOGL, openGL, oder doch LWJGL?

Kleiner Hinweis: OpenGL ist ja ne Grafik-API die in C geschrieben ist. JOGL und LWJGL sind nur Bindings für OpenGL, sprich, wenn du JOGL oder LWJGL nimmst programmierst du schon OpenGL, wenn du OpenGL nimmst bringt dir das erst einmal wenig, da es ja C ist ;)

Ich denke die würdet am schnellsten zu Ergebnissen kommen, wenn du die Java 2D API nimmst.

Wenn du dein Projekt Open Source machen willst, kannst du ja ein Git Repository aufsetzen, dann kannst du unter Umständen durch Hinweise von Anderen noch mehr lernen oder vielleicht findet sich ja auch ein Mitstreiter.

17

Saturday, January 7th 2012, 3:45pm

OpenSource kommt für mich nicht in Frage, da ich gerne weiss was so wie in meinem Code steht...
Was ganz gut wäre, wären 2-3 weitere Coder, die ein bischen was können, und Lust und Zeit haben mir zu Helfen.
Ok, ja da hast du recht, Java2d, hab ich noch nicht dran gedacht, habe vorhin etwas mit lwjgl rumprobiert, doch würde java2d sich ja eher anbieten!

18

Saturday, January 7th 2012, 8:33pm

Kennt jemand ein gutes Java2d Tutorial, oder kann mir hier die grundbestandteile (inti, drawscreen, usw.) aufzählen

19

Sunday, January 8th 2012, 12:02pm

So wer daran interessiert ist, was ich schon alles geschrieben habe, oder interesse daran hat bei diesem Projekt mit zu arbeiten
sollte hier mal gucken :

https://github.com/AintLarry/Klickgame--…/master/classes

SO da hätten wir:



Charakter.java - kümmert sich um das handling aller im spiel existierenden Personen (ausser der Spieler an sich)
CharakterExample.java - Beispiels Charakter, erbt von Charakter.java

Item.java - kümmter sich um alle Items welche sich im Inventar befinden
ItemExample.java - BeispielItem erbt von Item.java

Object.java - kümmert sich um die Objekte die in den Räumen stehen, wenn sich noch nicht im Inventar sind
ObjectExample - BeispielsObject, erbt von Object.java

Room.java - kümmert sich um die betretbaren Räume
RoomExample - BeispielsRausm, erbt vom Room.java

saveLoadHandler - kümmter sich später ums Speichern und Laden, enthält momentan nur eine methode zum auslesen des ApplicationPath's

/Edit
Habe noch etwas in der Object.java geändert, es ist nun festgelegt, und auslesbar, welches item dem inventar hinzugefügt wird beim einsammeln des objektes
Bei weiteren größeren änderungen werde ich hier ne Note schreiben, bei kleinen nicht unbedingt
Edit/

LG Henrik

This post has been edited 1 times, last edit by "Henrik Martens" (Jan 8th 2012, 6:20pm)


20

Monday, January 9th 2012, 9:37am

Moin Henrik,

Ich denke du solltest mit dem Oracle Tutorial schon relativ weit kommen: http://docs.oracle.com/javase/tutorial/2d/

Ich habe noch ein bisschen Feedback zu deinen Klassen:

saveLoadHandler.java
* Nach Java-Konevention werden Klassen IMMER groß geschrieben.
* Da die Klasse nur statische Methoden enthält, macht es keinen SInn eine neue Instanz zu erzeugen. Von daher solltest du den Konstruktor private oder protected machen. Wenn du ihn private machst, kannst du die Klasse auf final setzen, da ja keiner mehr von ihr ableiten kann.

Bei dem Rest bin ich mir noch nicht so ganz klar, was er so alles machen soll. Generell, solltest du Attribute/Variablen mit einem etwas aussagekräftigeren Namen belegen, als "s" ;)

Cheers,
Benni

Similar threads

Social bookmarks