# Mein Erstes 2D Spiel



## MaZeFrJoTh (4. Jul 2011)

Hallo zusammen, ich habe in den letzten Wochen immer mal wieder an ein Spiel hinprogrammiert, welches ich euch vorstellen möchte. Es sind bestimmt noch Fehler vorhanden und das Meü welches durch drücken der Leertaste erscheint, ist auch noch nicht voll ausgebaut. Trotzdem hoffe ich das ihr mir evtl Verbesserungsvorschläge oder auch Lob schenken könnt. Im Anhang befindet sich das Spiel.Anhang anzeigen Apfelbaum.jar


----------



## Marco13 (5. Jul 2011)

Als ich http://www.java-forum.org/java-basi...tioniert-key-listener-so-will.html#post781584 gesehen und dann den Code überflogen hatte, hatte ich weniger erwartet. Mit Bildern und so macht das schon was her  
Das ändert aber nichts daran, dass es einem beim Lesen des Codes die Fußnägel hochrollt


----------



## Firephoenix (5. Jul 2011)

Hi,
die Spielidee an sich ist gut, bei den Grafiken gefallen mir besonders die Äpfel und der Hintergrund.
Bevor du daran aber weitermachst würde ich dir ein paar Links empfehlen 

Java Coding Conventions, Best Practices Recommendations
Tutorial / Java Grundlagen
Programmierkurs Java

Gruß


----------



## thewulf00 (5. Jul 2011)

Nettes Spiel!
Nur weiter so!
Wenn Du weiter arbeitest und Dir die Links zu Gemüte führst, die Dir hier so genannt werden, kannst Du richtig was schaffen!


----------



## MaZeFrJoTh (5. Jul 2011)

danke an euch alle für euer Lob und das mit dem Quelltext muss ich noch überarbeiten da ich bemerkt habe, dass alte Rechner wirklich Probleme haben diese einfache 2D Spiel flüssig darzustellen.


----------



## Titanpharao (5. Jul 2011)

Lustiges Spiel^^ aber bitte, probiere mal eine Maus Steuerung einzubauen ... mit der Tastatur ist das ein totaler Krampf


----------



## MaZeFrJoTh (5. Jul 2011)

ok das mit der Maus ist ja eine Klasse Idee da könnte ich vllt im Menü einen RadioButton einbauen bei den man zwischen Maus und Tastatur umstellen kann. Die Idee wird bestimmt noch umgesetzt. Danke nochmal.


----------



## Fu3L (5. Jul 2011)

Ich hab das Spiel erst gar nicht verstanden, weil ich den Korb nicht sehen kann^^ Genauer gesagt, kann ich ihn sehen, aber nur durch meine transparente Taskleiste 

Die Fenstergröße sollte sich vllt an diesen Zeilen orientieren:


```
//Auflösung bestimmen (ohne die Höhe der Taskleiste)
Rectangle r = GraphicsEnvironment.getLocalGraphicsEnvironment().getMaximumWindowBounds();
//Dann evtl.:
Dimension screenSize = new Dimension((int) r.getWidth(), (int) r.getHeight());
```

Falls du die Größe nicht sowieso fest eincodiert hast^^


----------



## MaZeFrJoTh (5. Jul 2011)

Die Probleme mit der Fenstergröße treten bei fast allen 16:9 Displays auf die kleiner als 16" sind. Außer man hat ein Full- HD Display. Man braucht ein Display mit min 800 Pixel höhe. Der Vorschlag die Größe an das Diplay anzupassen ist schon öfters gefallen, jedoch würde die Umsetzung zu komliziert werden, da Hintergrund, die "Kollisionserkennung" auf den 800 px Höhe basieren. Trotzdem danke für dein implementierungvorschlag. Vllt bau ich sie irgendwan doch noch ein.


----------



## jason (5. Jul 2011)

Hi,

ich will jetzt auch mal meinen Senf dazugeben:

positiv:
läuft flüssig

negativ:
lastet meinen Prozessor zu 100% aus

MfG jason


----------



## Kr0e (5. Jul 2011)

Als kleine Grundregel:

Das Sichtbare sollte sich IMMER skalieren lassen. DAs ist eigentlcih auch nich weiter schwer. Kollisionsabfragen sollten sowieso immer relativ geschehen.
Hier ein kleiner Vorschlag, der noch ausgebaut werden koennte...


Die maximale Breite x ist ein Wert zwischen 0 und 1. Die Hoehe y ist ein darauf basierender Wert. 
Also als Beispiel: Dein Feld ist 400 breit und 800 hoch. Dann waere x natuerlich immer eins und y waere in dem Fall 2. Quasi ist y der Faktor, der mit 400px multipliziert wird um auf 800 zu kommen.

Der ganze Rest muss nun an diese Schreibweise angepasst werden. Also der Apfel haengt dann z.B. nicht bei 300/100 sondern bei 0.75/0.125. Ab dann kannst du das alles skalieren wie du lustig bist. Deine Grafiken muessen dann beim Zeichnen natuerlich auch skaliert werden. 

Also ist z.B. dein Apfel auch niciht 30 px breit sondern in dem Fall z.B. 0.075 der Breite.

Wenn du alles relativ zur Breite ausrichtest, verrichtest du zwar erst mehr Arbeit aber im Nachhinein bist du dann um einiges flexibler!


----------



## Fu3L (5. Jul 2011)

Kr0e hat gesagt.:


> Als kleine Grundregel:
> Das Sichtbare sollte sich IMMER skalieren lassen. DAs ist eigentlcih auch nich weiter schwer. Kollisionsabfragen sollten sowieso immer relativ geschehen.
> Hier ein kleiner Vorschlag, der noch ausgebaut werden koennte...



Ich nehme auch an, dass es leichter ist, als du MaZeFrJoTh das erwarten würdest. Wenn du so ein kleines Fenster machst, kannst du ein konstantes Seitenverhältnis vorraussetzen, das ist recht leicht gemacht nach dem Muster wie Kr0e es beschrieb. (Bei meinem Breakoutklon, der fast fertig ist, blende ich bei 4:3 Displays zB Streifen ein, wie bei alten Fernsehern, das fand ich wieder eeeetwas anspruchsvoller )
Alle Leute, die 768 px in der Höhe haben, von einem Spiel, dass sich verbreiten soll, auszuschließen, wäre nicht gut. Ich behaupte, dass sehr viele mit 768 px in der Höhe unterwegs sind. Vllt nicht so sehr im Programmiererumfelt, aber zumindest bei den "normalen" PC-Nutzern.


----------



## Kr0e (5. Jul 2011)

Mein Laptop, an dem ich oft arbeite z.B. 1366x768 ;-) ^^


----------



## MaZeFrJoTh (5. Jul 2011)

Auf diese Möglichkeit wär ich von selber nicht drauf gekommen. Danke nochmals. Aber leider wird die Implementierung der Skalierung noch auf sich warten müssen, da noch grundlegendere Probleme beseitigt werden müssen (vorallem das Performance - Problem), damit ist wahrscheinlich ein Umschreiben der bisherigen Codes nötig. Und dann müsste ich die Skalierung auch wieder überarbeiten. Aber trotzdem danke für die Tipps, die leider so schnell nicht umsetzen werde.


----------



## ponker (25. Jul 2011)

Also das mit der CPU Auslastung von 100% kann ich nicht bestätigen.


----------

