Spezifikation für Mastermind

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