VHS Java Workshop Aufgabe / Szenario: 0 Ein Kunde plant ein Gewinnspiel in seinem Ladengeschäft durchzuführen. Dazu soll ein PC als "Kiosk-Anwendung", d.h. ohne Tastatur, nur mit Maus (bzw Touchscreen) aufgestellt werden. Auf dem Bildschirm wird nach Art der Spiele "Hangman" und "Glücksrad" ein zufälliger Werbeslogan des Kunden ausgewählt und muss erraten werden. 1 Für jeden Buchstaben des Slogans wird das Zeichen "_" angezeigt; Satz- und Leerzeichen werden immer direkt dargestellt. Aus dem Slogan "Geiz ist Geil!" wird also "____ ___ ____!" 2 Der Teilnehmer wählt einen Buchstaben des Alphabets per Mausklick aus. Kommt der Buchstabe im Slogan vor, so wird dieser von nun an immer angezeigt, also z.B. nach Wahl von "e" dann "_e__ ___ _e__!". 3 Wird ein Buchstabe gewählt der nicht vorkommt, so wird ein Teil eines Galgens gemalt. Der Galgen besteht aus 6 Teilen: Boden (Hügel), Stange, Balken, Querstange (Stütze), Seil, Strichmännchen. 4 Mit dem Zeichnen des letzten Teils ist das Spiel verloren. Es wird ein neuer Slogan gewählt, und das Spiel beginnt von vorne. 5 Werden alle enthaltenen Buchstaben entdeckt (es sind also keine "_" mehr im Slogan) bevor der letzte Teil gezeichnet wird, so ist das Spiel gewonnen. Der Benutzer gibt daraufhin seinen Namen und seine Tel-Nr ein. Diese werden an eine Textdatei angehängt und nehmen später an einer Verlosung teil. Es wird ein neuer Slogan ausgewählt und das Spiel beginnt von vorne. Grobes Design: class Game extends JFrame [Hauptprogramm] +main(sloganfile: String[]) ButtonListener implements ActionListener [inner class für Button-Aktionen] class SloganList [liest beim Instantiieren alle Slogans aus Datei (Dateizugriff)] +SloganList(sloganfile: String) +randomSlogan(): String [wählt zufälligen Slogan] class Slogan [repräsentiert den (bereits) geratenen Zustand des Slogans] +Slogan(text: String) [neuer Start des Spiels mit neuem Slogan] +getSlogan(): String [liefert Slogan, mit unbekannten Buchstaben als "_"] +addLetter(letter: char): boolean [deckt Buchstaben auf. Liefert true wenn Erfolg, false wenn falsch geraten] +isSolved(): boolean [true, wenn Slogan komplett erraten] -letters: boolean[30] [true für bereits aufgedeckte Buchstaben. 0=a, 25=z, 26=ä, 27=ö, 28=ü, 29=ß] class Gallows extends JComponent [repräsentiert und zeichnet den Galgen] +Gallows() [setzt Grösse durch super-Methoden] +setErrors(errors: short): void [setze Anzahle Fehlversuche] #paintComponent(g: Graphics): void [tatsächliches malen] class Winner +writeWinner(name: String, phone: String):void /static [fügt den Gewinner ("Gewinn der Teilnahme am Gewinnspiel" ;-) an die Datei "winners.txt" an] Agenda: 1 Vorstellung Aufgabe 2 Besprechung Grobes Design (gemeinsam) 3 Auswahl einer Aufgabe oder Teilaufgabe (jeder) 4 Implementierung der leeren Klassen (alle Methoden {} ) (jeder) 5 Besprechung der leeren Klassen (gemeinsam) und Zusammenführen aller Klassen in einem Verzeichnis (Tom) 6 Überlegen und Aufmalen der Logik für die Methoden (jeder) 7 Implementierung der Methoden der Klassen (jeder) 8 Ausprobieren und Reparieren (gemeinsam) 9 Dokumentieren so dass jeder den Code des Anderen versteht (jeder) - Erweiterungen und Verbesserungen, sofern Zeit (Tom, gemeinsam, jeder) Mögliche Team-Aufteilung: 2 Personen Slogan: Angels & Wolfram 1 Person SloganList und Winner: HaJo 1 Person Gallows: Alexander 1 Person Game: Konstantin Wünsche viel Erfolg. -Tom.Eicher@bigfoot.com