Doodle Jump als Jahresprojekt

Cyz44

Aktives Mitglied
Hallo! Wir sollen an unserer Schule ein Jahresprojekt machen und ich habe mich dazu entschlossen ein Spiel mit Java zu programmieren. Ich hab auch schon ein Schuljahr in dem wir Programmierunterricht hatten hinter mir, bin also kein Totaler Anfänger mehr. Nun wollte ich fragen, wie realistisch es unter diesen Vorraussetzungen ist, ein Spiel wie Doodle Jump selber zu erstellen? Uns als 2. Frage hätte ich noch, was ihr mir für Bücher empfehlen würdet, mit denen man Spiele Programmieren lernen kann?
 

Cyz44

Aktives Mitglied
Danke für die schnellen Antworten :)
vor allem das Tutorial sieht gut aus, aber könnt ihr auch irgendwelche Bücher empfehlen?
 

x1gma

Mitglied
Wenn du nicht speziell Bücher zur Spieleprogrammierung in Java suchst, ist das Buch "Java ist auch eine Insel" meiner Meinung nach das Nachschlagewerk schlechthin, falls du es nicht kennst. Das gibt es auch bei Galileo Computing openbooks sogar kostenlos als HTML.
 

Cyz44

Aktives Mitglied
Hab ich auch schon von gehört, aber das ist ja glaub ich ziemlich allgemein, oder? Ich meinte jetzt vor allem Bücher zum Spiele Programmieren ;)
 

c_sidi90

Top Contributor
Wenn du dich gut vorbereitest, sprich dir erstmal das Konzept aufschreibst und Klassen/Objekt-Diagramme erstellst, kann man Doodlejump locker in einer Woche programmieren. Vorausgesetzt, du kennst dich bereits ein wenig mit Spiellogik und der Umsetzung in Java aus (Gameloop, Gamestate ) usw.

Würde dir empfehlen eine Library dafür zu benutzen, Slick2D in Kombination mit MarteEngine (für Entities) eignet sich super dafür.
 

Kevin94

Top Contributor
Ich will ja keine schlechte Stimmung verbreiten, und ich denke für dich trifft dies nicht zu, wenn du schon zu Anfang des Projekts dich hier meldest, aber unsere Abiturienten aus dem letzten Jahr haben gerade mal ein lächerliches und nicht mal richtig fertiges Tic-Tac-Toe in einem Jahr hingekriegt. Lag wahrscheinlich an mangelnder Motivation und schlechter Vorbildung bzw. einem unfähigen Lehrer (die zwei Jahre Info bei unserem Lehrer hätte ich mir auch schenken können).
 
D

Dow Jones

Gast
Wieviel Zeit möchtest du denn in das Projekt investieren? "Jahresprojekt" bedeutet doch sicher nicht, das du dir ein Jahr Zeit lassen kannst, oder? :D
Ich kenne Doodle Jump nicht, aber dennoch möchte ich dir ganz allgemeine eine Warnung geben: Gerade beim Aufwand für die Programmierung seines ersten Spiels verschätzt man sich sehr leicht. Das Spielprinzip an sich in einer Engine zu implementieren ist eine Sache. Daraus ein brauchbares Spiel zu machen, das zu spielen auch Spaß macht, ist aber noch etwas ganz anderes. Da muss man sich ganz schnell mit Sachen herumschlagen, die man vorher als "intuitiv klar" abgetan hat. Animationen von Spielfiguren, spielerfreundliche Joystickabfragen, Überprüfungen und Punktewertungen von Spielzügen, Soundeffekte, gleichzeitiges Ausführen von mehreren Dingen, Intelligenz von Gegnern und vieles mehr. Wenn dies dein erstes größeres Projekt in Java ist dann solltest du dir nicht zuviel vornehmen.
Ich will dich nicht entmutigen, aber ich rate doch dazu den Ball flach zu halten. Ich meine - hast du schonmal Minesweeper implementiert? Oder Schiffe versenken? Oder Tetris? Pacman vielleicht? (nur die Kernroutinen zählen nicht, es muss schon ein spielbares Spiel sein). Und selbst ein scheinbar primitives Spiel dürfte dich weit mehr Zeit kosten als du anfangs glaubst.
Auch wenn das jetzt recht negativ klang - ich wünsche dir aber viel Erfolg! Und wenn es mal stockt - scheu dich nicht zu fragen, hier hilft man dir gerne. :)
 

hdi

Top Contributor
Also ein recht ordentliches Buch zur Spiele-Programmierung ist "Killer Game Programming". Allerdings setzt das bereits fortgeschrittenere Kentnisse in Java voraus, d.h. da geht's echt nur darum wie man am besten ein Game programmiert. Die Sprache Java an sich wird großteils vorausgesetzt.
 

timbeau

Gesperrter Benutzer
Wenn du dich gut vorbereitest, sprich dir erstmal das Konzept aufschreibst und Klassen/Objekt-Diagramme erstellst, kann man Doodlejump locker in einer Woche programmieren. Vorausgesetzt, du kennst dich bereits ein wenig mit Spiellogik und der Umsetzung in Java aus (Gameloop, Gamestate ) usw.

Würde dir empfehlen eine Library dafür zu benutzen, Slick2D in Kombination mit MarteEngine (für Entities) eignet sich super dafür.

Das halte ich für ein Gerücht. Ein Spiel wie Doodle Jump kann man vielleicht aus Fertigbauteilen zusammenflicken. Aber niemals in 1 Woche. Ein Spiel, das auch wirklich läuft, Spaß macht und nicht ohne Ende Bugs hat...Monate/Jahre.
 

c_sidi90

Top Contributor
@timbeau
Das halte ich für ein Gerücht. Ein Spiel wie Doodle Jump kann man vielleicht aus Fertigbauteilen zusammenflicken. Aber niemals in 1 Woche. Ein Spiel, das auch wirklich läuft, Spaß macht und nicht ohne Ende Bugs hat...Monate/Jahre.

Ich habe innerhalb einer Woche schon wesentlich komplexere Spiele programmiert, obwohl mein Aufgabenbereich im Alltag woanders liegt. Mit den von mir genannten Engines werden viele Sachen abgenommen, welche ohne die Hilfsklassen länger dauern z.B. Entities, Kollisionserkennung, Abprallverhalten usw. und fördern so den Programmierprozess erheblich.

Natürlich ist ein Spiel nie wirklich zu 100 % fertig, da wichtige Sachen/Bugs einem erst durch die Testphase und Spielerfeedback mitgeteilt werden. Aber darum geht es ja zunächst garnicht.
 
D

Dow Jones

Gast
Auch wenn mich eure Debatte zugegebenermaßen interessiert möchte ich doch an den Zweck dieses Threads erinnern. Es geht um ein Schulprojekt, und Cyz44 bat um eine Einschätzung ob seine/ihre Idee von einem Spiel realistisch sei. Dabei erwähnte er/sie:
Ich hab auch schon ein Schuljahr in dem wir Programmierunterricht hatten hinter mir, bin also kein Totaler Anfänger mehr
Das klingt in meinen Ohren nicht danach, das man eure Fähigkeiten in der Softwareentwicklung als Maßstab hernehmen sollte.

Cyz, was habt ihr denn in dem Jahr alles gelernt? Bzw. was kannst du (wenigstens einigermaßen)? Standen Interfaces und abstrakte Klassen auf dem Lehrplan? Oder Multithreading? GUIs? Algorithmen? Publisher/Subscriber? Referenzen vs. values? Und wieviel Zeit möchtest du in das Projekt investieren? Ich meine Frameworks, die einem einen großen Teil der Arbeit abnehmen, sind ja schön und gut, aber auch da muss man sich ersteinmal einarbeiten. Und dazu benötigt man bisweilen schon einiges an Wissen über die Sprache (bzw. über Softwareentwicklung allgemein). Wenn ich mich an den Informatikunterricht an meiner Schule erinnere - oh weh.... Da war nach einem Jahr noch gar nicht an die Implementierung von irgendetwas zu denken. :D
 

Cyz44

Aktives Mitglied
Erst einmal Vielen Dank an euch alle, ich hätte echt nicht mit so vielen Antworten gerechnet :)
Aber leider, leider darf ich das Spiel doch nicht machen. Ich hab mit dem Lehrer geredet (der scheint keine spiele zu mögen ;( ) und der hat gemeint, das exakt das gleiche spiel schon jemand vor einem jahr präsentiert hätte.
Tut mir also echt leid, dass ihr euch (umsonst) son kopf gemacht habt :(

aber vielleicht könnt ihr mir trotzdem helfen: ich hab nämlich keine idee was ich sonst machen könnte. Der Lehrer hat mir irgendwas mit Generator programmieren und Integral Rechnung vorgeschlagen, aber ich hab ehrlich gesagt nicht verstanden was er meinte :D
und danke nochmal für die viele Hilfe ;)
 
S

SlaterB

Gast
wie wärs mit einer Physiksimulation zu springenden Grashüpfern, Deckname Joodle Dump?

ok, dies war Spam ;)
 

Fab1

Top Contributor
Hallo,

ich weis zwar nicht, ob all die Projekte in Java realisierbar sind, aber vielleicht findest du ja etwas, das dir zusagt und du mit deinem bisherigen Wissen umsetzten kannst.
Projektideen Sammelthread

Edit: Ansonsten vielleicht findest du ja noch gefallen an:

Titel: Mathematik Lernsoftware
Beschreibung: Es werden Aufgaben der 4 Grundrechenarten erstellt. Diese müssen in einer bestimmten Zeit gelöst werden, ansonsten kommt die nächste Aufgabe. Man hat z.B. 2 Minuten Zeit und am Ende wird in einer Statistik angezeigt wie gut oder schlecht man abgeschnitten hat.
Und da ich im erklären ein **** bin. Hier die Umsetzung meiner Erklärung (Software ist nicht von mir)
paXoftwer - Softwaredetails

Du kannst dich natürlich auch an einem Vokabeltrainer versuchen, doch denke ich das dies warscheinlich zu einfach werde. Also Speicherung der Vokabeln z.B. Deutsch/ Englisch und dann halt wieder die Ausgabe der Vokabeln. Vielleicht fallen dir ja noch ein paar Funktionen ein die man einbauen könnte.
 
Zuletzt bearbeitet:
D

Dow Jones

Gast
Der Lehrer hat mir irgendwas mit Generator programmieren und Integral Rechnung vorgeschlagen, aber ich hab ehrlich gesagt nicht verstanden was er meinte :D
Möglicherweise meinte er ein Programm zur Berechnung eines Riemann-Integrals einer gegebenen Funktion in einem endlichen Intervall? Das dürfte jedenfalls nicht schwierig werden, dafür aber recht nützlich sein. :)
Und falls du das umsetzt - es wäre nett, wenn du auch gleich die Fouriertransformierte berechnen würdest. Sowas brauche ich häufig. :D
 

Kevin94

Top Contributor
Also erst mal will ich noch mal die Frage wieder holen, wie umfassend deine Grundlagen sind. Mein Info-Lehrer hat nicht viel geschafft wir hatten weder Polymorphie/Vererbung/Interfaces noch wirkliche Objekt-orientierung, will sagen, dass wir zwei Klassen in einem Projekt selber schreiben musste.

Wenn mans genau nimmt mussten wir eigenlich nur den vorgekauten Sourcecode abtippn - und selbst das haben manche nicht fehlerfrei geschafft und ich musste dann immer "mysteriöse" Compilerfehler korrigieren.

Aber ich kann von meinem Lehrer ja nicht aufs allgemeine schliesen.

So und jetzt ein paar Voschläge:
Ein kleines Strategiespiel: Streichhölzer ziehen mit KI
Eine Simulation des Freien Falls mit Luftwiederstand
Eine selbstgeschriebene Swing-Componente, die Graphen zeichnet
Ein Codierprogramm

Und zu letzt noch (aber das ist wahrscheinlich zu umfangreich) ein Programm, das ordentliche Stundenpläne entwickeln kann.
 

Cyz44

Aktives Mitglied
Also nun erst mal zu meinen Java-Kentnissen: Ich hab jetzt 1 schuljahr mit programmierunterricht hinter mir, aber unser Lehrer hat uns ziemlich wenig beigebracht. Im prinzip nur die ganzen Grundlagen (Klassen, Objekte usw. und auch das eher mangelhaft) und dann noch GUI. Zum Beispiel bin ich gerade dabei ein Mastermind zu erstellen, womit ich mich aber noch ziemlich schwer tue. Ich würde mich selbst so als Anfänger mit Grundkentnissen bezeichnen ;)

Naja und wie schon gesagt, ein Spiel zu machen kommt jetzt eigentlich nicht mehr in Frage, mein Lehrer hat jetzt schon Pacman (findet er zu leicht zu programmieren -.-) und eben Doodle Jump als Projekt abgelehnt.

@ Dow Jones: Könntest du dieses Projekt mit dem Riegman-Integral etwas genauer erklären? Wir haben in Mathe nämlich noch nicht Integralrechnung durchgenommen :D
 

Kevin94

Top Contributor
Das hab ich mir gedacht. Bei uns hats auch nur zu ein paar Spielerreien mit BlueJ gerreicht (nicht mal GUI) und von einer main-Methode scheint unser Lehrer auch noch nichts gehört zu haben.
In dem Fall würd ich mal die Java Insel empfehlen. Kapitel 2 und 3 wäre so etwa das, was wir gemacht haben. Dürfte bei dir ähnlich aussehen.
 

Cyz44

Aktives Mitglied
Okey Danke.
Kapitel 2 haben wir gemacht aber 3 nur teilweise, dafür ein bisschen aus dem 4. (Strings und Zeichenliterale).
 
D

Dow Jones

Gast
@ Dow Jones: Könntest du dieses Projekt mit dem Riegman-Integral etwas genauer erklären? Wir haben in Mathe nämlich noch nicht Integralrechnung durchgenommen :D

Ummm, also Integralrechnung ist schon ein weites Feld. Wenn ihr das noch nicht hattet dann sollte ich dem Mathelehrer nicht vorgreifen. Aber die grundlegende Idee des Herrn Riemann kann ich trotzdem mal zu erklären versuchen.

Also stellen wir uns mal vor wir hätten eine Kurve - z.B. eine mathematische Funktion - gegeben. Diese können wir problemlos in einem Diagramm darstellen (die rote Linie). Was wir nun wissen möchten ist: Welchen Flächeninhalt hat die Fläche unter der Kurve (in blassrosa gezeichnet)?
riemann1fnddk.png

Anmerkung: Auch wenn es seltsam klingt, für diese Frage gibt es unzählige Anwendungsmöglichkeiten. Es kann durchaus unheimlich nützlich sein den Flächeninhalt berechnen zu können, und genau damit beschäftigt sich die Integralrechnung.

Der Herr Riemann hatte sich nun folgendes überlegt: "Die Fläche eines rechteckigen Klotzes kann ich leicht berechnen. Also male ich mal einige rechteckige Klötze unter die Kurve (die grünen Klötze im Diagramm). Wenn ich die Flächeninhalte der grünen Klötze aufaddiere, dann erhalte ich einen Wert, der zwar nicht ganz dem Inhalt der rosa Fläche entspricht, aber zumindest irgendwo in der Nähe liegt. Genauer gesagt: Ich weiss, das die rosa Fläche mindestens so groß ist wie die Summe der grünen Flächen."
riemann2mbcmm.png

Als nächstes hat Herr Riemann dann gelbe Klötze gezeichnet, die - im Gegensatz zu den grünen Klötzen - allesamt über der Kurve lagen. Und hier kam er zu der Erkenntnis, das die rosa Fläche höchstens so groß ist, wie die Summe der gelben Flächen. Die Summe der grünen Flächen nannte er übrigens Untersumme, die Summe der gelben Flächen Obersumme. Man kann das ganze also leicht mathematisch aufschreiben:

Untersumme (grün) ≤ Inhalt der rosa Fläche ≤ Obersumme (gelb)

Das ganze hilft uns bis jetzt nur mäßig viel. Wenn wir dadurch herausbekommen das der Flächeninhalt der rosa Fläche irgendwas zwischen 10 und 20 Quadratmeter* ist, dann ist das nicht besonders exakt. Also hat sich Herr Riemann überlegt wie man das ganze genauer machen kann. Seine Lösung: Wir nehmen mehr Klötze und machen diese schmaler! (sicher, das ist nichts besonders geistreiches. Da wäre vermutlich auch jeder andere drauf gekommen. Aber es funktioniert, und Herr Riemann hat's eben zuerst gesagt...).
riemann3jsuys.png

Wenn wir jetzt erneut die Untersumme und die Obersumme ausrechnen, dann bekommen wir heraus das der Inhalt der rosa Fläche irgendwo zwischen 16,30 und 17,45 Quadratmeter* liegt. Das ist schon sehr viel besser als unsere erste Schätzung mit den breiten Klötzen.

Und jetzt stellt sich natürlich die Frage: Wie schmal müssen unsere Klötze denn sein, damit wir ein ganz genaues Ergebnis erhalten? Im Prinzip müssten sie ja unendlich schmal sein, und dann bräuchten wir unendlich viele von ihnen nebeneinander um den Inhalt der rosa Fläche exakt berechnen zu können.
Hmm. Das klingt sinnvoll, aber implementierenn kann man das so nicht**. Herr Riemann war auch etwas gnädiger, er meinte: "die Klötze müssen nur so schmal sein, das die Untersumme gleich der Obersumme wird". Dann gilt natürlich:
Untersumme = rosa Fläche = Obersumme
Das ist schön. Hilft uns aber auch nicht viel weiter. Tatsächlich würde ich beim Implementieren einfach einen "kleinen" Wert für die Klötzchenbreite wählen. 0.001 oder so. Oder den Anwender fragen wie genau er es denn haben möchte. Damit dürfte man schon ziemlich gute Ergebnisse erhalten.


Das ganze ist aber, wie gesagt, nur eine Vermutung zu dem, was dein Lehrer dir vorgeschlagen hat. Vielleicht meinte er ja auch etwas ganz anderes...



* da ich zu faul zum Rechnen war habe ich mir diese Zahlen gerade ausgedacht. Sie stimmen also nicht mit den Diagrammen überein.

** die Mathematik kennt durchaus Mittel und Wege um eben dies zu vollbringen. Das lernt man dann bei der Integralrechnung. Aber zum implementieren wollen wir lieber auf unendlich lange Schleifen, die unendlich kleine Flächen addieren, verzichten.
 
Zuletzt bearbeitet von einem Moderator:

Cyz44

Aktives Mitglied
Oha Danke für die ausführliche Antwort. :)

Und meinst du die bloße Berechnung eines/mehrerer Integrale reicht aus, um es in Java als Jahresprojekt zu programmieren ??
Oder sollte ich das irgendwie noch mit etwas anderem kombinieren ?
 

paco89

Bekanntes Mitglied
hi,

vtl. kommt mein beitrag etwas zu spät, aber ich würde dir folgendes Buch empfehlen:

"Java als erste Programmiersprache - vom Einsteiger zum Profi " von Joachim Goll, Cornelia Weiß und Frank Müller.

ich habe das buch vor ein paar monaten gekauft und bin seither sehr beeindruckt von der Art und weise wie das buch aufgebaut etc. es wird auf alle themen super eingegangen und es gibt auch für die kleinsten beispiele codes, die man testen/kompilieren kann, um zu sehen, was überhaupt im text gemeint ist. die sprache ist auch sehr leicht verständlich geschrieben, sodass man (ich) an einem tag locker 2 bis 3 kapitel durchlesen und verstehen kann ohne dass man nach den ersten seiten aufhört.


ich habe das buch "Java ist auch eine Insel" ist zwar auch verdammt gut, ABER um das zu verstehen, muss man schon etwas draufhaben. wenn du wie ich ein anfänger bist, dann würde ich dir "Java ist auch eine Insel" nicht raten. als nachschlagewerk ist es jedoch super.


also....viel spaß bei deinem projekt.....
 
D

Dow Jones

Gast
Und meinst du die bloße Berechnung eines/mehrerer Integrale reicht aus, um es in Java als Jahresprojekt zu programmieren ??
Oder sollte ich das irgendwie noch mit etwas anderem kombinieren ?

Tjaa, das kann dir dein Lehrer wohl besser beantworten als ich. Auf der Seite Riemann-Summen findest du ein Java Applet zur numerischen Berechnung von Integralen (dort wird statt der Ober- und Untersummen zur Vereinfachung die "Mittelsumme" verwendet). Meinst du du bekommst soetwas hin? Die eigentliche Berechnung des Integrals ist ja nur ein Teil des Programms; dazu kommen noch die Benutzerinteraktion, die Datenhaltung und andere Dinge, die man sehr leicht unterschätzt. Bei einem Schulprojekt würde ich sagen: Mach besser keine zusammengehackte Killerapplikation, sondern ein simples - dafür aber sauber implementiertes - Programm.

Sauber implementiert kann z.B. bedeuten:
- ist das Programm leicht lesbar und verständlich, auch von jemand anderem als dir (z.B. deinem Lehrer)?
- kannst du das Programm später leicht abändern, so das es nicht das Integral sondern etwas anderes berechnet?
- kannst du die Benutzeroberfläche leicht von textbasiert auf grafisch umstellen? Oder können Ein- und Ausgaben nicht nur über die Tastatur erfolgen sondern auch über Datenbanken und Netzwerke?

Falls dir die Berechnung der Integrale zu einfach erscheint, dann schreib das Programm doch einfach mal. Und wenn es tatsächlich in drei Tagen fertig ist, dann überlegen wir uns etwas anderes. :)


Ein weiteres Projekt, das mir gerade einfällt, wäre Seam-Carving. Dahinter verbirgt sich eine Methode um bei Bildern das Seitenverhältnis zu verändern, ohne das die Bilder verzerrt aussehen. Die Grundidee dahinter ist folgende:
1) lade ein Bild
2) suche denjenigen Pfad von Pixeln, der von irgendeinem Pixel der obersten Zeile zu irgendeinem Pixel der untersten Zeile führt, und bei dem sich die Farbwerte der Pixel entlang des Pfades am wenigsten ändern
3) entferne die Pixel entlang dieses Pfades um das Bild schmaler zu machen, bzw. füge entlang dieses Pfades Pixel ein um das Bild zu verbreitern. Da wir ja den Pixelpfad gesucht haben, entlang dessen sich die Pixel ohnehin nur so wenig wie möglich verändern, fallen dem Betrachter Änderungen hier nicht großartig auf.

Auf der Webseite des Authors (Ariel Shamir's Homepage) findest du auch ein Video in dem das gezeigt wird. Eine einfache Implementation davon sollte die Anforderungen eines Projekts nach einem Jahr Programmierunterricht meiner Ansicht nach durchaus erfüllen.
 

timbeau

Gesperrter Benutzer
Was meinst du wie beeindruckt dein Lehrer ist, wenn es zur Webapplikation wird, verschiedene Aufgabenformate einlesen kann, Parsen etc pp.

Ob Jahresprojekt oder nicht, du wirst ordentlich tu tun haben und du willst ja auch nicht ab jetzt 24/7 Java programmieren.
 

Cyz44

Aktives Mitglied
@Paco89 sowas kann nie zu spät kommen ;)

habs mal gegoogelt und ich hab ausschließlich positive Kommentare gefunden. Danke auf jedenfall für den Vorschlag :)

@Dow Jones Okey habs mir mal das Applet angeschaut und sieht auf jedenfall machbar aus, auch wenn ich das mit den Integralen erst mal richtig lernen muss. Und das mit denm Bild, naja das ist nicht so mein Fall.
Ich rede aufjedenfall mal morgen nochmal mit dem Lehrer. Vielen Dank für die vielen Tipps :)
 

KSG9|sebastian

Top Contributor
Hi,

bei uns in der Schulzeit wurden noch Dinge wie ein kleiner Digitalsimulator programmiert, ebenfalls eine kleine Anwendung welche bis zu 10 Graphen darstellen konnte (dazu ein kleiner Parser gebaut) mit weiteren Spielereien wie Schnittpunkte, Tangenten, Flächen unter Kurven u.s.w.

Mein Favorit war aber der Digitalsimulator. Zum einen kannst du den, je nach Kenntnissen, beliebig erweitern und diverseste Bauteile (AND, OR, XOR, FLIPFLOP u.s.w.), zum anderen lässt sich so eine Anwendung relativ einfach gut aufbauen und planen.

Das ganze mittels Swing dargestellt, ein bisschen Drag 'n Drop eingebaut und schon hat man ne hübsche Anwendung
 

Cyz44

Aktives Mitglied
Gut der Lehrer hats (endlich) angenommen. Ich mach jetzt also eine Java-anwendung zur berechnung von funktionen mit graphischer darstellung.

Ich bedanke mich nochmal bei allen und hoffe, ihr werdet mir auch bei zukünftigen fragen ( die sicher bald auftauchen :D ) so gut helfen können ;)

lg
 

Ähnliche Java Themen

Neue Themen


Oben