Java: iPhone Spiel “Flood-it!” in Java nachprogrammieren
Erst vor ein paar Wochen bin ich im Apple Appstore über das kleine Spiel Flood-it! gestolpert. Das Spiel ist simpel, kostenlos und macht sehr süchtig!
Ziel des Spiels ist es den ganzen Bildschirm mit eine Farbe zu füllen. Dazu hat man 22 Versuche! Dabei fängt man als das Viereck oben links an und übernimmt die anliegenden Felder indem man die Passende Farbe unten anklickt!
Schon damals habe ich mir gedacht: Mensch, das könnte man doch ganz einfach nachprogrammieren.
Heute habe ich mir dann die Zeit genommen und das ganze mal umgesetzt.
Für die Umsetzung habe ich mich für Java entschieden. In Java kenne ich mich zwar nur sehr begrenzt aus, aber das Projekt ist natürlich perfekt zum üben und lernen!
Geschlagene sechs Stunden später ist eine spielbare Version entstanden, die zwar nicht den kompletten Featureumfang des Originals besitzt, aber das Spielprinzip ganz gut adoptiert!
Ich muss sagen dass es sehr viel Spaß gemacht hat dieses kleine Game zu "kopieren" und ich viel über Java dazulernen konnte! Und ich kann jedem auch nur empfehlen es selber zu versuchen ein Spiel, das einem gut gefällt nachzumachen.
Ich werde den Quelltext meiner Version hier veröffentlichen, falls es jemanden interessiert, und er auch mal versuchen will so ein Projekt zu realisieren und an einer stelle nicht weiterkommt kann er meinen Code gerne zum nachschlagen benutzen!
Ich habe versucht meinen Code sehr einach zu halten und im Sinne der Polymorphie zu gestalten. Da ich alles andere als ein Java-Experte bin, kann es natürlich auch sein, dass manche Codestellen auch viel einfacher und oder besser gestaltet werden konnten, und auch dass es noch Bugs gibt will ich auch nicht ausschließen!
Wenn jemand einen Bug findet, oder Verbesserungsvorschläge zum Code hat kann er diese gerne als Comment oder per Mail an mich senden!
Der Quelltext ist sehr simpel gehalten, es würde aber helfen wenn man folgendes schon mal gehört hat:
- Rekursivität
- Klassen & Vererbung
- GUI - Programmierung
- Event-Behandlung
- Java Drawing Klassen
- Grundkenntnisse OOP
Ich habe den Code natürlich auch kommentiert, aber wenn man mit den obigen Begriffen nichts anfangen kann sollte man sich erstmal dort einlesen.
28.09.09 UPDATE: Danke an Daniel, habe den Bug mal behoben!
31.09.09 UPDATE: Nun ist der letzte (bekannte) Bug behoben, das Spiel müsste nun "perfekt" laufen!
Download: Source Download: Binary (MAC/WIN/LINUX)


August 28th, 2009
Hey hab nen Bug gefunden. Es sagt immer man habe es in 22 Zügen geschafft, auch wenn die Fläche noch nicht einfarbig ist.
Gruß Daniel
November 12th, 2009
Hey, ich muss dieses spiel für die schule in blue j programmieren; gibt es ein programm, welches deinen quelltext umwandeln kann?(dein spiel isr nämlich super!) oder irgendeine andere möglichkeit?
hab keine große Ahnung davon,
Gruß Lisa
November 12th, 2009
Hallo Lisa,
dieses Spiel habe ich in Java Programmiert. Da BlueJ auch mit Java Code arbeitet musst du nur den Quelltext downloaden und an die richtigen Stellen in deinem Projekt einfügen. Mehr nicht, am Code ändern (oder umwandeln) musst du da soweit ich weis nichts!
Aber mal eine andere Frage: Da ihr BlueJ benutzt bist du wohl noch neu in dem Java Umfeld oder? Und da bekommt ihr solche Aufgaben? Denn diesen Code zu verstehen ist für einen Anfänger eher nicht so leicht.
MfG
November 13th, 2009
Erst mal vielen lieben Dank für deine Antwort!
Wir haben nach ca. 1,5 Jahren Unterricht in der Schule die Aufgabe bekommen, ein Spiel nach zu programmieren – das Problem ist, wir haben bisher wirklich nur mit Blue J gearbeitet und deswegen sind mir die Formulierungen, wie sie bei dem normalen Java vorkommen unbekannt und es wäre auffällig diese englischen Sätze zu übernehmen… gibt es vllt noch eine andere Möglichkeit an die Dienste leichter zu gelangen? und so das Programm bei Blue J zu erstellen?
Liebe Grüße
November 13th, 2009
Hallo Lisa,
leider habe ich mich noch nie mit BlueJ beschäftigt, habe mir das aber grad mal angeschaut. Da BlueJ auch nix anderes als Java ist gibts nichts womit man das “übersetzen” kann. (wozu auch Java in Java übersetzen?)
Wen du BlueJ startest kannst du doch über Edit->Add Class from File… alle .java Dateien aus meinem demoprojekt importieren. Dann bekommst du folgendes Bild:
hier klicken
Das ist doch dann ein ganz normales BlueJ Projekt. Über Tools->Compile oder Project->Create JAR File… kannst dus dann auch kompilieren oder ausführen.
Was meinst du mit “englische Sätze” und welche “Dienste” meinst du?
MfG
November 13th, 2009
Hey,
nochmal dankeschön, dass du dich damit auseinander gesetzt hast!
so wie du das bild gemacht hast, so kenn ich das auch, nur das problem ist, ich habe noch nie mit dem richtigen java gearbeitet. bei uns gibt es nur so dienste wie
hatStift.setzeFarbe(Farbe.ROT); oder
this.zeichneRechteck(pLaenge * 2/3);
du benutzt in deinem Program ja z.B.
String[] col = colors[(int) (cIndex+0.5)].split(“-”);
und von diesem index hab ich leider noch nie was gehört
mein problem ist, ich weiß nicht, wie ich das umschreiben muss
MFG
November 14th, 2009
Achso, nun habe ich verstanden was du meinst (glaube ich)
Anscheinend hat BlueJ eine eingedeutschte Anfänger Syntax und Semantik. (richtig?)
Da bleibt dir wohl nichts anderes Übrich als das für dich umzuschreiben.
Wenn du willst, kann ich dir eine einfacheres Spiel geben, das ich vor ner weile gemacht habe: ein Konsolenbasiertes Schiffeversenken, ist einfacher zu verstehen, da keine Grafischen Elemente vorhanden sind. Denn dieses Spiel hier im Beitrag ist doch etwas komplexer und für Abfänger nicht leicht zu verstehen!
MfG
November 15th, 2009
1. du hast mein problem verstanden und
das wäre nun wirklich super
2. wow
MFG und dankeschön
November 16th, 2009
Hallo nochmal,
Hier versprochene Spiel “Schiffeversenken”.
Da das eins meiner ersten Java-Spielereien war ist es dementsprechend wenig kommentiert! Aber da es nicht allzuviel Quelltext ist sollte man da doch durchsteigen! Was du noch machen müsstest ist die Codierung anzupassen, da dort viele Zeichen wie zb. Umlaute falsch dargestellt werden!
Hoffe das hilft dir weiter!