# Spielvorstellung: Vajanoid



## javimka (8. Feb 2010)

Hallo zusammen,

Ich möchte heute ein von mir programmiertes Spiel vorstellen. Ihr kennt das Spielprinzip sicherlich bereits unter dem Namen Arkanoid, Breakout, Brick, Javanoid oder wie sie alle heissen. Insbesondere von letzteren habe ich mich inspirieren lassen, wobei zu betonen ist, dass ich keinen Code davon kopiert habe. Meine Version heisst Vajanoid.

Am einfachsten ist es, sich als jar zu downloaden:
http://www.lantersoft.ch/download/Vajanoid.jar

Oder ihr könnt es hier als Applet online spielen:
Vajanoid Informationen und Download

Ich wünsche allen viel Spass und würde mich um Rückmeldungen, Kiritik und Anregungen natürlich sehr freuen.
Gruss
Martin


----------



## eRaaaa (8. Feb 2010)

Hey javimka !

Also ich find`s ganz gut  Läuft flüssig, sieht gut aus, mehr kann man eig. nicht sagen, da ja auch nicht wirklich viel spannendes passiert 
Was mich allerdings in den 2 Min die ich das mal getestet habe etwas gestört hatte war mein eigener Mauszeiger. Das mag vllt Geschmackssache sein, den einen stört das, den anderen nicht, aber ich hätte mir gewünscht wenn der im "Gamepanel" unsichtbar wäre...(vllt in den Options einstellbar oder so  )

Gruß


----------



## javimka (8. Feb 2010)

Vielen Dank für den Tipp mit der Maus, das lässt sich sicher umsetzen. Das erste Level ist tatsächlich nicht sehr spannend, die darauf folgenden bergen aber schon ein paar Überraschungen. Wem die Gedult fehlt, kann unten rechts in die Konsole "level death spiral" eingeben und kommt gleich ins Level 5 (Death Spiral heisst das Level). Mit "level infinity" kommt man sogar ins Level 10. Insgesammt gibt es 30 Level.


----------



## Steev (9. Feb 2010)

Hi javimka,

ich finde das Spiel gut. Einige Anregungen vieleicht noch:

1. Optionale Steuerung mit der Tastatur.
2. Wie Bereits gesagt: Cursor in der Spielfläche ausblenden
3. Bomben usw. die soundsoviele Steine vertikal oder horizontal "sprengen"
4. Je nach Pickup-Art eine andere Bitmap, da sich nicht jeder Farben merken kann.
5. Einen Editor, wo man sich selbst Level machen kann.
6. Teleporter: Wenn der Ball in sie hereinfliegt, so wird er an eine bestimmte Stelle portiert und fliegt dort mit derselben Geschwindigkeit und Richtung weiter.
7. Unzerstörbare Steine für komplizierte Level.
8. Was vieleicht auch ganz lustig sein könnte, währe ein Schwerkraftmodus an dem Schieber könnte man dann die Spring-Energie des Balles aufladen.

Die Farben und das Design des Spieles gefällt mir jedenfalls sehr gut.

Gruß
Steev


----------



## Quaxli (9. Feb 2010)

Was mir gut gefällt ist die Animation der Steine beim Levelaufbau. Auch die "beweglichen" Level finde ich eine tolle Idee, das kannt ich in der Form noch nicht. Ein bißchen stört mich der sichtbare Mauszeiger und für meinen Geschmack fallen die Boni etwas schnell.
Vom Gesamteindruck aber ein gut gemachtes Spiel. :toll:


----------



## ARadauer (9. Feb 2010)

Saubere proffessionelle Umsetzung... die Spielidee ist halt nicht die neueste ;-)


----------



## Steev (9. Feb 2010)

Ein Problem habe ich noch: Im Eifer des Gefechts kommt man machmal mit dem Mauszeiger aus dem Fenster und dann bewegt sich der Balken nicht mehr. Soweit ich weis geht das Drag-Event auch auserhalb des Fensters noch. Vieleicht kann man das ja irgendwie missbrauchen. ;-)
Die Specials finde ich auf jedem Fall sehr gelungen. Auch die beweglichen Steine, das habe ich noch nie irgendwo gesehen 

Gruß
Steev


----------



## Marco13 (9. Feb 2010)

Jo, zusammenfassend: :toll: Passt schon


----------



## Apo (9. Feb 2010)

Kann mich nur anschliessen.
Tolles Spiel =) 
Die genannten Kritikpunkte ala 
- Mauszeiger weg bzw Tastatursteuerung erlauben
- Goodies besser erkennbar was was ist
- Goodies langsamer fallen lassen
kennst du schon =)
aber ansonsten finde ich die sich bewegenden Levels einfach nur gut! Kannte ich auch noch nicht =)


----------



## Quaxli (9. Feb 2010)

Noch eine Bemerkung zum Unlock-Button: Ich finde es prinzipiell gut, daß es den gibt. Allerdings kann man damit jederzeit den Flug der Kugel beeinflussen. Ich würde daher vorschlagen, den Button erst frei zu schalten, wenn er benötigt wird, z. B. wenn die Kugel zum 10. Mal kollidiert ist, ohne daß ein zerstörbarer Stein getroffen wurde oder ähnliches.


----------



## javimka (9. Feb 2010)

Vielen lieben Dank für die gute Kritik, die vielen Ideen/Verbesserungsvorschläge 
Der Mauszeiger scheint am meisten zu stören, deshalb gibt es jetzt eine CheckBox, wo man diesen für das Innere des Spielfeldes deaktivieren kann.

Das Problem, dass das Pad stehen bleibt, sobald der Mauszeiger das Frame/Applet verlässt ist schwierig zu lösen. Hilfreich ist es beim JFrame, wenn man das Spiel maximiert, dann ergibt sich eine viel grössere Fläche, auf der die Mausbewegungen erkannt werden können. Beim Applet könnt man in die Seite hineinzoomen, um das Spielfeld zu vergrössern.
Was ich mir überlegen werde ist, ob ich mit "MouseInfo.getPointerInfo()" informationen über die Maus holen sollte und damit das Pad entsprechend positionieren kann. Vor einiger Zeit hatte ich mich noch dagegen entschieden, weil der Sicherheitsmanager der Applets das natürlich nicht zulässt, aber für die Applikation mit dem JFrame sollte es funktionieren.

Bomben, Teleporter und Schwerkraftfelder nehme ich in die Ideen-Liste für weitere Levels auf, vielen Dank für alle Vorschläge


----------



## Steev (19. Feb 2010)

Hi,

ich habe heute abend mal gut 1 1/2 Stunden investiert um dein Spiel auf Herz und Nieren zu testen.
Ich war über deine Kreativität bei der Levelerstellung sehr positiv überrascht. Leider bin ich nur bis Level 24 gekommen. Den fand ich etwas gemein, mit diesen Türen, da habe ich alle meine 8 Bälle verballert :-(

Meine hochachtung 

PS:
Wieviele Level gibt es eigendlich? 30?


----------



## OliverKroll (20. Feb 2010)

Das Spiel ist schon ziemlich gut:applaus:, aber es wäre doch wegen den vielen Anfängern besser, wenn du den Programmtext mitveröffentlichen würdest; wie sollen die sonst 'was lernen ...?
Edit: ich hab' auf meiner Homepage auch die Programme zu meinen Spielen angegeben (falls die jemand noch nicht kennt: Videospiele in Java).


----------



## javimka (21. Feb 2010)

Freut mich sehr, dass es euch gefällt 
Den Quelltext könnte ich tatsächlich mal veröffentlichen. Die Anfänger können etwas lernen, die Profis können mich korrigieren 

Ja es gibt 30 Levels, mit Level 24 bist du ja schon ziemlich weit gekommen . Das ist natürlich schon ein schwieriges Level, aber irgendwann muss es ja mal auch wirklich schwierig werden. Jeder hat irgend ein verflixtes Level, das einem besonders schwer fällt (bei mir Level 18). Hoffentlich hast du dir den Namen des Levels gemerkt (Button Anger), dann kannst du nämlich unten links "level button anger" eingeben und bist wieder in genau dem Level (halt mit weniger Punkten).


----------



## agentone (21. Feb 2010)

Ist das eigentlich normal, dass jedes Level eine eigene Klasse ist?


----------



## Atze (21. Feb 2010)

habs auch kurz angespielt, zwar nur die ersten 3 level, aber finds sehr gut! 

was mir nur aufgefallen ist:

- die hitboxen der steine sind nicht 100%ig, oder? da freut man sich schonmal, dass der ball einigermaßen auf dem weg zum letzten stein ist, denkt sich "jaaaaa, der trifft noch! ", da schlittert der ball durch die ecke durch  vielleicht war's ja auch nur zufall, aber kam mir jedenfalls so vor
- vielleicht ne legende oder icons für die items, denn ich glaube man braucht erstmal ne weile, bis man sich die farben der jeweiligen effekte eingeprägt hat. bis man das drin hat weiß man nicht genau, ob es sich lohnt für ein item noch den aktuellen ball zu riskieren oder es doch besser sausen lässt. bzw, ob dem item nicht besser ausweichen sollte!  hab mir nur gemerkt, lila ist böse!!!  oder war's dunkelblau? naja, da sieht man's. ist nicht direkt drin, bei mir jedenfalls nicht. ich glaub das wurde aber auch schon genannt.

aber sonst ists ne echt klasse spiel für zwischendurch  *twoveryenthusiasticthumbsup*


----------



## Steev (21. Feb 2010)

Das der Ball durch die Ecken durchfliegen kann ist mir auch schon aufgefallen. Ich nehme an, dass er einfach anhand des Mittelpunktes eine Kollisionsprüfung ausführt.


----------



## Apo (21. Feb 2010)

Ich habs auch grad noch einmal gespielt.

Noch ein paar kleine Anmerkungen. 
- In meinen Augen fallen zu oft die lila Steine zum kleiner werden herunter ... würde eine Gleichverteilung besser finden oder andere weitere negative "Bonuse" wie den Ball schneller machen 
- Wenn ich riesig bin und ein lila Bonus fange werde ich sofort wieder recht klein anstatt nur eine Größe kleiner zu werden ... würde ich logischer finden
- Die Auswirkungen der Goodies auf den aktuellen Zustand fand ich nicht immer logisch. Warum verliere ich meine Haftfähigkeit wenn ich einen 3er Kugelbonus fange? Aber ok das mag Ansichtssache sein =)
- die angesprochene Legende für die Goodies wäre am Anfang sehr nett
- wenn der Cursor aus ist ... beim submit Highscore sollte er wieder da sein, damit man nicht fröhlich raten muss wo die Maus grad ist 

aber ansonsten wie die anderen schon erwähnt haben, tolles Spiel!!!

Und schöne wäre es auf jeden Fall, wenn du den Source-Code veröffentlichst. Ich habe selber mal auf Basis eines Spiel mit einigen kleinen Änderungen ein neues Spielgefühl erschaffen (siehe hier ). Du siehst es wäre nicht sinnlos. =)


----------



## Quaxli (22. Feb 2010)

Schließe mich Apos Anmerkungen an. 
Ein Problem das ich immer noch hab: Ich verliere den Ball, weil ich im Eifer des Gefechts mit der Maus aus dem Spielbaren Bereich rutsche und sich der Schläger dann nicht mehr bewegt. Wäre schön, wenn Du das irgendwie abfangen könntest. 

Sonst: :toll:


----------



## Zenic (24. Feb 2010)

Erst mal ein großes Lob, das Leveldesign ist großartig und die Levels spielen sich sehr Abwechslungsreich. Schade ist es bei der ganzen Abwechslung,  aber um geniale Ideen wie das „Medic-Brick“. Diese hätten gern öfter vorkommen können,  vor allem weil das Level, dank der großzügigen und durchdachten Goodievergabe, relativ schnell geschafft ist. Auch wenn die schwarzen Steine im Finale, aufgrund eines bedrohlicheren Looks, nicht ihr eigentliches Verhalten aufweisen, finde ich es sehr gelungen.

Zur Kritik:

Zu Beginn hat mich das Verhalten der Goodies auch etwas gestört, aber da einige Levels vom Verhalten der Goodies abhängig sind, wäre eine Änderung wohl nicht so einfach.
Eine optionale Tastatursteuerung wäre wünschenswert, mit dieser könnte man wenigstens nicht aus dem Frame fahren.
Nachdem man verloren hat, kommt die Highscoreliste sehr spät. Ich hatte meist schon ein neues Spiel begonnen und da war das Aufpoppen der Liste sehr störend.
Apropos Highscoreliste, es wird ja offensichtlich eine Liste geführt, warum kann man sich die nicht anzeigen lassen oder hab ich etwas übersehen?
Warum muss man unten in dem Feld „level“ vor dem Namen schreiben? In dieses Feld kann man ja sowieso nichts anderes eingeben.
F2 und F3 sind zu nah beisammen, es liegt vielleicht an mir aber ich hab 1-2 mal versehentlich das Spiel neu gestartet
Nachdem man die Pause beendet, wird das Pad etwas verschoben. Ist das eine beabsichtigte Erschwernis oder ein Fehler?

Sind zwar einige Kleinigkeiten dabei, aber auch Dinge die mich mehr als einmal gestört haben (Highscoreliste).

Aber alles in allem ein gutdurchdachtes, unterhaltsames Spiel für Zwischendurch. :applaus:


----------



## javimka (25. Feb 2010)

Vielen Dank für alle weiteren Punkte . Den Source Code werde ich Morgen veröffentlichen. Zuerst habe ich aber noch jede Menge Kommentare eingefügt, damit das Lesen auch möglichst einfach wird. Muss mir noch überlegen, ob ich ein zwei wichitge Zeilen doch lieber nicht veröffentliche, weil sich sonst jeder beliebig hohe Highscores uploaden kann, wie es ihm passt 

@agentone
Bei mir ist jedes Level eine Klasse. Dies aus dem einfachen Grund, dass es so viel viel leichter für mich ist, diese zu implementieren. Wie erfreulicherweise bereits erkannt worden ist, habe ich versucht, eine gosse Vielfalt in die Levels zu bringen. All diese kleinen Elemente (der Teufel steckt im Detail), sind einfacher direkt im Code zu realisieren. Würde ich jedes Level in XML-Files speichern, die dann einlesen und in ein Level parsen, hätte ich jetzt noch keine 3 Level geschafft 

@Atze und Steev
Die Auswertung, ob der Ball einen Block getroffen hat hängt von den vier Punkten ganz oben, unten, links und rechts des Balls ab. Das ganze ist noch etwas kompliziert, weil ein Block auch in zwei oder vier Teile geteilt sein kann, wenn er über den Rand hinausgeht, und das auch dann stimmen muss. So kann es schon vorkommen, dass das Auge eine Kollision sieht, das Programm aber nicht. Vielleicht fällt mir etwas ein, wie ich das noch verbessern kann.

Eine Legende der Items mit Beschreibung ist unten auf der Webseite. Vielleicht werde ich die auch mal in das Programm implementieren. Aber wie du schon herausgefunden hast sind violette/lila Steine böse und die anderen richten keinen Schaden an.

@Apo
Zu einfach darf das Spiel ja nicht werden . Manche spielen alle 30 Levels locker in einem Zug durch, andere scheitern schon im zweiten. Deswegen finde ich es schon wichtig, dass es mehr böse lila Items als Leben, Goldene Bälle und Items zum schiessen gibt. Den unbelibten Items kann man ja auch ausweichen und mit etwas Übung kann man auch mit einem sehr kleinen Pad noch lange überleben.
Es muss im Spiel auch mal Rückschläge geben, also wenn du ein riesiges Pad hast erhöht sich die Wahrscheinlichkeit, dass du einem lila Item nicht ausweichen kannst und dann verlierst du die gesamte Breite des Pads. Das ist auch insofern wichtig, weil es sein kann, dass man so viele gelbe Items auffängt, dass das Pad grösser als die Spielbreite wird und so nicht mehr manövrierfähig ist. Ein einziger lila Stein löst dann dieses Problem. Umgekehrt restauriert ein gelber Stein ja auch ein ganz klein gewordened Pad. Das ist in einigen Levels auch wichtig, die gerade aufgrund vieler lila Items so schwierig sind.
Du hast Recht, die Haftigkeit könnte bestehen bleiben, wenn sich die Bälle teilen. Allerdings mag ich das Haft-Item sowieso nicht, da bin ich froh, wenn es wieder weg ist 
Das mit dem Cursor bei der Highscoreliste habe ich sofort repariert, nun erscheint der Cursor. Vielen Dank für den Hinweis 

@Quaxli
Du hast absolut Recht, das gefällt mir auch nicht. Wenn die Maus die Komponente verlässt, kriege ich aber keine MouseEvents mehr und kann das Pad nicht mehr setzen. Hilfe würde die Klasse MouseInfo mit getPointerInfo(), die wiederum ist in Applets aber nicht erlaubt. Mal überlegen, wie ich das machen könnte. Besser geht es jedenfalls, wenn du das Programm downloadest und dann maximierst, dann hast du den ganzen Bildschirm für die Maus.
Immerhin habe ich die Situation abfangen können, wenn man wie wild am klicken/schiessen ist und auf ein anderes Fenster klickt, welches dann in den Vordergrund kommt, dass dann das Spiel pausiert wird. Könnte ich natürlich auch machen, wenn die Maus das Fenster verlässt, aber das könnte störend sein.

@Zenic
Eine Tastatursteuerung wäre prinzipiell sicher eine gute Idee, aber nicht ganz einfach. Wie schnell soll das Pad sein, soll eine Beschleunigung erfolgen usw. Aber ich mach mal ein paar Versuche, dann sehe ich ja, wie es klappt.
Die Highscoreliste hat tatsächlich etwas lange. Liegt auch daran, dass die Daten zuerst gedownloadet werden müssen. Muss ich korrigieren, guter Hinweis 
Die sollte dann auch per Button ersichtlich sein, da hast du schon recht. Zuerzeit ist sie online verfügbar: Vajanoid Rangliste
Freut mich, dass es schon so viele bekannte Namen aus dem Forum geschafft haben, einige sind auch sehr sehr weit gekommen.
F2 und F3 sollte ich wohl wirklich auseinander nehmen. Mir ist nichts besseres eingefallen, weil ich das von alten (Microsoft?) Spielen so kenne. Was schlägst du vor?
Das "level" könnte ich eigentlich wirklich weglassen. Allerdings ist es nicht das einzige, was man da reinschreiben kann, es gab da mal ein paar Cheats. Genau diese Dinge sollte man vielleicht besser nicht im Source Code finden 
Wenn du die Pause beendest, bewegt sich das Pad immer zur Maus hin. Ist also keine beabsichtige Schikane und eigentlich auch kein Fehler. Während der Pause bewegt sich das Pad nicht, weil das als verwirrend bezeichnet wurde ^^. Viellecht implementiere ich mal einen riesigen Katalog an Optionen, wo sich jeder sein Spielverhalten selber definieren kann 

Nochmals vielen Dank für alle Rückmeldungen, ich arbeite weiter daran.


----------



## agentone (25. Feb 2010)

@javimka: Danke für deine Antwort.
Bei meinem akt. Projekt habe ich jedes Level in einer normalen datei. Das würde es leichter machen einen Leveleditor zu implementieren. Wenn allerdings jedes Level eine Klasse ist, welche alle ein Interface impl., können die Level viel unterschiedlicher sein.


----------



## Steev (25. Feb 2010)

@javimka:Ich finde den Quellcode nicht :-D Wolltest du den Quellcode nicht heute hochladen?

Gruß
Steev


----------



## javimka (25. Feb 2010)

jaja, kommt ja schon 

http://lantersoft.ch/download/vajanoid_source.zip
All rights reserved (mal vorsichtshalber  )

Argh, jetzt wisst ihr alles, Feuer frei!
Sorry, wenn mein Englisch in den Kommentaren nicht immer perfekt ist. Man darf mich gerne auch da korrigieren 

Und ja, man kann jetzt hemmungslos cheaten und sich verrückte Highscores uploaden, aber ich bitte euch das zu unterlassen, auch wenn es sehr verlockend ist. Vielen Dank


----------



## Steev (25. Feb 2010)

Herzlichen Dank. Keine Angst, ich werde keine HighScrores hochladen, die ich nicht selbst gespielt habe ;-)


----------



## OliverKroll (25. Feb 2010)

Prima, daß du das Program zur Verfügung gestellt hast !:applaus:
Allerdings hat dein Programm nach meiner ersten Zählung 82 Klassen - ist also wohl eher etwas für Fortgeschrittene.
Die von dir angegebene ZIP-Datei konnte ich nicht ohne Änderungen zum Laufen kriegen.;(
Deine Bilder werden aus einer JAR geladen - ist natürlich für die Website völlig richtig, nur eben für Eclipse nicht. Wenn man ungefähr zehn Zeilen ändert, kann man das Programm in Eclipse als Applikation starten. Hauptsächlich sind es die Zeilen mit "ImageIO.read(new URL...)", die ich geändert habe.
Vielleicht kannst du zu deinem Programmtext noch eine Version hinzufügen, die sofort als Applikation gestartet werden kann. (Ich könnte meine neue Version zwar auch anfügen, aber das möchte ich nicht, weil es dein Programm bleiben soll.:bahnhof


----------



## Steev (25. Feb 2010)

Dasselbe ist mir auch aufgefallen. Trotzdem will ich dich lieber loben: Mir gefällt das Programm. Der Code ist schön struckturiert und man kann einfach neue Level erstellen. Super!


----------



## javimka (25. Feb 2010)

Ja es sind einige Klassen, aber nicht alle sind gleich wichtig. Die Klassen Model, View und Controller könnten z.B. interessant sein. Oder das Zusammenspiel zwischen Block und RectBlock oder den Levels und AbstractLevel.

Bei mir kann ich das Programm in Eclipse starten mit genau der Struktur der Bilder. Dazu muss ich aber den Ordner ress zum Build Path hinzufügen (Project->Properties->Build Path (links)->Source (Tab)->add Folder, und dann bei ress ein Häckchen machen). So kann ich es als Applet oder Applikation in Eclipse starten oder in ein Jar exportieren und auch dieses als Applet oder Applikation starten.
Wenn ich einen besseren Weg finden würde, der mir das gleich erlaubt, würde ich das sofort umstellen, mich nervt nämlich, dass ich zwei mal einen Ordner ress habe, also ress/ress/... . Aber anders habe ich es einfach nie hingekriegt. Sobald ich es in ein Jar exportiert habe, wurden die Bilder nicht mehr gefunden.


----------



## Steev (25. Feb 2010)

Das Problem ist der src-Ordner. Wenn die du Resourcen in den src-Ordner schiebst, dann kannst du sie aus diesem auch wieder Laden. Das liegt daran, dass getResource immer an der niedersten Ebene der package-Strucktur startet. Und die liegt nunmal innerhalb der src. Deshalb habe ich bei mir in Eclipse die Projekte so umgestellt, dass es keinen src und bin-Ordner mehr gibt. Das hat natürlich zur Folge, dass die class-Dateien mit den java-Dateien in einem Ordner sind, das hat mich bisher aber noch nie gestört.


----------



## OliverKroll (26. Feb 2010)

@javimka: Stimmt, das geht. Damit ist es perfekt. Prima Programm !


----------



## Firestorm87 (26. Feb 2010)

Ein gelungenes Spiel und der Programmcode lässt sich sehr schön lesen.

Auf jeden Fall ne Arbeit die man mal wieder auskramen kann, wenn man mal wieder auf "Probleme" dieser Art stößt....

/EDIT: vll paar kleinigkeiten die auch an einigen Stellen dann das lesen erleichtern:

```
private void setBounds(int xx, int yy, final int ww, final int hh) {
[...]
this.x = this.xx = xx = this.xmin + ((xx - this.xmin) % diffx + diffx) % diffx;
this.y = this.yy = yy = this.ymin + ((yy - this.ymin) % diffy + diffy) % diffy;
```
wozu setzt du hier die Parameter xx und yy noch einmal neu, wenn diese keine weitere Verwendung finden?
Mal davon abgesehen, dass Ich es als unschön ansehe die übergebenen Parameter nicht nur lesend zu verwenden....


```
private void setBounds(int xx, int yy, final int ww, final int hh) {
[...]
this.x = this.xx = this.xmin + ((xx - this.xmin) % diffx + diffx) % diffx;
this.y = this.yy = this.ymin + ((yy - this.ymin) % diffy + diffy) % diffy;
```
sollte vollkommen ausreichen...

ebenso wie man vll die ein oder andere Variable anders nennen könnte, um solche Zusammenhänge nachvollziehen zu können:

```
g.drawImage(image, this.xmin, this.ymin, this.xmin + this.xx + this.ww - this.xmax,
this.ymin + this.yy + this.hh - this.ymax, wImg + this.xmax - this.xx - this.ww, hImg + this.ymax
- this.yy - this.hh, wImg, hImg, null);
```
Eventuell die Berechnungen der einzelnen Parameter als privateMethod auslagern, oder zumindest außerhalb des Methodenaufrufes in einer separaten Variablen ablegen, um klar zu machen was hier passiert.

Aber bitte nicht als Kritik deuten... nur lieb gemeint


----------



## javimka (26. Feb 2010)

Hast ja Recht 
Die grosse Berechnung im ersten Teil garantiert nur, dass die neuen Koordinaten innerhalb des erlaubten Intervals [xmin,xmax] liegt. Zweimaliges % Modulo-Rechnen ist nötig, weil das Resultat der ersten Modulo-Berechnung negativ sein könnte. Und xx und yy wird tatsächlich nicht nochmals gebraucht. Allerdings muss man in der if-Abfrage weiter unten dann this.xx statt xx verwenden. Für yy gilt natülich dasselbe. Ich habe den Parameter xx nun auch in newx umgetauft, damit es keine Kofusion zwischen xx und this.xx gibt.

@Steev
Danke für den Tipp, werde ich ausprobieren und schauen, was besser geht.


----------



## lumo (3. Mrz 2010)

felällr mir sehr gut, wo bekomm ich die level codes?
die goodies fallen etwas sehr schnell....

edit: codes werden wohl die namen der levels sein?
wenn ja bringt die eingabe im feld darunter nichts, bzw wenn man auf unlock klickt passiert nichts.

PS: ich scheine so ein null tau user zu sein *Grins*


----------



## Gas (3. Mrz 2010)

Steev hat gesagt.:


> Das Problem ist der src-Ordner. Wenn die du Resourcen in den src-Ordner schiebst, dann kannst du sie aus diesem auch wieder Laden. Das liegt daran, dass getResource immer an der niedersten Ebene der package-Strucktur startet. Und die liegt nunmal innerhalb der src. Deshalb habe ich bei mir in Eclipse die Projekte so umgestellt, dass es keinen src und bin-Ordner mehr gibt. Das hat natürlich zur Folge, dass die class-Dateien mit den java-Dateien in einem Ordner sind, das hat mich bisher aber noch nie gestört.


Man könnte in Eclipse auch einfach einen Resourcen Ordner zusätzlich als Src Folder angeben. Dann hat man Resourcen und Code getrennt und vermeidet ausserdem das was du da machst.


----------



## faetzminator (14. Mrz 2010)

Sehr gut gelungenes Spiel  Ich finde auch, dass die Items ein Bisschen schnell fallen, dafür gibts aber viele. Ist vor Allem amüsant, wenn man ein paar hellblaue aufnimmt und die Items dann nur noch so kommen (ach die nervigen violetten  ). Hatte (noch) keine Zeit, mir den Source anzuschauen. Gibt es da irgendeine Logik, dass manchmal die Punkte nicht zählen? Manchmal bleibt einfach der Zähler stehen bis zum Ende eines Levels.


----------

