Programmierprojekt in der Q11

Zum Ende der 11. Jahrgangsstufe müssen die Schüler im Informatik-Kurs an einem Projekt arbeiten. Dabei sollen die im Laufe des Jahres gelernten Datenstrukturen (Listen, Bäume) ebenso verwendet werden wie eine SQL-Datenbank, ansonsten ist man thematisch frei. Vorgeschlagen sind Sachen wie Reiseauskunft oder Kontoverwaltung, meine Schüler wollten etwas anderes machen.

Ich hatte zwei Gruppen. Die erste entwickelte ihr Kriegergame weiter, entstanden aus einer einfachen Übung zur Vererbung am Schuljahresanfang. Als Spiel simpel: zwei Rollenspielfiguren rüsten sich aus und hauen dann mit verschiedenen Methoden abwechseln aufeinander ein, bis einer verloren hat. Der Gewinner kriegt Geld und Erfahrungspunkte und kann sich mehr Ausrüstung kaufen; jeder Benutzer kann mehrere Spielfiguren haben, deren aktueller Zustand (Geld, Ausrüstung) in einer Datenbank gespeichert wird.

Kriegergame:
20 Klassen, davon 5 Interfaces
172 KB
~6190 Programmzeilen (2262 + GUI 3928), einschließlich javadoc und Leerzeilen

Programmiert wurde in Java in der Entwicklungsumgebung Eclipse; hier die grafische Darstellung der Klassen aus BlueJ:

Das Menü:

Der Kampf:

Der Shop:

Es gibt 5 verschiedene Charakterklassen (Hunter, Lich, Mage, Paladin, Tank), jeweils männlich oder weiblich; Ausrüstungsgegenstände; zum Teil animierte Angriffe, alles liebevoll grafisch aufbereitet. Überhaupt hat es Schülern die Grafik angetan, der größte Teil der Programmierarbeit entfiel auf die aufwendige Benutzeroberfläche. Mich selbst interessiert die am wenigsten, und fitzelig zu programmieren ist sie auch. Aber wenn’s Spaß macht.

Die andere Gruppe programmierte das Quiz “Wer wird Abiturient?”:

Quiz:
13 Klassen, davon 5 Interfaces
101 KB
~2863 Programmzeilen (1283 + GUI 1580), einschließlich javadoc und Leerzeilen

Auch hier wurde mit Eclipse gearbeitet; ein Überblick über die Klassen aus BlueJ:

Das Menü:

Eine erste Frage:

Nach den ersten sehr einfachen Fragen verlässt man die Grundschule und kann sich durch immer schwerere Fragen bis zum Abitur hocharbeiten. Die Fragen und Antworten und die Highscore-Liste sind jeweils in einer Datenbank gespeichert.

Bei beiden Projekten wurde mit den Entwurfsmustern Model-View-Controller und Beobachter gearbeitet. Insgesamt hatten die Schüler etwa neun Wochen Zeit, glaube ich.

Merken:

  • Je mehr Zeit man für das Projekt hat, desto besser. Wir hätten alle noch lange daran herumarbeiten können und wollen, ein paar erkannte Fehler sind noch drin und unerkannte sowieso. Eigentlich ist so etwas nichts für die letzten Wochen im Schuljahr, das müsste ein eigenes P‑Seminar sein.
  • Das Arbeiten mit Datenbanken ist lästig. Zuerst hatte ich eine Datenbank im Web (wenn schon, denn schon), so dass die Schüler auch zu Hause daran arbeiten konnten. Das wäre für die Spiele auch schön gewesen, da es dadurch eine zentrale Benutzerverwaltung und eine zentrale Highscore-Liste gegeben hätte. Aber wenn man das Programm weitergibt, sind ja im Java-Quellcode die SQL-Zugangsdaten enthalten, und die will man nun mal nicht öffentlich haben. (Aus dem Bytecode wieder lesbaren Quellcode zu generieren, ist wohl recht leicht, wenn man nicht zusätzliche Verschlüsselungsschritte unternimmt.)
    Also hätte ein Java-Client auf den Server gemusst, der die Zugangsdaten verwaltet, nur dass bei mir kein Java läuft. Also dann doch eine lokal gespeicherte Datenbank. Microsoft Access ging recht schnell auch wenn manche Java-Versionen den Treiber bereits mitbringen, andere nicht. Einen Treiber für Open Office Base zu finden, dauerte lange, gelang aber doch. Nur dass das Open-Office-Format ein Zip-Format ist, auf dem Java nicht unmittelbar arbeiten kann – also müsste die .odb-Datei erst entpackt, dann bearbeitet, dann wieder gepackt werden, weil man nur im gepackten Zustand dann wieder mit Open-Office-Base darauf zugreifen kann.
  • Ich muss mir noch viel öfter Entwürfe zeigen lassen. Inzwischen ist StarUML auf unseren Rechnern installiert, damit geht das besser. Gefahr und Versuchung sind groß, dann doch einfach mal drauflos zu programmieren. Also: mehr Lenkung vor den Programmierphasen. Aber diese Sammelstunden kosten wieder Zeit.
  • Spiele sind eine gute Idee. Da kommen grafische Fähigkeiten zum Einsatz, und wer nicht gerne programmiert, kann Quizfragen heraussuchen und in die SQL-Datei eintippen. Irgendwas ist für jeden dabei.
  • Es ist ein fruchtloses Unterfangen, Schüler dazu bringen zu wollen, sich weniger auf die grafische Benutzeroberfläche zu konzentrieren.
  • Wichtig für die Arbeitsteilung: die Aufgaben müssen irgendwo im Web liegen, und die Schüler müssen sie selbst verwalten. Projektplanungssoftware wäre schön, aber es geht auch mit einem gemeinsamen GoogleDocs-Dokument:

    Schön, beim Mitlesen zwischendrin so Mitteilungen zu finden wie:

    !!Wichtig: Die Itemnamen dürfen maximal
    so lang sein wie “Sichel des Unterweltherschers”!!

  • Noten: Noten gab es keine darauf. Ich kann bei zwei derartig umfangreichen Projekten als nicht wirklich eingebundener Lehrer nicht mehr sinnvoll benoten. Eine Gesamtnote wäre möglich, die sich die Schüler dann untereinander aufteilen. Aber bei abiturrelevanten Noten wäre ich da sehr vorsichtig, am Ende führt das noch zu Streit. Aber es geht ja auch wunderbar ohne Noten.

Nachtrag: Jetzt auch als Video.

Der Inhalt ist nicht verfügbar.
Bitte erlaube Cookies, indem du auf Übernehmen im Banner klickst.

Der Inhalt ist nicht verfügbar.
Bitte erlaube Cookies, indem du auf Übernehmen im Banner klickst.

(Fortsetzung bei Youtube.)

27 Antworten auf „Programmierprojekt in der Q11

  1. Hallo,

    gäbe es die Möglichkeit mal den Quelltext der Projekte zu bekommen? Ich würde zum Einen meinen Schülern einfach mal zeigen, was andere so hinbekommen haben. Und zum Anderen hat zum Beipsiel keiner die Anbindung an eine DB benutzt/hinbekommen. Hier könnten sie dann mal nachschauen.

    Oberfläche haben meine Schüler ürbigens nicht programmiert. Und das interessanteste war das Projekt “Uno”. Da wurde dann mit Stacks etc. gearbeitet. Man konnte beliebig viele Computer gegeneinander spielen lassen. Verschiedene Spielstratgien ausprobieren. Auch Menschen konnten natürlich mitspielen.

    Es wäre vielleicht mal eine Anregung, erfolgreiche Projekte und Projektideen in der 11. Klasse einfach mal zu sammeln. Könntest du das nicht hier in einem neuen Blogeintrag mal anzetteln?

    Mach weiter so!

    ingo

    PS: Woher nimmst du die Zeit, immer soviel zu schreiben?

  2. Wenn noch jemand ein Thema sucht, ich bräuchte noch ein Programm zur Durchführung und Auswertung der Bundesjugendspiele :-)

  3. @criz

    Das habe ich mal nur mit Datenbanken unter OpenOffice versucht. Hat aber leider nicht bis zum Schluss geklappt, da manche Abfragen einfach nicht so zu machen waren. Ich glaube das Herausfinden der Punktzahl bei bestimmten Zeiten/Weiten, die nur in Intervallen gegeben sind, hat nicht geklappt. Oder das Berechnen der Punkte aus den Formeln oder beides… Ich weiß nicht mehr.

    Aber mit JAVA etc. wäre das wirklich ganz gut, wenn gleich auch hier die DB fehlt. Denn die brauch man ja eigentlich nicht. Die Schüler können per Textfile eingelesen werden. Das wäre vor allem Oberflächenprogrammierung (leider)

    Ingo

  4. Es gibt auch online Mysql Datenbanken, die man sich kostenlos anlegen kann. Sicher nichts für echte Projekte, aber kostet ja nix.
    Das ganze klingt nach furchtbar viel Arbeit. 6000 LOC sind ne ganze Menge und da bleibt sicher nicht viel Zeit für wichtigere Aufgaben, die ein Schüler erledigen sollte. Ich kenne das aus eigener Erfahrung. Der Lerneffekt bei Projekten die Spass machen ist extrem hoch, aber leider auch sehr zeitraubend. Da sollte man unbedingt auch Zeitmanagement im Vorfeld machen.

  5. Meine “Idee” wäre ein PHP Programm in Verbindung mit MYSQL und Apache Webserver. Dann können die Daten von mehreren Personen gleichzeitig eingegeben werden. Einen ersten Ansatz gibt es hier als Download, leider fehlt mir die Zeit diese Projekt weiter zu entwickeln.

    http://sourceforge.net/projects/bjs2/

  6. @Ingo, den Quellcode schicke ich dir, heute noch oder wohl eher morgen. War ein langer Tag (schlechte Stunde, gute Stunde, Unterrichtsbesuch, Nachmittagsunterricht, Fortbildungsplanung). Die Erlaubnis der Schüler zum Verteilen habe ich jedenfalls.

    Das Uno-Projekt klingt schön… ein Spiel, und doch nicht so grafiklastig. Ich bin selber eher Kommandozeilentyp, oder halt ein paar Swing-Elemente, aber nicht mehr.

    Das Sammeln der Projekte wäre eine gute Idee. Ich bin aber nicht gut im Anzetteln, so viele Leute lesen hier ja auch nicht mit, denke ich. Wenn wir die Infrastruktur schon haben, wie wär’s mit einem regierungsbezirksübergreifenden Moodlekurs für Informatik-Projekte? Soweit ich weiß, gibt’s das schon für Obb.-Ost, Obb.-West, Schwaben und Oberfranken. Da könnte man sammeln.

    Woher ich die Zeit nehme, soviel zu schreiben: ich habe keine Kinder, sonst würde ich sicher viel Zeit mit denen verbringen. Ansonsten schreibe ich einfach gerne, viel, würde sonst platzen, und habe einen Stapel von vierzig angefangenen Blogeinträgen herumliegen, von denen gelegentlich der eine oder andere fertig wird. Längere Blogeinträge reifen im Kopf, bis das Schreiben dann schnell geht. Am letzten Wochenende drei ausführliche, dann wieder mal einige Zeit lang gar keine.

    @criz – Bundesjugendspiele: habe ich mir gemerkt. Aber dieses Jahr habe ich keine Q11, und in der Q12 gibt’s so ein Projekt nicht mehr.

    @Bernd – 6000 Zeilen Code sind verdammt viel Arbeit, die sich auch ungleich auf die Achtmann-Teams verteilt haben dürften. Ein Großteil fiel ja auf die Benutzeroberfläche, die den Schülern am Herz lag. Und einmal gab’s ja auch legalisiertes Späteraufstehen. Aber ja, ich möchte nicht, dass die Schüler deswegen nicht mehr zu ihren Hausaufgaben und vor allem Vorbereitung in den anderen Fächern kommen. Da habe ich tatsächlich nicht oft nachgefragt, habe gehofft, dass die Schüler das im Griff haben.

    @erpel: schau ich mir an.

  7. Ui, klingt toll! Können sie mir das auch schicken?

    Insgesammt sieht das ja nach nicht weniger als unser Krümel und Monster-Projekt aus, haben die das wirklich in ein paar wenigen Wochen geschafft? Respekt.

  8. Cool! Respekt für das GUI. Bei mir ist nach vielen Jahren Java-Erfahrung Swing immer noch geradezu ein Angstthema.

    Datenbank-Zugangsdaten gehören niemals in den Quellcode, sondern in Kommandozeilenargumente oder in Konfigurationsdateien. Die gibt man dann halt nicht mit weiter.

  9. @criz: PHP wäre da schon das Rechte. Das wird im Rahmen eines Q11-Kurses aber kaum entstehen, da müsste man ein P‑Seminar haben.

    @Theresa: Ist in der Post. Aber das Krümel-und-Monster-Spiel ist im Prinzip tatsächlich viel aufwendiger – nur dass es da ja diesen Backend-Import gab, der uns die schwierigsten Klassen bereits zur Verfügung stellte. Dann blieb uns tatsächlich nicht mehr so viel zu tun.

    @ke: Ja, ich kann auch nur ein bisschen Swing, dass ich mir mit einem GUI-Editor schön vorbereite und dann modifiziere. Wie die Schüler ihr GUI hingekriegt haben, weiß ich auch nicht. Ich könnte das erst mal sicher nicht so programmieren.

  10. Das Internet Programm nutze ich bereits, da funktioniert die Riegeneinteilung und die Auswertung aber noch nicht so gut. Eine Anfrage an die Programmierer ob ich die Daten auch wieder aus dem Programm exportieren kann wurde ganz klar mit Nein beantwortet.

    Das “bayrische” Programm kenne ich nicht, dürfte aber genau wie das bjsp Programm, welches ich auch getestet habe, keine Eingabe von mehreren Computern übers Netz erlauben und muss auf den jeweiligen Computern installiert sein. Also für mich unbrauchbar!

    Schade, das ich kein Student mehr bin, dann würde ich das PHP Programm fertig stellen. Natürlich als Open Source Software!

  11. Ich wäre auch an dem Quelltext stark interessiert. Für Schüler in der 11 in Hessen (an einem beruflichen Gymnasium) kommt auch das GUI nicht im Lehrplan vor, macht den Schülern aber am meisten Spaß.

    Da sind solche Spiele immer eine gute Hilfe um mehr Programmierpraxis zu bekommen.

  12. Schick ich los. Unübersichtlich und buggy ist der Code vermutlich. In den Weihnachtsferien möchte ich endlich zusammenschreiben, was ich gerade mit der 10. Klasse programmiert habe, auch ein schönes Projekt.

  13. Ich finde es sehr beeindruckend was ihre Q11 da auf die Beine gestellt hat.
    Mich würde ebenfalls der Quellcode des Kriegergame interessieren.
    Ich bin aber kein Lehrer, sondern jetzt selber Schüler einer Q11 in Bayern.

    Ich weiß, der Blog ist schon fünf Jahre her, aber ich würde mich trotzdem sehr freuen.
    Ich bin nähmlich ein begeisterter Programmieranfännger und würde gern einmal sehen wie man gewisse Techniken praktisch anwenden kann, und nicht nur die in den Büchern.

    Grüße Dechasa

  14. Melde mich morgen mit Details. Die Dateien kann ich schicken, aber heute würde ich auf einige Dinge anders achten – und auf Datenbanken verzichten, die waren damals Pflicht.
    Aus meiner letztjährigen Q11 habe ich wieder schöne Projekte (wenn auch nicht ganz so schöne wie oben) zum Vorzeigen, die muss ich aber noch vorbereiten für die Veröffentlichung.

  15. Sehr, sehr schön!! Gibt es mittlerweile eine strukturierte, passwortgesicherte Plattform zum Austausch solch großartiger Projekte?
    Ich würde das Projekt auch gerne meinen Schüler zeigen können. Wenn es Ihnen nichts ausmacht, hätte ich gerne den Quelltext.

    Mit freundlichen Grüßen,
    Chris

  16. Melde mich mit dem Quelltext, aber wohl erst morgen doer übermorgen. Austausch: In Bayern gibt es, zum späteren Austausch vorbereitet aber dafür noch nicht konfiguriert, eine zentrale Moodleinstallation für sämtliche staatliche Schulen. und Lehrer und Schüler dort (aber eben nur die). Neulich fiel dort auch das Wort “Versionskontrolle”, mal sehen, was die darunter verstehen.

  17. Mich würde der Quellcode dieser Q11 Projekte ebenfalls interessieren, da ich aktuell selbst Informatik auf Lehramt studiere und mich immer wieder frage, was man im Informatikunterricht an der Schule alles verwirklichen kann.

    Mit freundlichen Grüßen
    Sascha

  18. Hallo Herr Rau,
    Zunächst einmal wünsche ich Ihnen einen Frohes Neues Jahr 2016! Ich bin Lehrer mit den Fächern Elektrotechnik und Informationstechnik an einem Berufskolleg in NRW. Da ich noch neu an der Schule bin, soll ich unter anderem zusätzlichen Programmierunterricht bei den Informationstechnischen Assistenten geben. Dies möchte ich natürlich mit motivierenden Projekten vereinbaren.
    Da ich ein derartiges Projekt noch nicht durchgeführt habe, habe ich mich zunächst nach Anregungen umgesehen. Dabei bin ich auf Ihr Blog gestoßen.
    Das Kriegergame fand ich sehr interessant und ich möchte Sie gerne um den Quelltext bitten. Haben Sie auch weitere Anregungen für kleinere Projekte?

    Viele Grüße
    Stephan

  19. Hallo Stephan,
    auch ein frohes Neues. Den Quelletxt habe ich per Mail geschickt, ich muss ihn mal bei sourceforge einstellen, wenn ich Zeit habe. Die letzten zwei Tage war ich kaum zu Hause, deshalb erst jetzt.
    Weitere Projekte… da und dort im Blog verstreut. Ich sollte mal eine Liste anlegen mit Programmierideen, aber noch gibt es die nicht. Immerhin habe ich ein Schlagwort “Programmierprojekte” für das Blog eingerichtet und relevante Beiträge darunter gesammelt.
    Viele Grüße
    Thomas

  20. Hallo Herr Rau,
    ich würde mich auch sehr über den Quellcode freuen, dann können meine Schüler sehen was alles möglich ist.
    Die sind immer der Meinung dass Blue J völlig realitätsfern ist.
    Und dann könnte man in ner Doppelstunde als Arbeitsauftrag eventuell die Projekte nochmal unter die Lupe nehmen

    Viele Grüße
    Lino

  21. Hallo Herr Rau,
    ich würde ebenfalls gerne den Quellcode sehen, damit die Schüler mal sehen können, was alles möglich ist.

    Viele Grüße
    Markus

  22. Hallo Herr Rau,

    bin gerade als Ref (NRW) in der EF eingesetzt und habe nach mühvollen Wochen mit leichten Algorithmen und den Grundlagen zu OOM auch mit Spieleprojekten angefangen. Allerdings in einer wesentlich einfacheren Variante als das was Sie hier präsentieren. Dabei habe ich mich mit einigen Schülern auf den Boden gesetzt und Flaschendrehen um Spielchips gespielt. Dieses recht simple Spiel sollte als Anstoss für eigene Ideen dienen. Einzige Vorgabe war dass auch ein Zufallselement ‑ähnlich der Flasche- enthalten sein sollte.

    Grafisch soll das erst mal nicht werden, da in der EF das KnowHow und die Lust der meisten ziemlich weit unten anzusiedeln ist. Ihr Projekt klingt richtig klasse und ich wäre definitv am Code interessiert.

    Ich kann Sie ebenfalls auf dem laufenden halten was meine Schüler so treiben bzw. Endprodukte schicken. Momentan stecken die aber noch in der Modellierung. Quasi als Festigung des altes Stoffes mit neuem, hoffentlich “praxisorientierterem” Hintergrund.

    Beste Grüße
    Frank

  23. Code schicke ich per Post. (Ob da noch alles funktioniert, ist aber fraglich.) Das war ein Fortgeschrittenenkurs damals, am Ende des zweiten Jahres Java, und die Nachfolger waren dann alle schwächer.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.