Du bist nicht angemeldet.

Lieber Besucher, herzlich willkommen bei: DeveloperTalk. 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.

niklas319

Schüler

  • »niklas319« ist der Autor dieses Themas

Beiträge: 103

Registrierungsdatum: 07.08.2011

Wohnort: Rheinland-Pfalz

Danksagungen: 10

  • Private Nachricht senden

1

24.01.2013, 17:27

MVC Umsetzung mit Java

Heyho,

ich versuch gerade für ein Schulprojekt das ganze schön mit MVC umzusetzen, bin allerdings noch nicht zufrieden.

Die einzelnen Screens setze ich mit JPanel um (Klasse View + subclasses), das einfach einem JFrame (GameFrame) hinzugefügt wird. Ob das Singleton von GameFrame angebracht ist, weiß ich auch nicht, allerdings hatte ich keine Lösung für die schnelle. Jeder View hat auch einen Controller.

Unser Spiel soll verschiedene Auflösungen unterstützen, da kommen wir auch schon zu dem ersten Problem. Im Moment hole ich in der GameFrameController Klasse über das Model Settings(speichert die Einstellungen) die Auflösung und erstelle damit das JFrame über statische Attribute. Das ganze klingt ziemlich dreckig, ist es auch. Kennt ihr einen anderen Lösungsvorschlag?

Ich setze im Moment noch bei allen Views, später kommen ein paar hinzu bei denen das nicht der Fall ist, ein Hintergrund Logo. Da greife ich im Moment fest, bzw. über das SettingsModel auf die Auflösung zu und füge das Bild hinzu. Wisst ihr einen schöneren Weg, dass ich nicht bei jedem Controller der das Hintergrund Logo anzeigen möchte auf das SettingsModel zugreifen muss?
Generell besteht das Problem, dass das SettingsModel auf vielen Views bzw. Controller gebraucht wird.
Die Einstellungen werden in einer ini Datei gespeichert. Um die crud funktionen zu kapseln habe ich ein ini paket Angelegt mit einer IniFile Klasse.

Wir möchten zudem verschiedene Sprachen unterstützen, erstmal English und Deutsch, wisst ihr da wie man vorgehen könnte? (Das wieder alles schön gekapselt ist nach dem MVC Prinzip)

Der SettingsView ist einfach schnell mit ein paar JLabel und JButtons enstanden um die Architektur zu testen.

Ich bin gerne offen für eine komplett andere Architektur im MVC Prinzip bzw. Vorbesserungsvorschläge im aktuellen Chaos.

Das Projekt ist über den Dateianhang verfügbar. Vielen Dank schon mal im Vorraus.

Grüße,
Niklas
»niklas319« hat folgende Datei angehängt:
  • mvc.zip (88,39 kB - 213 mal heruntergeladen - zuletzt: 16.10.2018, 04:16)

psycho

Fortgeschrittener

Beiträge: 413

Registrierungsdatum: 26.06.2011

Danksagungen: 80

  • Private Nachricht senden

2

24.01.2013, 18:26

Ich bin zwar kein Pro, aber ich werde mal meinen Senf dazu beitragen, da ich gerade meinen Suduko Solver auf MVC umstelle und ähnliche Probleme hab/hatte.
Das ganze klingt ziemlich dreckig, ist es auch. Kennt ihr einen anderen Lösungsvorschlag?

Also eigentlich ist die Lösung nicht dreckig... Guck dir mal das Registry (nicht die Windows Registry) an. Dort wird das ganze auch statisch gelöst.
http://www.dstosch.com/programmierung/design-pattern/enwurfsmuster/entwurfsmuster-registry-pattern.html



Ich habe das eigentlich immer bei PHP-Projekten genutzt.
Du kannst ja beim Start des Projektes die Ini Laden (kleiner Tipp es gibt schon eine Klasse Properties, die solche Funktionalitäten bereitstellt.), und deine Setting kannst du dann ja in der Registy speichern.

dass ich nicht bei jedem Controller der das Hintergrund Logo anzeigen möchte auf das SettingsModel zugreifen muss?
Wie willst du das sonst lösen? Mir würde jetzt keine intelligente Lösung einfallen. Außer eines ViewController, der sich um solche Sachen kümmert und bei Bedarf ändert. Das ist aber sicherlich überflüssig, dann kann das auch jeder Controller für jede View selber machen.

Die Einstellungen werden in einer ini Datei gespeichert.
Guck dir die Java Klasse Properties an.

Wir möchten zudem verschiedene Sprachen unterstützen, erstmal English und Deutsch, wisst ihr da wie man vorgehen könnte?
Selbe wie du schon getan hast ;) LanguageController, LanguageModel und eine Klasse die die Sprachen verwalten kann. Speichern könnte man die Sprachen jeweils in einer XML Datei, txt-Datei oder in einer Datenbank.


Vorbesserungsvorschläge im aktuellen Chaos.
Fangt doch erstmal an, dass ganze auf Papier zu bringen ;)
Dann geht das alles viel besser glaub mir, sonst versinkt ihr nachher wirklich im Chaos und fangt von vorne an.

Projektplanung ist das A und O.

Das wäre es erstmal von mir^^
Computer sind dazu da, uns die Arbeit zu
erleichtern, die wir ohne sie gar nicht hätten.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »psycho« (24.01.2013, 18:41)


niklas319

Schüler

  • »niklas319« ist der Autor dieses Themas

Beiträge: 103

Registrierungsdatum: 07.08.2011

Wohnort: Rheinland-Pfalz

Danksagungen: 10

  • Private Nachricht senden

3

24.01.2013, 18:38

Das Pattern schaue ich mir mal an, vielen Dank dafür.

Zitat


Zitat von »niklas319«
dass ich nicht bei jedem Controller der das Hintergrund Logo anzeigen möchte auf das SettingsModel zugreifen muss?

Wie willst du das sonst lösen? Mir würde jetzt keine intelligente Lösung einfallen. Außer eines ViewController, der sich um solche Sachen kümmert und bei Bedarf ändert. Das ist aber sicherlich überflüssig, dann kann das auch jeder Controller für jede View selber machen.

Wäre halt schon cool wenns da eine intelligentere Lösung geben, ansonsten wird halt jedes Controll dann das Model benutzen.


Ich werde es denke ich mal bei den ini Dateien belassen, klappt ja auch ;)

Wir sind ja gerade mitten in der Projektplanung und wir möchten von Anfang an das sauber planen und aufbauen, dass wir am Ende keinen Stress bekommen.

PS: Dein Link leitet einen weiter zum Prime Contest

psycho

Fortgeschrittener

Beiträge: 413

Registrierungsdatum: 26.06.2011

Danksagungen: 80

  • Private Nachricht senden

4

24.01.2013, 18:44

Ich werde es denke ich mal bei den ini Dateien belassen, klappt ja auch
Hättest aber dir die Arbeit ersparen können^^

PS: Dein Link leitet einen weiter zum Prime Contest
Ich weiß, ist irgendwie buggy... hab ich schon versucht zu ändern brachte aber keine Lösung. Aber der Link wird zumindest angezeigt, einfach kopieren und dann klappt das auch.
Computer sind dazu da, uns die Arbeit zu
erleichtern, die wir ohne sie gar nicht hätten.

niklas319

Schüler

  • »niklas319« ist der Autor dieses Themas

Beiträge: 103

Registrierungsdatum: 07.08.2011

Wohnort: Rheinland-Pfalz

Danksagungen: 10

  • Private Nachricht senden

5

24.01.2013, 18:48

Joar gut, so viel war das nicht, vielleicht 1-2h mit Testen.

Das Pattern schaut interessant aus, ich denke das werde ich ein bisschen misshandeln und dann für die Sprachen verwenden.

Gibts sonst noch irgendwelche Verbesserungsvorschläge seitens MVC / Coding?

psycho

Fortgeschrittener

Beiträge: 413

Registrierungsdatum: 26.06.2011

Danksagungen: 80

  • Private Nachricht senden

6

24.01.2013, 18:52

Gibts sonst noch irgendwelche Verbesserungsvorschläge seitens MVC / Coding?
Kommentare ;)

Sollte nicht so schwer sein den PHP-Code in Java "umzuwandeln"...
Computer sind dazu da, uns die Arbeit zu
erleichtern, die wir ohne sie gar nicht hätten.

niklas319

Schüler

  • »niklas319« ist der Autor dieses Themas

Beiträge: 103

Registrierungsdatum: 07.08.2011

Wohnort: Rheinland-Pfalz

Danksagungen: 10

  • Private Nachricht senden

7

24.01.2013, 19:05

Das umwandeln ist 0 Problem.

Das mit dem Kommentieren ist natürlich ein Argument, wobei ich finde, das man soo viel noch nicht kommentieren kann. Vieles ist eindeutig. Vielleicht die Funktionen kurz kommentieren, was sie machen.

psycho

Fortgeschrittener

Beiträge: 413

Registrierungsdatum: 26.06.2011

Danksagungen: 80

  • Private Nachricht senden

8

24.01.2013, 19:11

Das schon, aber es trotzdem immer schöner wenn Kommentare vorhanden sind, zumindest zu den Funktion, zu der Klasse und den Vars.


Mal eine ganz andere Frage... was soll das überhaupt für ein Spiel werden?

Und eines ist mir noch unschlüssig, warum speicherst du moveForward etc. in Settings?
Da würde ich noch eine neue Klasse anlegen, weil das beides aus meiner Sicht nicht viel gemeinsam hat.

Außer der Wert bleibt während des ganzen Spiels konstant.
Computer sind dazu da, uns die Arbeit zu
erleichtern, die wir ohne sie gar nicht hätten.

niklas319

Schüler

  • »niklas319« ist der Autor dieses Themas

Beiträge: 103

Registrierungsdatum: 07.08.2011

Wohnort: Rheinland-Pfalz

Danksagungen: 10

  • Private Nachricht senden

9

24.01.2013, 19:19

Der bleibt während des ganzen Spiels konstant. Den kann man am Anfang ändern in den Einstellungen. MoveForward hat dann den Integer Wert von der Taste, die eingestellt wurde. Momentan hab ich da irgendeine Zahl gespeichert.

Das ganze wird ein 2D Spiel übers Netzwerk. Man kämpft ums überleben auf einer Karte, mit einem Lichtkegel(sprich man sieht nur das vor sich, in einer Kegelform).

psycho

Fortgeschrittener

Beiträge: 413

Registrierungsdatum: 26.06.2011

Danksagungen: 80

  • Private Nachricht senden

10

24.01.2013, 19:33

Hört sich nach Slenderman in 2D an.
Computer sind dazu da, uns die Arbeit zu
erleichtern, die wir ohne sie gar nicht hätten.

Es hat sich bereits 1 registrierter Benutzer bedankt.

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

Erik (24.01.2013)

niklas319

Schüler

  • »niklas319« ist der Autor dieses Themas

Beiträge: 103

Registrierungsdatum: 07.08.2011

Wohnort: Rheinland-Pfalz

Danksagungen: 10

  • Private Nachricht senden

11

24.01.2013, 19:36

Das Spiel kenne ich nicht wirklich, aber laut den Screenshots ja. An 3D wollten wir uns nicht wagen, weil wir nicht unendlich Zeit haben. Außerdem gehts ja eher um was zu lernen und Spaß zu haben. Besser gut nachgemacht als schlecht neu erfunden. :D

psycho

Fortgeschrittener

Beiträge: 413

Registrierungsdatum: 26.06.2011

Danksagungen: 80

  • Private Nachricht senden

12

24.01.2013, 20:02

Das Spiel kenne ich nicht wirklich, aber laut den Screenshots ja.
oO Wie kann man das Spiel nicht kennen? Das Spiel war doch vor allem auf Android/IPhone erfolgreich.
Computer sind dazu da, uns die Arbeit zu
erleichtern, die wir ohne sie gar nicht hätten.

niklas319

Schüler

  • »niklas319« ist der Autor dieses Themas

Beiträge: 103

Registrierungsdatum: 07.08.2011

Wohnort: Rheinland-Pfalz

Danksagungen: 10

  • Private Nachricht senden

13

24.01.2013, 20:06

Ka ich hab nicht wirklich gezockt auf dem iPod ^^

Erik

Profi

Beiträge: 1 274

Registrierungsdatum: 22.06.2011

Wohnort: Deutschland ;)

Danksagungen: 307

  • Private Nachricht senden

14

24.01.2013, 21:00

das gibts mobil? :D
das lustigste ist ja, dass das von jedem zweiten youtuber let's played wurde (mit facecam natürlich ;D), obwohl es das langweiligste und unkomplexeste spiel ever ist... egal wie wenig zeit man hat, slender würde man grad noch schaffen zu entwickeln ;D
Beste Webite im Internet ( ͡° ͜ʖ ͡°)
xinra.de

niklas319

Schüler

  • »niklas319« ist der Autor dieses Themas

Beiträge: 103

Registrierungsdatum: 07.08.2011

Wohnort: Rheinland-Pfalz

Danksagungen: 10

  • Private Nachricht senden

15

25.01.2013, 15:28

Naja wir entwickeln ja nicht Slender nach. Wir vereinen einfach ein paar Spielideen zusammen :D

psycho

Fortgeschrittener

Beiträge: 413

Registrierungsdatum: 26.06.2011

Danksagungen: 80

  • Private Nachricht senden

16

04.02.2013, 15:51

Zum Thema speichern nochmal...

Wie wäre es noch mit dem Observer-Pattern? ;)
Computer sind dazu da, uns die Arbeit zu
erleichtern, die wir ohne sie gar nicht hätten.