Ist Schach als Thema für eine Facharbeit im Fach Informatik geeignet?
Hallo zusammen,
ich bin Schüler und stehe vor der Entscheidung, welches Thema ich für meine Facharbeit im Fach Informatik wählen soll. Ich interessiere mich sehr für die Entwicklung von Spielen und denke darüber nach, Schach als Thema für meine Facharbeit zu wählen.
Meine Frage an euch ist: Ist Schach eine geeignete Wahl für eine Facharbeit? Ich möchte sicherstellen, dass das Thema genügend Zeit zum Programmieren benötigt, nicht zu schwer für mein derzeitiges Level ist (Q1 auf einem Gymnasium), generische Datentypen verwendet und auf BlueJ umsetzbar ist.
Ich habe bereits einige Überlegungen angestellt, aber ich würde gerne eure Meinungen und Erfahrungen dazu hören. Glaubt ihr, dass Schach eine angemessene Herausforderung für eine Facharbeit im Fach Informatik darstellt? Habt ihr vielleicht andere Vorschläge für interessante Themen?
Ich freue mich über eure Antworten und danke euch im Voraus für eure Hilfe!
6 Antworten
Schach würde ich dir nicht empfehlen. Meine Vorschläge wären auch 4 gewinnt oder Mühle.
Ansonsten vielleicht noch tic tac to oder eine Ampelschaltung-Simulation an einer Kreuzung.
Ich kann mich da nur anschließen - versuch etwas Einfacheres wie 4 Gewinnt
GG
Du solltest dir zuerst Gedanken darüber machen, welchen genauen Schwerpunkt du in diesem Projekt setzen möchtest bzw. worin die konkrete Herausforderung bestehen soll. Dabei kannst du dich auch noch einmal mit deinem Lehrer beraten.
Bei der Entwicklung eines Schachspiels kann man sich so einige Hürden bauen, aber es ist für dich vermutlich nicht ratsam, sie alle nehmen zu wollen, zumal du doch nur eine begrenzte Zeit dafür hast. Ein paar Vorschläge liste ich folgend auf. Fokussiere dich am besten erst einmal nur auf maximal zwei.
1) Die erste Hürde für Q1-Schüler wäre vermutlich eine objektorientierte Implementation der Basisfunktionalitäten (Figuren bewegen, Feldstatus prüfen, rundenbasierte Spiellogik, etc.), die dann auch Grundlage für die weiteren Vorschläge ist. Zusätzliche Funktionen wie Undo/Redo oder die Anzeige möglicher Züge würde ich vorerst außen vor lassen und als einzigen Modus sollte es nur PvP geben.
Bei der Umsetzung kannst du sicherlich generische Typen (wie eine generische Liste für Spielfiguren) einbringen, aber als wichtiges Kernstück sehe ich sie nun nicht.
2) Eine zweite Hürde wäre die Implementation einer visuellen Darstellung. Dafür würde ich Swing, JavaFX oder FXGL benutzen, nicht irgendwelche Lehrerprojekte wie SAS.
3) Für einen PvP-Modus könnte man eine Server-Client-Verbindung in den Vordergrund stellen (via Sockets oder RMI).
4) Eine vierte interessante Herausforderung würde ich in der Implementation eines PvE-Modus sehen, bei dem der Minimax-Algorithmus oder ein Alpha-Beta Pruning eingesetzt wird. Das ist allerdings kein einfaches Thema. In anderen Spielen (wie Tic-Tac-Toe, Vier gewinnt oder Mühle) findet man meiner Meinung einen einfacheren Einstieg. Lies dich am besten kurz dazu ein (z.B. via Wikipedia) und bewerte dann, ob du es als annehmbar empfindest oder nicht. Andernfalls solltest du nur einen PvP-Modus unterstützen.
All diese Ideen kannst du ebenso auf einfachere Spiele (Mühle, Othello, Vier gewinnt) übertragen. Für deine Facharbeit wäre das auch die sichere Wahl, denn bereits der Aufwand für Punkt 1 ist nicht gering. Im schriftlichen Teil würde ich erwarten, dass die Konzeptions-/Planungsphase beschrieben wird und evt. Besonderheiten in der Implementation.
Andere womöglich interessante Spielideen wären Peg Solitaire, ein typisches Arcade wie Pac-Man oder ein Jump `n` Run.
Ich würde eher auf sowas wie 4 gewinnt setzen, denn Schach wird nicht vorrangig durch "brute force" analysiert.
Hierbei spielen zu viele andere wichtige Faktoren eine Rolle.
Für eine Schülerarbeit ist das meiner Meinung nach eine Nummer zu groß. Durch die zahlreichen Möglichkeiten für den jeweils nächsten Zug kommst du ganz schnell in Größenordnungen, die du mit einem PC nicht mehr bewältigen kannst.
Wenn es ein Spiel sein soll, würde ich etwas einfacheres nehmen, wie Mühle oder 4 gewinnt. Das ist schon schwierig genug. Du willst ja nicht nur programmieren, sondern auch deine Vorgehensweise beschreiben.