BigBastis Blog

Java: iPhone Spiel „Flood-it!“ in Java nachprogrammieren

Introduction

user

Sebastian Gross

Sebastian Gross arbeitet in Bielefeld als Softwareentwickler für .NET und Java im Bereich Web.Als Fan der .NET-Plattform lässt er sich kein Userguppen Treffen und Community Event im Raum OWL entgehen.Dabei hat er eine besondere Vorliebe für das ASP.NET MVC Framework und für das Test Driven Development (TDD) entwickelt.


LATEST POSTS

Handling too long scrollspy menus 10th June, 2015

Java: Create ZIP archive 23rd March, 2015

Java

Java: iPhone Spiel „Flood-it!“ in Java nachprogrammieren

Posted on .

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!

flood-it-for-iphone-for-1

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!

fillit

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) GitHub Fill-IT

profile

Sebastian Gross

http://www.bigbasti.com

Sebastian Gross arbeitet in Bielefeld als Softwareentwickler für .NET und Java im Bereich Web.Als Fan der .NET-Plattform lässt er sich kein Userguppen Treffen und Community Event im Raum OWL entgehen.Dabei hat er eine besondere Vorliebe für das ASP.NET MVC Framework und für das Test Driven Development (TDD) entwickelt.

Comments
user

Author Daniel

Posted at 10:59 28. August 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

user

Author Lisa

Posted at 11:30 12. November 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

user

Author admin

Posted at 17:56 12. November 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

user

Author Lisa

Posted at 12:33 13. November 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

user

Author admin

Posted at 13:02 13. November 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

user

Author Lisa

Posted at 20:16 13. November 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

user

Author admin

Posted at 21:11 14. November 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

user

Author Lisa

Posted at 21:31 15. November 2009.

1. du hast mein problem verstanden und
2. wow 🙂 das wäre nun wirklich super

MFG und dankeschön

user

Author admin

Posted at 19:46 16. November 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!

user

Author Marc

Posted at 01:12 5. Januar 2012.

Tut zwar jetzt nichts mehr zur Sache aber.. nein, BlueJ hat keine Anfängersyntax sondern ist vollwertig.. die Methodenaufrufe, die sie da genannt hat, müssen auch irgendwo (wahrscheinlich vom Lehrer) programmiert worden sein. Deswegen ist der Satz „wir hatten noch nie richtiges Java“ völliger unsinn, da es nur ein Java gibt (abgesehen von den Versionsnummern..).

Schade zu sehen, dass sie nach 1,5 Jahre nicht geschnallt hat, um was es bei dem Thema geht, es wäre ganz simpel gewesen, das in BlueJ (nichts weiter als eine Anfänger IDE) aufzumachen. Aber wenn man behauptet, man arbeitet mit BlueJ und gleichzeitig sagt, man hat noch nie mit richtigem Java gearbeitet.. das sagt schon alles^^

Kommentar verfassen

View Comments (10) ...
Navigation