Mastermind

Das Spiel

Vermutlich kennen Sie das Spiel, ein Spieler steckt sich 4 Farben in ein Kästchen ohne dass der Mitspieler es sieht. Dann muss dieser raten. Eine richtige Farbe am richtigen Platz ergibt ein schwarzer Stift, eine vorhandene Farbe am falschen Platz ergibt ein weisser Stift.

Zur Verdeutlichung des Thema Programmierlogik wollen wir hier den Logikteil des Spiel Mastermind nachprogrammieren. Dies ist eine herausfordernde Aufgabe für fortgeschrittenere Programmierer.

Das Ablaufdiagramm

Der Code (VisualBasic)

Sub AutoExec()
'
Sub MasterMind()
'Mastermin Logikteil in VisualBasic
'Erstellt von MW 5.8.98
Dim F(4) As Boolean
Dim E(4), Q(4) As String                'Die Farben
Dim i, x, y As Byte
p = 0
w = 0
Q(1) = "Violett"
Q(2) = "Blau"
Q(3) = "Türkis"
Q(4) = "Gelb"
For i = 1 To 4
    F(i) = True
Next
E(1) = "Rot"
E(2) = "Blau"
E(3) = "Gelb"
E(4) = "Schwarz"
x = 1
y = 1
Do While y <= 4                     'Solange es Farben zu prüfen gibt
    If F(x) = True Then             'Besser ist If F(x)
        If E(y) = Q(x) Then         'Ist eingabe und Quelle identisch
            F(x) = False
            If x = y Then           'Ist Position gleich?
                p = p + 1           '  Schwarz inkrementieren
            Else
                w = w + 1           '   Weiss inkrementieren
            End If
            y = y + 1
            x = 1
        Else
            If x = 4 Then           'Sind alle Farben durch?
                y = y + 1
                x = 1
            Else
                x = x + 1
            End If
        End If
    Else
        If x = 4 Then               'Sind alle Farben durch
            y = y + 1
            x = 1
        Else
            x = x + 1
        End If
    End If
Loop                                'Nächste Farbe prüfen
MsgBox "Sie haben " & p & " Treffer und " & w & " richtige Farben."

End Sub