![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
|
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. |
|
|
|
|
|
Nach oben #3 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
|
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? |
|
|
|
|
|
Nach oben #5 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
|
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. |
|
|
|
|
|
Nach oben #6 |
|
Erfahrener Benutzer
Registriert seit: 28.08.2004
Ort: konstanz am bodensee
Beiträge: 190
|
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){
...
}
hoffe das hilft... mfg beny |
|
|
|
|
|
Nach oben #7 |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.084
|
Statt direkt auf Rectangle2D und co zu setzen würde ich java.awt.Shape verwenden. Beim Rest halte ich mich raus.
__________________
Patrick Gotthardts Weblog. |
|
|
|
|
|
Nach oben #8 | |||||
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
|
Hi,
danke erstmal für die Antwort. Zitat:
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:
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:
Zitat:
Zitat:
Zitat:
|
|||||
|
|
|
|
|
Nach oben #9 |
|
Projektleiter
Registriert seit: 30.11.2005
Ort: Bottrop
Beiträge: 1.084
|
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" (getSpeedChange 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. |
|
|
|
|
|
Nach oben #10 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.800
|
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. |
|
|
|
|
|
Nach oben #11 |
|
Erfahrener Benutzer
Registriert seit: 28.08.2004
Ort: konstanz am bodensee
Beiträge: 190
|
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... |
|
|
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|