Impressum · Kontakt · Hilfe
Besucher online · Mitglieder



Portal > Foren > Java > Allgemeine Java-Programmierung > Flipper - Modellierung
Antwort
 
Themen-Optionen
Alt 20.10.2005, 11:24   Nach oben    #1
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
Standard Flipper - Modellierung

Hi,
aaaaaaaalso ich hatte ja schon vor einigen Monaten von einem Flipper gesprochen, der programmiert werden soll. Jut. Das ist alles etwas verlagert worden und ist nun wieder aktuell.

Ich betreue dabei eine Gruppe von Kommilitonen .. bzw. wir versuchen das zusammen auf die Beine zu stellen.

Was meine ich mit Flipper. Das ist nicht so ganz das richtige Wort bzw. die richtige Bezeichnung.

Es geht darum, dass man sozusagen eine Box = ein Spielfeld hat, in dem sich dann eine Kugel bewegt.

Die Kugel wird also bei der Initialisierung einfach in die Box reingesetzt und fängt an zu "laufen". Wenn sie gegen eine Wand prallt soll sie reflektiert werden. Das zu berechnen ist mal kein Problem, es geht eher um die Modellierung des Spielfelds (des Rands), der Kugel und von Hindernissen, die man in das Spielfeld reinsetzen kann.

Bevor ich da jetzt anfange zu programmieren und dann kommt nur Murks raus, würde ich das gerne mal mit euch durchdiskutieren.

Um die Ausgabe der Grafikkomponenten parallel zu Berechnungen und Nutzereingaben (z.B. des "Flippers" .. wie nennt man die Dinger denn da, mit denen man die Kugel wieder hochflippt *g*) laufen zu lassen.

Hm. Ich bin da ehrlich gesagt etwas .. überfordert will ich gar nicht sagen .. planlos


Freue mich über einige gute Anregungen

Grüße Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 20.10.2005, 18:37   Nach oben    #2
sparrow
Sesselkleber
 
Benutzerbild von sparrow
 
Registriert seit: 17.01.2005
Beiträge: 567
Standard

So als kleiner Anstoß, siehe meine Signatur
sparrow ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 21.10.2005, 16:22   Nach oben    #3
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
Standard

Jo danke, aber ich glaube du hast mich falsch verstanden.
Wir sind vier Leute ... und eher Programmieranfänger. Das heißt nciht, dass man so eine Engine nicht nutzen kann .. aber .. ähm .. es sollte doch auch ohne eine spezielle Engine gehen oder?
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.10.2005, 10:34   Nach oben    #4
Xean
Erfahrener Benutzer
 
Benutzerbild von Xean
 
Registriert seit: 17.08.2005
Beiträge: 421
Standard

Also wollt ihr einfach wissen wie man malt, oder braucht ihr paar Bilder für ein Ball, Hintergrund usw.???

Mit Bildern kann ich helfen genauso mit dem Malen...
Xean ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 22.10.2005, 19:00   Nach oben    #5
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
Standard

Also ich habe jetzt schon mal was rumgesucht (ich bin selbst ja eher ein Newbie .. bzw. ein Anfänger, neu nicht wirklich *g*) und bin dabei auf die Interfaces Ellipse2D, Line2D und Rectangle2D gestoßen, welche sich ja eigentlich gut anbieten würden, um damit den Rahmen, die Kugel und die Hindernisse zu "bauen" (sag ich jetzt mal).

Mein Problem liegt, wie ich ja auch schon schrieb, in der Modellierung. Wie arbeiten die Klassen zusammen?

Ich würde da jetzt so herangehen, dass ich den Rahmen des Flippers auch als Hindernisse behandle.
Ich würde also sozusagen 3 Linien nehmen (Wand links, rechts und oben). Dazu 2 Linien unten und in der Mitte etwas Platz . das ist halt das "Loch" (keine Ahnung, wie das beim Flipper heißt).

Nun gut. Ich hab also eine abstrakte Klasse bzw. ein Interface Hindernis (weiß ich halt noch nicht so genau), von der dann alle Hindernisarten erben. Jut. Jetzt würde ich z.B. sagen, dass ich eine Klasse "Balken" habe, die irgendwie so angewendet werden kann wie Line2D bzw. die implementierenden Klassen.

Aber ... also .. jou, ich weiß halt nicht so genau, wie ich das mache, ob das überhaupt der richtige Weg ist etc.

Ich würde halt gerne letztendlich ein Objekt vom Typ Hindernis z.B. einer ArrayList (is ja gerade ma wurscht) hinzufügen und die Inhalte dann darstellen.

Mir fehlt aber einfach der Ansatz. Das programmiertechnische .. puh .. keine Ahnung, ob ich das kann .. aber ich will es ja probieren.
Aber wie soll ich etwas probieren, wenn ich gar nicht weiß, was ich genau ausprobieren soll?

Versteht ihr wo mein Problem liegt?

Ich hoffe weiterhin auf etwas regere Teilnahme an diesem Thread.
Danke euch.

Grüße Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.10.2005, 17:17   Nach oben    #6
beny_mcde
Erfahrener Benutzer
 
Registriert seit: 28.08.2004
Ort: konstanz am bodensee
Beiträge: 190
Standard

also das abstrakte objekt modell sollte wir folgt ausshen:

du hast ein container(spielfeld) in den du gruppierte objekte (ball gruppe, hinderniss gruppe und spielkomponenten gruppe)hinzufügen kannst.
diese objekte können dann innerhalb des containers bewegt werden.
und wenn 2 objekte kollidieren (ball mit der wand, ball mit dem teil das ihn wieder wegschießt wenn man im richtigen moment den knopf drückt,weiß auch nicht wie man das nennt)
wird ein ereigniss ausgelößt, auf das man reagieren kann.

das ist ja eigentlich genau die funktionalität die eine game engine zur verfügung stellt.
natürlich kannst du die kollisionsabfrage und den rest auch selbst schreiben aber das bedeutet viel arbeit...

wie sparrow schon gesagt hat, würde ich die Golden T Game engine empfehlen, ist wirklich sehr einfach und gut dokumentiert...


der ansatz mit Line2D Rectangle2D usw währe auch eine lösung,
hier könntest du sowas wie ein modell vom flipper erstellen...
Code:
public class FlipperModell{
 public void hindernissHinzufügen(Rectangle2D r){
  ...
 } 
public void ballHinzufügen(Eclipse2D b){
  ...
 }
public void ballKollision(Eclipse2D b,Rectangle2D r){
 ...
 }
das modell wird dann an eine engine übergeben, die sich um die darstellung kümmert, und im falle einer kollision diese dem modell meldet...

hoffe das hilft...
mfg beny
beny_mcde ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.10.2005, 18:45   Nach oben    #7
pago
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.084
Standard

Statt direkt auf Rectangle2D und co zu setzen würde ich java.awt.Shape verwenden. Beim Rest halte ich mich raus.
__________________
Patrick Gotthardts Weblog.
pago ist gerade online  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.10.2005, 19:46   Nach oben    #8
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
Standard

Hi,
danke erstmal für die Antwort.

Zitat:
Zitat von beny_mcde
Golden T Game engine empfehlen, ist wirklich sehr einfach und gut dokumentiert...
Das ist ja gut und schön. Wirklich .. ich danke euch für diese Empfehlung, aber ich drücke mich anscheinend falsch aus.

Aufgabe ist es das selbst zu schreiben und nicht irgendwas zu verwenden. Punkt. Aus. Basta.
Das hab ich mir doch nicht ausgedacht .. das ist die Aufgabe.
Ich will ja auch gar nicht, dass ihr uns die Aufgabe macht .. ich möchte halt nur gerne meine mit euren Ideen austauschen ..


Zitat:
Zitat von beny_mcde
hier könntest du sowas wie ein modell vom flipper erstellen...
Habe ich ehrlich gesagt nicht so wirklich verstanden

Ich hätte jetzt gedacht, dass ich eine Klasse Flipper habe, die sozusagen das Spielfeld mit allem drum und dran initialisiert. Also das Spielfeld als solches erstellen, die Hindernisse per add-Methode hinzufügen und dann eine Kugel da rein flippen

Ich bin mir nur gerade nicht so ganz klar, wie ich das "Hinzufügen" mache. Also du schreibst jetzt ja addHindernis(Rectangle2D r) .. als Beispiel.

Müsste es nicht eigentlich heißen?
PHP-Code:
public void addHindernis(Hindernis h) {
    
// code


Zitat:
Zitat von beny_mcde
das modell wird dann an eine engine übergeben, die sich um die darstellung kümmert, und im falle einer kollision diese dem modell meldet...
Jut, "eine Engine" .. super. Sorry, aber ich verstehe das einfach noch nicht.

Zitat:
Zitat von pago
Statt direkt auf Rectangle2D und co zu setzen würde ich java.awt.Shape verwenden.
... hilft mir ehrlich gesagt genau mal gar nicht weiter. Ein "Warum" wäre nett

Zitat:
Zitat von pago
Beim Rest halte ich mich raus.
Schade ...
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.10.2005, 20:24   Nach oben    #9
pago
Projektleiter
 
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.084
Standard

Weil Rectangle2D wesentlich spezifischer ist, als ein Shape, dass wahrscheinlich alle Methoden beinhaltet, die ihr braucht.

Wobei ihr wahrscheinlich noch nichtmal das verwenden könnt... es wäre wirklich sinnvoll, ein Interface "Hindernis" zu implementieren, dass sich um die üblichen Sachen kümmert, d.h. zeichnen, abprall-berechnungen usw.
Dann hast du ein "Spielfeld", dass den Ball und die Hindernisse iteriert und deren "paint"-Methode aufruft. Wenn der Ball sich bewegt - was alle 0.0x Sekunden passieren sollte (maybe eignet sich hier ein Timer) - werden die Hindernisse durchiteriert und überprüft, ob eine Kollision stattgefunden hat, wenn ja wird die Bahn des Balls verändert. Das könnten auch die Hindernisse übernehmen - allerdings in Form einer "PathCorrection" (getSpeedChangeouble; getWinkelChange(double ), die dann das Spiel auf den Ball überträgt.
Ferner sollten einige Hindernisse (die Flipper z.B.) die Möglichkeit haben, eigene KeyStrokes im Frame zu registrieren, um auf spezielle Tastaturkombinationen reagieren zu können.

Weißt du jetzt, warum ich sagte, dass ich dazu lieber nichts sagen möchte?
__________________
Patrick Gotthardts Weblog.
pago ist gerade online  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 23.10.2005, 22:14   Nach oben    #10
Ben
Erfahrener Benutzer
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
Standard

Ui, viele Informationen
Da werde ich mich mal mit befassen. Klingt ganz gut .. einige nette Sachen dabei, die ich mir mal näher anschauen werde

Heißt nicht, dass ihr/wir jetzt aufhören hier weiterzuquatschen .. is klar, ne?

Grüße Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 27.10.2005, 16:13   Nach oben    #11
beny_mcde
Erfahrener Benutzer
 
Registriert seit: 28.08.2004
Ort: konstanz am bodensee
Beiträge: 190
Standard

so endlich mal wieder zeit fürs forum gefunden....

ersteinmal zu den mysterien....
also das mit dem flipper modell hab ich mir so vorgestellt,
in dem modell werden NUR die daten also die einzelnen objekte im spiel aufbewahrt, wie bzw ob sie dargestellt werden interessiert das modell auch nicht, besser gesagt es weiß noch nichtmal das sie dargestellt werden...
das ganze würde etwa dem MVC (Model-View-Control) muster folgen.
Das modell haben wir ja schon, und der View währe dann die Engine.

wobei ich zu meinem letzen post anmerken muss, das die kollisionsabfrage wohl eher ins modell gehöhrt.

das ganze hat den vorteil das man die puren informationen über die Kugel/die hindernisse im modell hat und sie von der darstellung getrennt sind.
man könnte also nun den View und die Control ohne großen aufwand austauschen....

für erste tests kannst du z.b. einen DebugView/Controll schreiben,welcher die kugel automatisch bewegt und einfach jede runde (jedesmal wenn neugezeichnet wird) die position der kugel ausgibt und wenn sie angestoßen ist auch das auf der konsole erscheinen lässt.
für deinen prof schribst du dann einen view der das ganze schlicht aber funktional in einem frame darstellt, mit einfach gezeichneten figuren.
und wenn du mal selbst flipper spielen willst, baust du dir einen GameEngineView der eine richige game engine nimmt und die hindernisse/kugeln als bilder zeichnet und eine konstante neuzeichnung garantiert...

hoffe ich hab mich jetzt klar genug ausgedrückt...


beny_mcde ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.
Trackbacks are An
Pingbacks are An
Refbacks are Aus


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:24 Uhr.

Nach oben
Wir nutzen das Zend Framework, vBulletin (vBulletin v3.7.2, Copyright ©2000-2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.0.0) und vBSEO.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44