280 likes | 349 Views
SS03 / C. Kreienbrinck. 18 & 3. Inhalt. 1 Einleitung. 1.1 Warum 18 und 3 ?. 1.2 Aufgabenverteilung. 2 Layout, Bedienelemente. 2.1 Applet. 2.2 Frame. 5 Funktionen der Klassen / UML. 5.1 Achzehnunddrei. 5.2 Auswert. 5.3 Zufall. 5.4 Game18u3M / Game18u3S. 3 Regeln.
E N D
SS03 / C. Kreienbrinck 18 & 3
Inhalt 1 Einleitung 1.1 Warum 18 und 3 ? 1.2 Aufgabenverteilung 2 Layout, Bedienelemente 2.1 Applet 2.2 Frame 5 Funktionen der Klassen / UML 5.1 Achzehnunddrei 5.2 Auswert 5.3 Zufall 5.4 Game18u3M / Game18u3S 3 Regeln 4 Spielablauf
Inhalt 6 Programmcode 5.1 Achzehnunddrei 5.2 Auswert 5.3 Zufall 5.4 Game18u3M / Game18u3S 7 Probleme
1 Einleitung 1.1 Warum 18 & 3 ? - Entwicklung eines Spiels mit einer Online-Komponente - zwei Spieler - möglichst einfacher Regelsatz - ursprünglich 17 und 4 > Falsche Regeln angewendet
1 Einleitung K. Riechmann: • Spieleserver, Netzwerkkomponenten für • Applet und Frame C. Kreienbrinck: • Applet, Spieleframe und Einbindung der • Netzwerkkomponenten 1.2 Aufgabenverteilung
2 Layout, Bedienelemente 2.1 Das Applet: • besteht aus einer sensitiven • Fläche für den Spielstart und einer Statuszeile
2 Layout, Bedienelemente 2.2 Der Spiele-Frame: Summe der Kartenwertigkeit Gegnerkarten Spielername Spielstand Spielerkarten Start- und Zugendebutton (Startbutton nur Spielleiter) „Karte ziehen“-Button Wer ist dran ?
3 Regeln • jeder Spieler zieht abwechselnd solange eine Kare, bis • er hinsichtlich der Kartenwertigkeit nahe der 21 ist • ist die 21 überschritten verliert der Spieler • die Karten des Gegners sind einsehbar • Gewinner ist der Spieler mit der größten Kartenwertigkeit
- Spieler „Mütze“ (Master) drückt den Spielstart-Button - „Mütze“ zieht über den Button eine neue Karte - der grüne Rahmen zeigt an, wer am Zug ist - der Ausgang des Spiels wird festgehalten 4 Spielablauf • „Kröte“ drückt denn „Ende des Ziehens“-Button • und beendet damit alle seine Züge - es werden jeweils die ersten Karten aufgedeckt - Spieler „Kröte“ (Slave) zieht eine Karte - „Mütze“ zieht erneut eine Karte und ... ... verliert, weil er die 21 überschreitet - „Mütze“ zieht wieder eine Karte
5 Funktionen der Klassen/UML Verbindungsaufbau Verbindungsaufbau „Master“ „Slave“ Zufallszahlen Start / Zufallsz. Start / Zufallsz. Spielername Spielername Start Server Zufall Auswert Applet Frame Frame Applet MASTER SLAVE
5 Funktionen der Klassen/UML 5.1 Achtzehnunddrei - stellt Verbindung zum Server her - wählt den passenden Frame - Vorladen der Bilder
5 Funktionen der Klassen/UML 5.2 Auswert • wandelt eine Zahl zw. 1 – 32 in • eine Wertigkeit um Bsp.: Zufallszahl 1 2 3 4 5 6 7 8 Karte (Karo) 7 8 9 10 B D K A Wertigkeit 7 8 9 10 2 3 4 11
5 Funktionen der Klassen/UML 5.3 Zufall - erzeugt eine Kette aus 16 Zufallszahlen Bsp.: 27 18 3 31 21 32 1 7 29 24 14 9 26 20 22 2 Master Slave Warum 16 Zahlen ? B B B B D D D D = 20
5 Funktionen der Klassen/UML Master Slave 5.4 Game18u3M / Game18u3S - erstellt die eigentliche Spielfläche • Game18u3M = Master (Spielleiter) • Game18u3S = Slave - Master gibt Zufallszahlen an Slave - Master besitzt Spielstart-Button
6 Programmcode 6.1 Achtzehnunddrei • Verbindung mit dem Spieleserver
6 Programmcode 6.1 Achtzehnunddrei • Server entscheidet welcher Frame gestartet wird
6 Programmcode 6.2 Auswert • Umwandlung einer Zufallszahl in eine Wertigkeit
6 Programmcode 6.3 Zufall • Generieren einer Zufallszahlenkette
6 Programmcode 6.4 Game18u3M / Game18u3S • Extrahieren der Spielernamen [ :Mastername:Slavename:]
6 Programmcode 6.4 Game18u3M / Game18u3S -der Integer „count“: regelt wer am Zug ist wählt die passende Zufallszahl Anzeige der Karten count . . .2 3 4 5 6 . . . Spieler . . . M S M S M . . . Zufallszahl . . . 3. 4. 5. 6. 7. . . . Karte . . . 2 3 4 5 6 . . .
6 Programmcode 6.4 Game18u3M / Game18u3S - SPIELSTART: · Erzeugen und Senden der Zufallszahlen - Master · Empfang der Zahlen - Slave
6 Programmcode 6.4 Game18u3M / Game18u3S - SPIELSTART: · Integer „count“ auf 2 gesetzt nur der Master kann anfangen die ersten 2 Zufallszahlen werden verwendet Anzeige der ersten 2 Karten
6 Programmcode 6.4 Game18u3M / Game18u3S - KARTE ZIEHEN: · „Karte-Ziehen“-Methode des Gegners aufrufen · nächste Zufallszahl · Umwandlung in Wertigkeit · zur bestehenden Wertigkeit dazuaddieren · „count“ erhöhen · repaint aktualisiert die Karten
6 Programmcode 6.4 Game18u3M / Game18u3S - ENDE DES ZIEHENS: · setzt „r“ oder „s“ · „Ende des Ziehens“-Methode des Gegners aufrufen · erhöht „count“ · „Karte ziehen“ > „count“ um zwei erhöhen nur noch ein Spieler kann weitere Karten ziehen
6 Programmcode 6.4 Game18u3M / Game18u3S • Auswerten der Wertigkeiten und Überschreiten der 21
7 Probleme • Exceptions: · inform.charAt(3),inform.length() NullPointerException • Mehrdeutigkeit von gesendeten Stringketten: • Sperren: · mehrmaliges Drücken von Buttons, Anzeige von Karten • Threads: · unsynchronisierte Threads blockieren sich halt
SS03 18 & 3 C. Kreienbrinck, K. Riechmann