# Mein 1. Bewegtes Spiel!



## fleckdalm (25. Apr 2011)

Ich habe jetzt zum ersten mal ein "bewegtes" Spiel Programmiert, jedoch ohne Vorwissen weshallb es wahrscheinlich ziemlich schlecht programmiert ist:-( 
Es funktioniert auch wirklich nur sehr schlecht, und das obwohl es im Grunde ein ganz einfaches Spiel ist:-(
Aber wenigstens funktioniert es überhaupt, dass ist ja immerhin schonmal ein Anfang!

Ich dachte ihr könnt es euch vielleicht ein bisschen anschauen und mir tipps geben ;-)
Das würde mich wirklich freuen
Vor allem die Performance ist glaube ich ziemlich schlecht, und im 2 Spieler Modus geht die Steuerung nicht ganz, weil immer nur eine Taste gleichzeitig gedrückt sein darf.

Es geht darum möglichst viele Punkte zu sammeln, indem man Bälle fangt. Man steigt jedoch immer höher, weshalb es immer schwerer wird. Wenn man ganz oben ist, ist das Spiel aus.
Steuern kann 1 Spieler über die Pfeiltasten, und der 2. über a und d.

Seht es euch bitte einfach mal an

Danke, mfg Fleckdalm


----------



## Volvagia (25. Apr 2011)

Nett.
Nur du scheinst ziemlich inkonsequent neu zu zeichnen. Mir ist sogar schon ein Ball dem ich nicht erwischt habe in der Luft hängen geblieben.


----------



## fleckdalm (25. Apr 2011)

Ja das ist mir auch schonmal passiert, deshalb und weil es auch sonst noch nicht ganz so gut läuft hätte ich ja gerne ein paar tipps.
Aber Danke, das du es dir mal angeschaut hast!
Weiß jemand wie man z.B. das Tasten problem lösen kann?
mfg Fleckdalm


----------



## Marco13 (25. Apr 2011)

Hab jetzt nich geschaut, ist der Source im JAR? Insgesamt... joah... GANZ viel Verbesserungspotiential, würde ich sagen


----------



## Volvagia (25. Apr 2011)

Marco13 hat gesagt.:


> Hab jetzt nich geschaut, ist der Source im JAR? Insgesamt... joah... GANZ viel Verbesserungspotiential, würde ich sagen


Dann wird es wenigstens nicht langweilig. 

404 - File not found. 
Aber manche Tastaturen lassen nur drücke von 3 Tasten gleichzeitig zu. Man kann übrigens Dateien direkt dem Post anhängen.


----------



## fleckdalm (25. Apr 2011)

Ja das Glaube ich auch;-)
Jetzt ist der Source im Jar!
Aber das Programm soll ja auch nur eine 1. Übung/1. Test sein in Programmierung von "bewegten" Programmen, da ich so etwas wie gesagt ja noch nie gemacht habe.
mfg Fleckdalm

Edit: ich habe jetzt die Datei im 1. Post angehängt! Wusste nicht das das geht.
Es liegt übrigens sicher nicht an der Tastatur, da nur 2 Tasten gedrückt werden müssten. Ich weiß das ich das mit der Tastatur einfach blöd programmiert habe, mir fällt aber keine bessere Lösung ein:-(


----------



## Quaxli (26. Apr 2011)

Ich hab' Deinen Source mal überflogen. Wie Marco schon angedeutet hat: GANZ viel Verbesserungspotential.  
Aber das hast Du ja auch schon selbst erkannt. :applaus:

Ich liste mal auf, was mir beim ersten Drübergucken so aufgefallen ist. Der eine oder andere hier wird dazu bestimmt noch ein paar weiter Punkte finden.

- Du hast im Prinzip 2 Spiele geschrieben. Eins für einen Spieler, eins für zwei Spieler. Diese Trennung ist unnötig. Das kann man von der Logik her "in einer Klasse abbilden" (schreib ich jetzt mal so, im Prinzip hast Du zu wenige Klassen (vgl. weiter unten)).

- In den KeyListenern hinterlegt man keine Logik. Daraus erklärt sich vermutlich auch Dein Problem mit der Tastaturabfrage. Üblicherweise setzt man in den KeyListenern nur boolean-Werte auf true oder false. Die eigentliche Abfrage erfolgt dann im GameLoop (wenn right = true, dann x+= 5,...) 

- das Zeichnen ist "falsch". getGraphics() sollte man (als Anfänger) nie verwenden. Üblicherweise überschreibt man eine geeignete Methode, die man von der Vaterklasse geliefert bekommt. Genauer gesagt: In AWT überschreibt man paint(), in Swing paintComponent(). Beide Methoden bekommen automatisch ein bzw. das richtige Graphics-Objekt übergeben und in der überschriebenen Methode findet jegliches Zeichnen statt (und auch nur das - keine sonstigen Berechnungen).
Für Anfägner gilt üblicherweise *getGraphics() == böse.* 

- Du benutzt zu wenig eigene Objekte. Komponenten wie die Bälle oder den/die Spieler sollte man in eigene Klassen packen und alle notwendige Logik zum Zeichnen oder zum Bewegungsablauf sollte man dort verpacken. Dann ist es auch weniger schwierig zwischen 1 einem und 2 Spielern hin und her zu schalten.

Soweit mal das, was mir im ersten Überfliegen aufgefallen ist. Wenn Du auf den Link in meiner Signatur klickst findest Du ein Tutorial in dem ich die Entwicklung eines einfachen Spieles vorstelle. Ist sogar frisch überarbeitet.  Dort zeige ich (m)eine Herangehensweise für einfache Spiele. Für Dein Vorhaben sollte es auf jeden Fall ausreichen.


----------

