Spezifikation für Mastermind Lehrstuhl für Softwaretechnik und Programmiersprachen WS 2005 1 Beschreibung 1.1 Generelles Mastermind Name des Applets: Applet AID Package AID 1.2 73 77 74 00 A1 00 73 77 74 00 A1 01 Funktionalität Das Applet implementiert das Spiel Mastermind. Die Regeln von Mastermind sind: Der Spielpartner (die Chipkarte) denkt sich eine beliebige Kombination aus vier farbigen Steinen aus. Für jeden Stein stehen sechs verschiedenen Farben zur Verfügung (r=rot, g=grün, y=gelb, b=blau, o=orange, v=violett). In der Kombination dürfen Farben doppelt vorkommen. Eine mögliche Kombination ist zum Beispiel • Stein 1: rot • Stein 2: grün • Stein 3: rot • Stein 4: orange Der Spieler versucht nun, die Kombination zu knacken. Dazu versucht er Kombinationen, die vom Spielpartner mit schwarzen und weißen Markern bewertet werden. Ein schwarzer Marker besagt, dass man einen korrekt gefärbten Stein an der richtigen Stelle hat – man weiß jedoch nicht, um welchen Stein es sich handelt. Ein weißer Marker besagt, dass einer der Steine eine Farbe hat, die in der Lösung vorkommt, der Stein sich jedoch an einer falschen Stelle befindet. Ein Beispiel: Der Spieler versucht die Kombination • Stein 1: grün • Stein 2: rot • Stein 3: rot • Stein 4: rot 1 Der Spielpartner bewertet den Versuch mit einem schwarzen Marker – Stein 3 ist rot – und zwei weißen Markern – ein grüner und ein weiterer roter Stein kommen in der Lösung vor, jedoch nicht an erster und vierter Stelle. Der dritte rote Stein erhält keinen Marker, da in der Lösung insgesamt nur zwei rote Steine vorkommen. (Bemerkung: Im Originalspiel hat der Spieler insgesamt 10 oder auch nur 8 Versuche, die Kombination zu knacken. Das Applet soll beliebig lange Spiele unterstützen und nur bei erfolgreichem Lösen ein neues Spiel starten.) 1.3 Verwendete technische Verfahren • Chipkarte: Gemplus GXPROR3 1.4 Getroffene Annahmen • Der Benutzer ist mit den Regeln des Spiels vertraut. 2 2.1 Kommunikationsprotokoll Protokollablauf 1 Name: Rateversuch Schritt 1. 2. 3 3.1 Terminal Nachricht −→ GUESS + MARKERS Karte bewerte GUESS berechne ANSWER ←− ANSWER Instructions und Datentypen Konstanten Name GUESS RED GREEN YELLOW BLUE ORANGE VIOLET Bytewert 0x10 0x00 0x01 0x02 0x03 0x04 0x05 intuitive Semantik Kommando für einen Rateversuch Farbe eines Spielsteins Farbe eines Spielsteins Farbe eines Spielsteins Farbe eines Spielsteins Farbe eines Spielsteins Farbe eines Spielsteins 2 3.2 Abkürzungen für komplexe Datentypen Datentyp MARKERS Repräsentation Byte 0 · · · Byte 3 b0 ··· b3 Semantik: MARKERS repräsentiert einen Rateversuch für das Spiel. Die Bytes b0 bis b3 müssen jeweils einen der folgenden Werte haben: RED, GREEN, YELLOW, BLUE, ORANGE, VIOLET ANSWER Bewertung eines Rateversuchs Byte 0 · · · Byte 4 b0 ··· b3 Semantik: ANSWER ist die Antwort auf einen Rateversuch. b0 gibt die Anzahl der schwarzen Marker an, b1 die Anzahl der weißen Marker. In b2 und b3 wird die Anzahl der bisherigen Rateversuche im aktuellen Spiel angegeben (short-Feld count des Applets als zwei byte). 4 Beschreibung Rateversuch APDU-Beschreibungen und Kartenimplementierung 4.1 Wichtige Felder des Applets • byte[] board : aktuelle Kombination • short count : Anzahl bisheriger Rateversuche 4.2 INSTALL und SELECT INSTALL • Art und Struktur der Parameter keine • resultierender Kartenzustand: – count = 0 – board neu initialisieren • Fehlerfälle: keine SELECT resultierender Kartenzustand: unverändert 4.3 Applikationsprotokoll Protokollschritt GUESS (verwendet im Protokollablauf “Rateversuch” in Schritt 1) 3 APDU: CMD 0x90 INS GUESS P1 0x00 P2 0x00 LC 0x04 DATA MARKERS LE 0x03 1. Überprüfungen und Berechnungen: (a) prüfe, ob # MARKERS == 4 (b) prüfe, ob jedes byte aus GUESS im Bereich 0x00 - 0x05 liegt (c) berechne schwarze und weiße Marker (erste zwei byte von ANSWER) 2. Normalfall: (a) Response-APDU: ANSWER 0x90 0x00 (b) resultierender Kartenzustand: • count = count + 1 vor Senden der Antwort 3. Fehlerfälle und Ausnahmen: (a) falls ein byte aus MARKERS nicht im richtigen Bereich oder Länge falsch : i. Response-APDU: SW DATA INVALID ii. resultierender Kartenzustand: unverändert (b) falls Rateversuch richtig : i. Response-APDU: ANSWER 0x90 0x00 ii. resultierender Kartenzustand: • count = 0 • board neu initialisieren 4
© Copyright 2024 ExpyDoc